From 567360a03c711e2d0182d409d7e91a72b779099a Mon Sep 17 00:00:00 2001 From: Felix Nguyen Date: Sun, 23 Jun 2024 01:15:42 +0700 Subject: [PATCH 1/2] feat: create combination_loader --- lib/easy_localization_loader.dart | 1 + lib/src/combination_loader.dart | 32 +++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 lib/src/combination_loader.dart diff --git a/lib/easy_localization_loader.dart b/lib/easy_localization_loader.dart index 683b29e..0c04919 100644 --- a/lib/easy_localization_loader.dart +++ b/lib/easy_localization_loader.dart @@ -6,3 +6,4 @@ export 'package:easy_localization_loader/src/smart_network_asset_loader.dart'; export 'package:easy_localization_loader/src/tests_asset_loader.dart'; export 'package:easy_localization_loader/src/xml_asset_loader.dart'; export 'package:easy_localization_loader/src/yaml_asset_loader.dart'; +export 'package:easy_localization_loader/src/combination_loader.dart'; diff --git a/lib/src/combination_loader.dart b/lib/src/combination_loader.dart new file mode 100644 index 0000000..4fbc0f3 --- /dev/null +++ b/lib/src/combination_loader.dart @@ -0,0 +1,32 @@ +import 'package:flutter/material.dart'; + +import 'package:easy_localization/easy_localization.dart'; + +class CombinationLoader extends AssetLoader { + const CombinationLoader({required this.loaders}); + + final List loaders; + + @override + Future> load(String path, Locale locale) async { + final resultFutures = loaders.map((loader) async { + try { + return loader.load(path, locale); + } catch (error) { + debugPrint(error.toString()); + return {}; + } + }); + + try { + final results = await Future.wait(resultFutures); + return results.fold>( + {}, + (prev, e) => {...prev, ...(e ?? {})}, + ); + } catch (error) { + debugPrint(error.toString()); + return {}; + } + } +} From 786f78b9502ffed719fcc057d6d3f227452d17f3 Mon Sep 17 00:00:00 2001 From: Felix Nguyen Date: Sun, 23 Jun 2024 01:30:22 +0700 Subject: [PATCH 2/2] docs(README): add new supported format --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 6d70ba6..56dcea9 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ - [x] XML (XmlAssetLoader, XmlSingleAssetLoader) - [x] Yaml (YamlAssetLoader, YamlSingleAssetLoader) - [x] FILE (FileAssetLoader) +- [x] Combination (CombinationLoader) ### Configuration