繁体   English   中英

错误:预期 4 个位置参数,但找到 0 个

[英]error: 4 positional argument(s) expected, but 0 found

我正在尝试用颤振构建一个应用程序。 我收到一个我无法弄清楚的错误:

这是导航栏的代码,然后将其调用到多个页面在此处输入图像描述

这是发生错误的地方:

在此处输入图像描述

我尝试添加所需的 this.name, .. 参数,但它显示不同的错误。

错误图片

在此处输入图像描述

您遇到问题的原因是您需要在创建小部件时设置这些构造函数参数,除非您实际上没有这样做并且无法发送任何参数。 无论哪种方式,您需要做的第一件事就是摆脱 @required 指令,因为它不是必需的,特别是如果您不想包含它们。 您可以通过三种方式解决此问题:

  1. 为构造函数参数设置默认值:
const NavBar([Key? key, this.name = "", this.credit = "", this.rank = ""])
  1. 使您的构造函数参数可以为空
const NavBar([Key? key, this.name, this.credit, this.rank])

String? name;
String? credit;
String? rank;
  1. 在他们被叫到之前,让他们迟到并在课堂上的其他地方实例化他们。 不过,我可能不会向您推荐这种方法。

此外,正如Just a Person所建议的那样,我会将它们从位置参数转换为命名参数,因为它为您提供了更大的灵活性。

您可以通过多种方式在 Dart 中设置构造函数,因此我无法确定哪种方法最适合您,因为这取决于您的要求。

您需要在导航栏小部件中传递所需的参数

drawer : NavBar('name','credit','rank')

用上面的代码替换你的抽屉代码。

在您的 NavBar 中,您不是在声明一个命名参数,而是一个位置参数。 所以删除了所有参数前面的@required或将它们括在{}中,但在这种情况下,我认为你应该命名参数,因为它会更清楚。

像这样: NavBar(Key? key, {required this.name, this.credit, this.rank})

同时传递所有四个参数,但不是按名称传递,因为它们不是位置的。

drawer: NavBar(name: name, credit: credit, rank: rank)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM