- remove link without use (PowerShell version minimum not reached, this is not mentionned anywhere in Windows installation / troubleshooting documentation) - clean up API docs root - clean up app template links, add `Learn Flutter` link - update get started links - replace `flutter.dev/docs` with `docs.flutter.dev` - fix embedder descriptions - fix broken API `docs.flutter.io` links - http → https - remove `/install` from `/get-started` links - fix Android Studio link ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [x] I signed the [CLA]. - [ ] I listed at least one issue that this PR fixes in the description above. - [x] I updated/added relevant documentation (doc comments with `///`). - [x] I added new tests to check the change I am making, or this PR is [test-exempt]. - [x] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [x] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. **Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md [test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md [Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md --------- Co-authored-by: Parker Lougheed <parlough@gmail.com>
3.1 KiB
Flutter's v2 Android embedding includes reflection code that should find and register all plugins listed in your pubspec.yaml file without any intervention on your part. If your desired plugins are not registered automatically, please file an issue.
Partial plugin registration
To prevent Flutter from registering all plugins and instead register only specific plugins of your choosing, do the following.
First, construct a FlutterEngine either as a cached FlutterEngine, or by overriding provideFlutterEngine() in FlutterActivity or FlutterFragment such that the FlutterEngine instance doesn't automatically register plugins.
FlutterEngine flutterEngine = new FlutterEngine(
context,
FlutterLoader.getInstance(),
new FlutterJNI(),
dartVmArgs, // or an empty array if no args needed
false // this arg instructs the FlutterEngine NOT to register plugins automatically
);
Second, register the plugins that you want. If you overrode provideFlutterEngine() in FlutterActivity or FlutterFragment then override configureFlutterEngine() to add plugins:
public void configureFlutterEngine(FlutterEngine engine) {
// The ShimPluginRegistry is how the v2 embedding works with v1 plugins.
ShimPluginRegistry shimPluginRegistry = new ShimPluginRegistry(
flutterEngine,
new PlatformViewsController()
);
// Add any v1 plugins to the shim
// MyV1Plugin.registerWith(
// shimPluginRegistry.registrarFor("com.my.package.MyV1Plugin")
// );
// Add any v2 plugins that you want
// engine.getPlugins().add(new MyPlugin());
}
If you went with the cached FlutterEngine approach instead of FlutterActivity and FlutterFragment method overrides, then you can add plugins whenever you'd like. You can even add them immediately after instantiating your FlutterEngine. However, be advised that some v1 plugins expect an Activity to be available immediately upon registration. This will not be the case unless you add plugins in configureFlutterEngine() as shown earlier.
// Instantiate cached FlutterEngine.
FlutterEngine flutterEngine = new FlutterEngine(
context,
FlutterLoader.getInstance(),
new FlutterJNI(),
dartVmArgs, // or an empty array if no args needed
false // this arg instructs the FlutterEngine NOT to register plugins automatically
);
// Immediately add plugins to the cached FlutterEngine.
// The ShimPluginRegistry is how the v2 embedding works with v1 plugins.
ShimPluginRegistry shimPluginRegistry = new ShimPluginRegistry(
flutterEngine,
new PlatformViewsController()
);
// Add any v1 plugins to the shim
// MyV1Plugin.registerWith(
// shimPluginRegistry.registrarFor("com.my.package.MyV1Plugin")
// );
// Add any v2 plugins that you want
// engine.getPlugins().add(new MyPlugin());