class AppHomeState extends State<AppHome> with SingleTickerProviderStateMixin { TabController _tabController; final filterController = new TextEditingController(text: "Search"); TextFormField email = ......是一个初始值设定项,目前无法访问
this。初始化程序在构造函数之前执行,但是
this只允许在对超级构造函数的调用(在您的示例中是隐含的)完成后才能访问。因此,仅在构造函数主体(或更高版本)
this中允许访问。
这就是为什么您收到错误消息的原因:
controller: filterController,
访问
this.filterController(
this如果不显式地写,则是隐式的)。
要解决您的问题(假设
final),可以使用工厂构造函数和构造函数初始化列表:
class AppHomeState extends State<AppHome> with SingleTickerProviderStateMixin { factory SingleTickerProviderStateMixin() => new SingleTickerProviderStateMixin._(new TextEditingController(text: "Search")); SingleTickerProviderStateMixin._(TextEditingController textEditingController) : this.filterController = textEditingController, this.email = new TextFormField( keyboardType: TextInputType.emailAddress, controller: textEditingController); TabController _tabController; final filterController; final TextFormField email;或者,当
class AppHomeState extends State<AppHome> with SingleTickerProviderStateMixin { SingleTickerProviderStateMixin() { email = new TextFormField( keyboardType: TextInputType.emailAddress, controller: filterController, ); } TabController _tabController; final filterController = new TextEditingController(text: "Search"); TextFormField email;但是在Flutter中,小部件
initState通常用于
class AppHomeState extends State<AppHome> with SingleTickerProviderStateMixin { @override void initState() { super.initState(); email = new TextFormField( keyboardType: TextInputType.emailAddress, controller: filterController, ); } TabController _tabController; final filterController = new TextEditingController(text: "Search"); TextFormField email;


