【问题标题】:How to navigate from Flutter Page to Native Android Page如何从 Flutter Page 导航到 Native Android Page
【发布时间】:2020-09-05 10:26:58
【问题描述】:

在此我正在创建一个应用程序,在该应用程序中,我通过使用这些链接https://flutter.dev/docs/development/add-to-apphttps://flutter.dev/docs/development/add-to-app/android/add-flutter-screen 在现有的 android 应用程序中成功添加了颤振模块。这里的启动屏幕是原生 android,然后我添加了一个按钮来导航到颤动屏幕。但我的问题是我如何从颤动屏幕导航到原生 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'),
          ),
        ),
      ),
    );
  }
}

【问题讨论】:

  • @Benjamin 是的,我已经看到了,但找不到从颤动页面导航或移动到 android 页面的代码。
  • 您只需在收到消息后导航。
  • @Benjamin 在 Flutter 导航到新屏幕时,我们使用此代码 Navigator.push( context, MaterialPageRoute(builder: (context) =&gt; SecondPage()), ); 那么使用此代码如何导航或移动到原生 android 页面?
  • 你不能,因为 Flutter 不知道这些页面的存在。就像在那个答案中一样,您必须从 Flutter 向 Android 发送一条消息,告诉它导航,并且在收到该消息后您必须更改视图。另一种选择是在 Flutter 中重新创建屏幕,以便您可以使用 Navigator 类进行导航。

标签: android android-studio flutter dart


【解决方案1】:

在 Flutter 中,您应该通过 Platform Channel 调用方法来调用函数以从托管 Flutter 的活动/视图控制器导航,您不能直接从 Flutter 导航到本机视图。

 // .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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-03
    • 2021-08-16
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 2012-10-18
    • 2021-06-26
    相关资源
    最近更新 更多