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