flutter - 从 Navigator.pop 接收 map

标签 flutter dart

我有一个页面,用户在初始登录后输入他的用户名和生日,然后我想返回并在上一个屏幕中使用这些数据。

在屏幕 2 中:

Navigator.pop(context, {'username':username, 'birthday':birthday});

在屏幕 1 中:
final userData = await Navigator.pushNamed(context, '/setup_profile');

final/var 适用于单个变量,例如 String,但不适用于映射,因为它不知道返回的对象实际上是映射。

自然不能用userData['username']没有指定它是一个 map ,我不明白如何指定它。

我试过了
Map<String, dynamic> userData = await Navigator.pushNamed(context, '/register');

它没有工作我收到此错误:
Unhandled Exception: type 'MaterialPageRoute<dynamic>' is not a subtype of type 'Route<Map<String, dynamic>>'

然后我试过了
Route route = await Navigator.pushNamed(context, '/register');
Map<String, dynamic> data = route.currentResult;

这不起作用,我遇到了同样的错误
Unhandled Exception: type 'MaterialPageRoute<dynamic>' is not a subtype of type 'Route<Route<dynamic>>'

简单地说,我想在 Screen1 中使用返回的 Map。

主要问题是我不知道如何指定返回数据,它是自定义类或 map 或列表还是其他东西。如何从 Navigator.pop 指定返回类型?

最佳答案

您需要转换到 Map得到结果后。像这样的东西:

final userData = await Navigator.pushNamed(context, '/setup_profile');
print((userData as Map<String, dynamic>)['username']);

关于flutter - 从 Navigator.pop 接收 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59546927/

相关文章:

android-studio - 如何解决 flutter 中的版本控制

dart - 未找到方向性小部件

flutter - 播放和暂停 Flutter 动画

dart - flutter 图像着色

android - 如何用android studio解决flutter中的gradle错误?

dart - dart函数类型用于变量声明的语法是什么?

flutter - 参数类型 'AnimationController?' 无法分配给参数类型 'Animation<double>'

dart - 创建一部分 flutter 代码作为小部件和变量有什​​么区别

android - Flutter - 如何使用包含表单的可扩展面板构建 ListView ?

mobile - Flutter listview.separator item 点击