如何从 Android 活动导航到特定的颤振路线?

Posted

技术标签:

【中文标题】如何从 Android 活动导航到特定的颤振路线?【英文标题】:How to navigate to a specific flutter route from an Android activity? 【发布时间】:2019-01-12 07:59:36 【问题描述】:

我有一个现有的 android 应用程序,我已经在我的项目中集成了颤振我想调用一个颤振特定的路线,我在我的主要方法中定义这样的路线

class FlutterView extends StatelessWidget 
 @override
  Widget build(BuildContext context) 
  return new MaterialApp(
  title: 'Platform View',
  initialRoute: '/',
  routes: 
    '/': (context) => HomeScreen(),
    '/secound': (context) => MyCustomForm(),
    '/dashboard': (context) => DashBoardScreen(),
    '/login': (context) => LoginScreen(),
  ,
  theme: new ThemeData(
    primarySwatch: Colors.red,
    textSelectionColor: Colors.red,
    textSelectionHandleColor: Colors.red,
    ),
   );
  

从我的 android 活动中,我正在调用这样的颤动活动

startActivity(new Intent(this,FlutterActivity.class));

它确实打开了我的颤动活动,但使用 initialRoute: '/' 这很好,但有时我想打开例如('/dashboard')路线,当我打开颤动活动时我该怎么做??

【问题讨论】:

【参考方案1】:

只需创建一个方法通道并从 Android 调用一个颤振函数。在该功能中,将您的应用程序从颤动导航到您想要的任何位置。

有关如何使用方法通道在颤振和本机代码之间进行通信的更多信息,反之亦然。请看一下

https://flutter.dev/docs/development/platform-integration/platform-channels

【讨论】:

他们有一个例子可以从飞镖发送到本地。不是反向示例。 @Alexufo 这也是一个很好的教程stablekernel.com/article/flutter-platform-channels-quick-start 他的代码已经过时了,但这是在 github 上寻找新代码示例的方式,谢谢 FlutterEngine 的 NaviationChannel 能起到导航的作用吗?我试过推送和弹出路线,它似乎没有工作。见:api.flutter.dev/javadoc/io/flutter/embedding/engine/…【参考方案2】:

来自 Android,如 here 所述:

Intent intent = new Intent(context, MainActivity.class);
intent.setAction(Intent.ACTION_RUN);
intent.putExtra("route", "/routeName");
context.startActivity(intent);

来自 Flutter,使用 android_intent

AndroidIntent intent = AndroidIntent(
  action: 'android.intent.action.RUN',

  // Replace this by your package name.
  package: 'app.example', 

  // Replace this by your package name followed by the activity you want to open.
  // The default activity provided by Flutter is MainActivity, but you can check
  // this in AndroidManifest.xml.
  componentName: 'app.example.MainActivity', 

  // Replace "routeName" by the route you want to open. Don't forget the "/".
  arguments: 'route': '/routeName',
);

await intent.launch();

请注意,应用程序只有在终止时才会在此路由中打开,也就是说,如果应用程序处于前台或后台,则不会在指定的路由中打开。

【讨论】:

非常详细的答案,谢谢 效果很好,非常感谢

以上是关于如何从 Android 活动导航到特定的颤振路线?的主要内容,如果未能解决你的问题,请参考以下文章

从路线导航返回时,颤振搜索委托不起作用

颤振错误“无法导航到初始路线”

在路线之间去除颤振导航

如何从活动意图到特定片段

如何在颤振应用程序中无上下文导航?

Android导航服务实现