每次调用 modalroute 从命名路由检索参数时,我都会得到 null。
\n\n这是代码片段:
\n\nNavigator.pushNamed(\n context, \n VerifyCode.routeName, \n arguments: {\'code\': randValue,},\n );\nRun Code Online (Sandbox Code Playgroud)\n\n这是我检索参数的地方:
\n\nWidget build(BuildContext context) \n{\n //Get the dialog provider to display information\n alertViewModel = Provider.of<AlertViewModel>(context);\n\n //Retrieve the route argument\n final routeArgs =\n ModalRoute.of(context).settings.arguments as Map<String, int>;\n\n final securityCode = routeArgs[\'code\']; <-- Error happens here\n\n print(\'Code =\' + securityCode.toString());\n return Container()\nRun Code Online (Sandbox Code Playgroud)\n\n}
\n\n我应该从地图中获取一个整数,但我收到了错误:
\n\n \xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90 Exception Caught By widgets library \xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\nThe following NoSuchMethodError was thrown building VerifyCode(dirty, dependencies: [InheritedProvider<AlertViewModel>, _ModalScopeStatus], state: _VerifyCodeState#98992):\nThe method \'[]\' was called on null.\nReceiver: null\nTried calling: []("code")\nWhen the exception was thrown, this was the stack\n#0 Object.noSuchMethod (dart:core-patch/object_patch.dart:50:5)\n#1 _VerifyCodeState.build package:accidentapp/screens/verifycode.dart:42\n#2 StatefulElement.build \npackage:flutter/\xe2\x80\xa6/widgets/framework.dart:4012\n#3 ComponentElement.performRebuild package:flutter/\xe2\x80\xa6/widgets/framework.dart:3924\n#4 Element.rebuild\npackage:flutter/\xe2\x80\xa6/widgets/framework.dart:3721 \xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\nRun Code Online (Sandbox Code Playgroud)\n\nRouteArgs 始终为空。我尝试使用类来传递值而不是地图,但我收到了相同的错误。不确定我做错了什么。
\n将设置传递给 MaterialPageRoute
Route<dynamic> generateRoute(RouteSettings settings) {
return MaterialPageRoute(
builder: (BuildContext context) {
//some custom code
return Page();
},
settings: settings
);
Run Code Online (Sandbox Code Playgroud)
}
试试这个方法:-
String rawJson = '{"code":randValue}';
Map<String, dynamic> map = jsonDecode(rawJson);
Navigator.pushNamed(context, VerifyCode.routeName, arguments: map);
Run Code Online (Sandbox Code Playgroud)
使用以下方式接收数据:-
final Map<String, dynamic> map = ModalRoute.of(context).settings.arguments;
Run Code Online (Sandbox Code Playgroud)
您可以使用获取数据
map["code"]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8450 次 |
| 最近记录: |