class LevelUp extends GetxController {
Map<String, String> params = Get.arguments;
var myTest = params.[comLevel];
}
错误报告--“示例成员'params'不能在初始化器中访问。”我是编程新手,这是直接从一个小部件调用的。我检查了LevelUpMap,它有内容。错误发生在我试图将param值赋给myTest的地方。如果我将键放在引号中或提供一个整数,这并不重要。任何建议都将非常感谢。
9条答案
按热度按时间hpcdzsge1#
初始化对象之前无法访问
params
。若要修复您的示例,请将myTest
初始化移到构造函数中。另外,我不认为你应该在
[comLevel]
之前有一个时期。vu8f3i0k2#
空安全性更新:
使用
late
关键字:Dart 2.12附带了late
关键字,它可以帮助您进行惰性初始化,这意味着在使用字段bar
之前,它将保持未初始化状态。b0zn9rqh3#
虽然OP的案例已经回答了这个问题,但是我想为那些在
StatefulWidget
场景中接收到这个错误的人提供一个解决方案。考虑这样一种情况,您希望有一个可选择项的列表来指示要显示的类别。在这种情况下,构造函数可能类似于:
请注意,属性
defaultSelection
负责指定默认情况下应选择的类别。您可能还希望跟踪初始化后选择的类别,因此我将创建selectedCategory
。我希望将selectedCategory
分配给defaultSelection
,以便默认选择生效。在_CategoryScrollViewState
中,您不能执行以下操作:行
int selectedCategory = widget.defaultSelection;
将不起作用,因为defaultSelection
尚未初始化(在其他答案中提到)。因此,引发错误:无法在初始值设定项中访问示例成员“widget”。
解决方法是将
selectedCategory
赋值给initState
方法***内部的defaultSelection
,并在方法***外部初始化它:roqulrg34#
一个简单的例子,它显示了我们如何解决上述问题,例如:创建类B的示例,并在类A的参数中传递类A的示例
WRONG(初始值设定项的编译时错误):
显示错误:无法在初始值设定项中访问示例成员“_a”。
右:
btqmn9zl5#
100%工作溶液:将var
myTest = params.[comLevel];
放在构建方法下面。例如
ou6hu8tu6#
对我来说,它发生了,因为我试图访问一个类示例的属性(假设类A),并使用此属性初始化另一个类(类B),该属性是整数,并已定义
然而,由于我没有从“类A”对象,我可以访问这些属性属于它!我试图在“构建”方法中使用此属性,使对象“创建/构建”,它的工作!
p3rjfoxz7#
我也得到了类似的错误。我找到了解决办法如下。
我的第一个代码:
接下来是修复错误的代码:
我没有在一行中定义2个变量,而是将第一个变量直接放在第二个变量的位置。
vbkedwbf8#
另一个解决方案是将变量设为GetX参数。
请在27:34观看此视频使用Flutter https://www.youtube.com/watch?v=ZnevdXDH25Q&ab_channel=CodeX的GetX状态管理教程
zlwx9yxi9#
只是携带
到下面的小部件内部版本{}中。
像这样: