Flutter - 是否可以在 Flutter 应用程序中导入片段?

Dig*_*iro 12 android android-fragments flutter

在 Flutter 中可以从 Dart调用Java 代码。此外,插件android_intent允许Activity使用 Dart 代码启动 Java Android

但是,如果我们想在 Flutter Widget 中使用 Android Fragment,这可能吗?我们怎么做?

或者使用Fragments的唯一方法是在Java中声明一个新的Activity,并在Flutter中调用启动该Activity?(就像我开头说的)

And*_*zo1 1

到目前为止,我找不到任何方法可以直接在 Flutter 应用程序中直接实现 Android 组件。然而,相反的情况也可能发生,即在 Android 应用程序中使用 Flutter 片段。因此,我可以向您建议解决此问题的方法,该方法可能会导致相同的结果:

  1. 使用方法通道启动一个新的 Android Activity:
void startAndroidActivity() async {
    //TODO: fix result type, etc.
    dynamic result = await MethodChannel("CHANNEL_X").invokeMethod('METHOD');
 }
Run Code Online (Sandbox Code Playgroud)
public class MainActivity extends FlutterActivity {

    private MethodChannel.Result result;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        new MethodChannel(getFlutterView(), "CHANNEL_X").setMethodCallHandler((call, result) -> {
            if (call.method.equals("METHOD")) {
                Intent intent = new Intent(this, MyActivity.class);
                this.result = result;
                startActivityForResult(intent, data);
            }
        });
        GeneratedPluginRegistrant.registerWith(this);
    }

 //TODO: Handle result

}
Run Code Online (Sandbox Code Playgroud)
  1. 实现您的 Android 组件并导入 flutter 片段。对于这个主题,我给您留下了这个参考:https ://flutter.dev/docs/development/add-to-app/android/add-flutter-fragment

我可以给你的另一个参考是这个,它也许可以让你在 Flutter 中导入你想要的东西,但它需要更多的时间: https: //medium.com/@KarthikPonnam/build-your-own-plugin-使用-platformviews-flutter-5b42b4c4fb0a