我需要将在原生代码 iOS/Android 中创建的 SDK 包装到 Flutter 中。在 Android 方面,我的 Fragment 或 Activity 需要扩展一些功能 开发工具包 实现自定义 View 的 fragment 或 Activity 。
我的问题是如何包装 开发工具包 中的 fragment 或 Activity Flutter 插件 并让使用我的插件在 flutter 项目方面扩展它?换句话说,我想要一个可以使用我的插件扩展 Fragment 或 Activity 的 Widget 以拥有 在 SDK 中显示 Widget ui 的能力 .
在插件中使用 FlutterFragment、FlutterActivity 是否正确?
我是说:
Flutter 项目(Widget)<-> Flutter 插件(FlutterFragment 或 FlutterActivity 附加到原生 SDK Fragment 或 Activity)
如果不是什么是可能的解决方案?
最佳答案
我遇到了同样的问题,这是我的解决方案:
ActivityAware
的FlutterPlugin,关于如何缓存Activity,引用这个FlutterPlugin with ActivityAware,以及MethodCallHandler
(与FlutterWidget应用程序通信)。 int id = 0x123456;
ViewGroup.LayoutParams vParams = new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT
);
FrameLayout container = new FrameLayout(context);
container.setLayoutParams(vParams);
container.setId(id);
activity.addContentView(container, vParams);
FragmentManager fm = ((FragmentActivity) activity).getSupportFragmentManager();
fm.beginTransaction()
.replace(id, nativeFragment)
.commitAllowingStateLoss();
MethodChannel.Result
或 success()
调用 error()
,否则,FlutterWidget 将永远被阻塞。 static Future<void> showNativeFragment() async {
await _channel.invokeMethod("SHOW_NATIVE_FRAGMENT");
}
还要确保 FlutterWidget 的应用程序 Activity 扩展了 FlutterFragmentActivity
。
关于android - 如何在 Flutter 插件中使用 Android Fragment?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62746709/