我有一个Widget,该Widget有时会导航到其他页面。 像:-
Navigator.of(context).pushNamed(
NextPage.routeName,
arguments: {
"tag": this.tag,
"data": this.data,
},
);
现在很清楚,即使argument
参数接受类型Object
,但它也接受Map
,因为这句话并没有给我带来错误。
然后在NextPage
中,我访问的值是:-
tag: ModalRoute.of(context).settings.arguments["tag"].toString(),
现在,vscode给了我错误:-
The operator '[]' isn't defined for the class 'Object'.
Try defining the operator '[]'.dart(undefined_operator)
我不知道为什么vscode
给我一个错误。
因此,Object
应该具有[]
或Map
应该是一种对象。
关于日期,还有一些不清楚的地方。
注意: data
是对象。
如何清除此错误?
答案 0 :(得分:6)
ModalRoute.settings.arguments
是类型为Object
的属性。您无法在[]
上调用索引器Object
。 Dart中的所有内容都继承自Object
,这就是为什么无论参数如何都可以将参数传递给ModalRoute
的原因。但是,要使用它,您需要首先将其转换为期望使用的类型。
tag: (ModalRoute.of(context).settings.arguments as Map)["tag"].toString(),
答案 1 :(得分:0)
ModalRoute.settings.arguments 是一个类型为 Object.so 的属性,因此您可以将其设为 Map
final routeArgs = ModalRoute.of(context)!.settings.arguments as Map;
final tag = routeArgs['tag'];