首页 > 解决方案 > 如何通过意图将参数从我的本机代码传递到颤动?

问题描述

我正在使用Intent启动特定路线,如下所示

class NotificationService : FirebaseMessagingService() {
    override fun onMessageReceived(remoteMessage: RemoteMessage) {
        if(remoteMessage.data.isNotEmpty()) {
            val intent = Intent(this, MainActivity::class.java)
            intent.putExtra("route","/specific_route_name");
            intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
            startActivity(intent);
        }
    }
}

我的 onGenerated 函数负责处理和启动如下所示的颤动屏幕

static Route<dynamic> generateRoute(RouteSettings settings) {
    switch (settings.name) {
      case '/':
        return CupertinoPageRoute(builder: (_) => MyHomePage());
      case '/specific_route_name':
        return CupertinoPageRoute(builder: (_) => SpecificPage());
      default:
        return CupertinoPageRoute(
          builder: (_) => Scaffold(
            body: Center(
              child: Text('No route defined for ${settings.name}'),
            ),
          ),
        );
    }
  }

现在我如何也可以传递数据?通过那个意图,我尝试了 intent.putExtra("data") & intent.putExtra("argument")(只是尝试了我的愚蠢运气)

标签: androidflutterandroid-intentnative

解决方案


嗯..你不需要(需要)。只需将所有内容编码到根路径中.. 像 /specific_route_name?foo=bar 然后使用类似的东西:

    final uri = Uri.parse(settings.name);
    final route = uri.path;
    final param = uri.queryParameters['foo'];

这样,您将拥有您的路线名称,route并可以通过uri.queryParameters.


推荐阅读