在flutter的initstate()之前调用了DependOnInheritedElement()

在flutter的initstate()之前调用了DependOnInheritedElement(),第1张

在flutter的initstate()之前调用了DependOnInheritedElement()

我在上一个答案中也提到过,

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! :)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5051976.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存