android - 如何从 Flutter 页面导航到原生 Android 页面

标签 android android-studio flutter dart

在此,我正在创建一个应用程序,其中我通过使用这些链接 https://flutter.dev/docs/development/add-to-app 成功在现有 Android 应用程序中添加了 flutter 模块。 , https://flutter.dev/docs/development/add-to-app/android/add-flutter-screen 。这里的启动屏幕是原生 Android,然后我添加了一个按钮来导航到 flutter 屏幕。但我的问题是如何从 flutter 屏幕导航到 native Android 屏幕。这是原生 android 和 dart 代码的代码。 注意:我已经在build.gradle中添加了flutter模块依赖项,并且还在settings.gradle中添加了代码,所以我不会提及代码。

MainActivity.java

Button btn1;
        btn1=findViewById(R.id.button1);
        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(FlutterActivity.createDefaultIntent(v.getContext())); //this navigate to flutter page
            }
        });

Main.dart

void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}
class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Demo'),),
      body: Container(
        child: Center(
          child: RaisedButton(
            onPressed: (){
              //Here how do i navigate to Native Android Screen ?
            },
            child: Text('Navigate to Android'),
          ),
        ),
      ),
    );
  }
}

最佳答案

在 Dart 代码中,您应该通过 Platform Channel 调用一个方法,以调用 native 函数从托管 Flutter 页面的 Activity/ View Controller 进行导航,您不能直接从 Dart 代码导航到 native vipageew。

 // .dart file
 void _exitFlutter() {
    PlatformChannel.invokeMethod('navToNative');
 }

// .kt or .java file
MethodChannel(flutterEngine!!.getDartExecutor().getBinaryMessenger(), CHANNEL)
        .setMethodCallHandler { call, result ->
          run {
            when (call.method) {
              "navToNative" -> // start your activity here
              else -> result.notImplemented()
            }
          }
        }

您可以在此处查看详细信息https://github.com/duytq94/demo-integrate-flutter

关于android - 如何从 Flutter 页面导航到原生 Android 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61889649/

相关文章:

android - 从Android Studio读取txt、mp3等文件

flutter - Flutter block 模式中的状态不屈服

Android Studio 监视器不显示所有日志,但 Android 设备管理器显示

android-studio - 在使用 Android Studio 启动期间失去与设备的连接

ios - Flutter 推送通知 : Unable to receive notifications in background or when app is closed

android - EditText 请求焦点()?

android - 可以在 Android 4 及更高版本上显示来自 URL 的视频缩略图吗?

android - MediaRecorder 示例不起作用

c++ - 在 android 中运行 C++ 可执行文件时静态初始化问题?

android - Android Studio 2.3更新后,创建新项目或打开现有项目时出错