我在上一个答案中也提到过,
Provider.of(context)它应该在小部件树中使用,而
build()方法之外的任何东西都不在小部件树中。但是,如果仍然要使用它,则需要将
listen参数设置为
false。
像这样:
@override void initState() { Provider.of<ButtonData>(context, listen: false).selectedButton = Provider.of<ButtonData>(context, listen: false).buttons.first; super.initState(); }
但是,正如您在问题中提到的那样,您不想使用
initState设置默认值。在每种编程语言中,当您声明带有值的变量时,该值将成为其初始值/默认值,以后可以进行更改。
initState您可以在
ButtonData课堂上编辑以下内容,而不是使用。
//Remove this.List<Button> get buttons => _buttons; Button _selectedButton; Button get selectedButton => _selectedButton;//Instead, Use this.List<Button> get buttons => _buttons;Button _selectedButton = _buttons.first;Button get selectedButton => _selectedButton;//This will declare the `selectedButton` variable with a default value.//Happy coding! :)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)