没有为类“Object”定义运算符“[]”。镖

rah*_*aha 5 dictionary object dart

我有一个小部件,它在某些时候导航到不同的页面。喜欢:-

          Navigator.of(context).pushNamed(
              NextPage.routeName,
              arguments: {
                "tag": this.tag,
                "data": this.data,
              },
            );
Run Code Online (Sandbox Code Playgroud)

现在很清楚即使argument参数接受类型Object但它也接受,Map因为这句话没有给我一个错误。

NextPage我访问的值中,如:-

tag: ModalRoute.of(context).settings.arguments["tag"].toString(),
Run Code Online (Sandbox Code Playgroud)

现在 vscode 给了我错误:-

The operator '[]' isn't defined for the class 'Object'.
Try defining the operator '[]'.dart(undefined_operator)
Run Code Online (Sandbox Code Playgroud)

我不知道为什么vscode给我一个错误。所以,要么Object应该有[]要么Map应该是对象的类型。

或者有一些关于日期的不清楚。

注: data是对象。

如何消除此错误?

Abi*_*n47 21

ModalRoute.settings.arguments 是类型为 的属性Object。您不能[]Object. Dart 中的所有内容都继承自Object,这就是为什么您可以将参数传递给 ,ModalRoute而不管它是什么。但是,为了使用它,您需要首先将它转换为您希望使用的类型。

tag: (ModalRoute.of(context).settings.arguments as Map)["tag"].toString(),
Run Code Online (Sandbox Code Playgroud)