TF-1018 Add abstract Config loader and parser

This commit is contained in:
Dat PHAM HOANG
2022-10-15 00:09:33 +07:00
committed by Dat H. Pham
parent 8349e874a9
commit a443eccd6c
4 changed files with 52 additions and 0 deletions
+3
View File
@@ -36,6 +36,9 @@ export 'utils/benchmark.dart';
export 'utils/fps_manager.dart';
export 'utils/build_utils.dart';
export 'utils/string_convert.dart';
export 'utils/config/app_config_loader.dart';
export 'utils/config/app_config_parser.dart';
export 'utils/config/errors.dart';
export 'data/utils/compress_file_utils.dart';
// Views
@@ -0,0 +1,34 @@
import 'package:core/utils/config/app_config_parser.dart';
import 'package:core/utils/config/errors.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter/services.dart' show rootBundle;
class AppConfigLoader {
Future<T> load<T>(String fileName, AppConfigParser parser) async {
try {
WidgetsFlutterBinding.ensureInitialized();
var envString = await rootBundle.loadString(fileName);
if (envString.isEmpty) {
throw EmptyConfiguration();
}
return await parser.parse(envString);
} on FlutterError {
throw ConfigurationNotFoundError();
}
}
Future<T> loadData<T>(String fileName, AppConfigParser parser) async {
try {
WidgetsFlutterBinding.ensureInitialized();
var envData = await rootBundle.load(fileName);
if (envData.lengthInBytes == 0) {
throw EmptyConfiguration();
}
return await parser.parseData(envData);
} on FlutterError {
throw ConfigurationNotFoundError();
}
}
}
@@ -0,0 +1,8 @@
import 'dart:async';
import 'package:flutter/services.dart';
abstract class AppConfigParser<T> {
Future<T> parse(String value);
Future<T> parseData(ByteData data);
}
+7
View File
@@ -0,0 +1,7 @@
class NotInitializedError implements Exception {}
class ConfigurationNotFoundError implements Exception {}
class EmptyConfiguration implements Exception {}
class InvalidConfigurationParser implements Exception {}