flutter_flavor_overrides 1.0.0
flutter_flavor_overrides: ^1.0.0 copied to clipboard
CLI that swaps dependencies per Flutter flavor by generating pubspec_overrides.yaml, so a plugin's native code stays out of flavors that don't need it.
Example #
An app depends on a plugin that prod builds must not contain. A no-op stub with the same
package name lives next to the app:
my_app/
pubspec.yaml
flavor_overrides.yaml
stubs/
some_plugin/ # name: some_plugin, same Dart API, no `flutter: plugin:` section
pubspec.yaml
lib/some_plugin.dart
my_app/pubspec.yaml:
name: my_app
environment:
sdk: ^3.4.0
dependencies:
flutter:
sdk: flutter
some_plugin: 1.2.0
my_app/flavor_overrides.yaml, next to the app's pubspec (package, then flavor, then any
dependency spec; paths relative to this file):
some_plugin:
prod:
path: ../stubs/some_plugin
stubs/some_plugin/pubspec.yaml:
name: some_plugin
environment:
sdk: ^3.4.0
dependencies:
flutter:
sdk: flutter
# No `flutter: plugin:` section: nothing native gets registered or built.
Build prod without the plugin's native code, then go back to the real plugin:
$ dart pub global activate flutter_flavor_overrides
$ cd my_app
$ flutter_flavor_overrides --flavor prod
wrote pubspec_overrides.yaml (some_plugin)
$ flutter pub get
$ flutter build apk --release --flavor prod
$ flutter_flavor_overrides --flavor dev
removed pubspec_overrides.yaml
$ flutter pub get
The generated pubspec_overrides.yaml (add it to .gitignore):
# flutter_flavor_overrides: some_plugin
dependency_overrides:
some_plugin:
path: ../stubs/some_plugin