【发布时间】:2018-10-13 04:24:33
【问题描述】:
我有这样的东西。我很难理解这个错误。
为什么在此处访问filterController 会出现此错误,但如果我将当前整个TextFormField 创建(在cmets A 和B 之间)移动到build 方法中,它不会出现此错误?那么如何在 build 方法中移动整个 TextFormField 使 filterController 静态并解决此问题?
class AppHomeState extends State<AppHome> with SingleTickerProviderStateMixin
{
TabController _tabController;
final filterController = new TextEditingController(text: "Search");
//----A
TextFormField email = new TextFormField(
keyboardType: TextInputType.emailAddress,
controller: filterController, ------>ERROR : Error: Only static members can be accessed in initializers
);
//----B
@override
Widget build(BuildContext context)
{
return new Scaffold(
appBar: new AppBar(..),
);
}
}
我该如何解决这个问题?
【问题讨论】:
-
我认为我们需要更多的上下文(哈哈)才能正确回答这个问题。重要的部分是你在哪里定义了这段代码。根据您描述的错误(
Error : Only static members can be accessed in initializers),它位于类的构造函数中。在颤振中,您实际上不应该在构造函数中构建任何东西。因此,如果您可以发布整个课程,那肯定会帮助我们帮助您! -
很高兴他的回答有所帮助,但我认为这不是一个特别正确的答案,因为它没有解决问题的原因或引导您避免再次出现问题。如果您只是通过调用函数替换变量,我希望您会得到相同的错误。如果他编辑建议你然后调用他在构建函数中定义的函数,而不是你可能正在做的构造函数中定义的函数,那么我会认为这是一个更正确的答案......
-
我马上试试这个
-
@rmtmckenzie 在经历了这个之后看起来这不是我想要的,因为它不能解决问题。
-
好的。请编辑您的问题以包括您的整个班级。那么我或其他人将能够更好地帮助您。