flutter_app_environment 1.0.2 flutter_app_environment: ^1.0.2 copied to clipboard
Simple solution to handle environment variables using `.json` or config in entrypoint file.
Flutter App Environment #
Simple solution to handle environment variables using .json
or config in entrypoint file.
Links #
- See CHANGELOG.md for major/breaking updates
- Example with explain all features
Installation #
$ flutter pub add --dev flutter_app_environment
Requirements for handle environment variables from .json config #
-
Call before initialize the environment
WidgetsFlutterBinding.ensureInitialized();
-
Add
res/config/
to pubspec.yaml assets. This folder contains json files with environment variablesflutter: assets: - res/config/
-
For EnvironmentType.development use name development.json for configuration file
-
For EnvironmentType.test use name test.json for configuration file
-
For EnvironmentType.production use name production.json for configuration file
Usage for handle environment variables from .json config #
Easy three steps #
-
Create config
@JsonSerializable(createToJson: false) class EnvironmentConfig { const EnvironmentConfig({ required this.title, required this.initialCounter, }); factory EnvironmentConfig.fromJson(Map<String, dynamic> json) => _$EnvironmentConfigFromJson(json); final String title; final int initialCounter; }
-
Initialize
WidgetsFlutterBinding.ensureInitialized(); await Environment.initFromJson<EnvironmentConfig>( environmentType: EnvironmentType.development, fromJson: EnvironmentConfig.fromJson, );
-
Use it
home: HomePage( title: Environment<EnvironmentConfig>.instance().config.title, ),
Usage for handle environment variables from entrypoint file #
Easy three steps #
-
Create config
@JsonSerializable(createToJson: false) class EnvironmentConfig { const EnvironmentConfig({ required this.title, required this.initialCounter, }); factory EnvironmentConfig.fromJson(Map<String, dynamic> json) => _$EnvironmentConfigFromJson(json); final String title; final int initialCounter; }
-
Initialize
WidgetsFlutterBinding.ensureInitialized(); Environment.init<EnvironmentConfig>( environmentType: EnvironmentType.test, config: const EnvironmentConfig( title: 'Test evironment title', initialCounter: 0, ), );
-
Use it
home: HomePage( title: Environment<EnvironmentConfig>.instance().config.title, ),
Usage for handle environment with custom environment type #
-
Create environment type
enum CustomEnvironmentType { dev, stage, prod }
-
Use method initFromJsonWithCustomType for json config
await Environment.initFromJsonWithCustomType<EnvironmentConfig, CustomEnvironmentType>( environmentType: CustomEnvironmentType.stage, fromJson: EnvironmentConfig.fromJson, );
-
Or use method initWithCustomType for entrypoint config
Environment.initWithCustomType<EnvironmentConfig, CustomEnvironmentType>( environmentType: CustomEnvironmentType.dev, config: const EnvironmentConfig( title: 'Test evironment title', initialCounter: 0, ), );
Contribute #
Please feel free to fork, improve, make pull requests or fill issues. I'll be glad to fix bugs you encountered or improve the extension.