android - 如何通过意图将参数从我的本机代码传递到颤动?
问题描述
我正在使用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")(只是尝试了我的愚蠢运气)
解决方案
嗯..你不需要(需要)。只需将所有内容编码到根路径中.. 像 /specific_route_name?foo=bar 然后使用类似的东西:
final uri = Uri.parse(settings.name);
final route = uri.path;
final param = uri.queryParameters['foo'];
这样,您将拥有您的路线名称,route
并可以通过uri.queryParameters
.
推荐阅读
- java - 在 Scene Builder 中加载 Jar 文件的问题
- python - 对每一行应用一个函数,其中函数使用 DataFrame 的所有先前行
- windows - Git 在 Windows 上检查具有 LF 行结尾的特定文件类型
- angular - 使用 Angular 自定义构建器进行资产修订
- c++ - For循环遍历所有值并在未找到变量时重复输入过程 - C++
- python-3.x - 如何在 Surprise 中拆分数据集和交叉验证?
- php - 使用 cURL 和 PHP 发送嵌套的 json 发布请求很热
- sql - 有没有 Group by 的子句
- testing - testcafe await t.expect 超时是不稳定的
- c# - Entity Framework Core 删除主键后保存外键值