flutter – 在dispose()之后调用的setState()

flutter – 在dispose()之后调用的setState(),第1张

概述当我单击凸起的按钮时,时间戳显示出来.现在,如果我等待5秒,然后确认将发生此错误的时间  在dispose()之后调用的setState() 我确实在控制台中看到flutter如何更新父窗口小部件,但为什么呢? – 我什么都不做 – 我等了5秒钟! 这个例子在普通项目中可以使用,但是在我的项目中,这个项目要复杂得多,因为在我等待的时候,颤动会更新状态……我怎么了?有没有人猜测在我更复杂的项目而不是 当我单击凸起的按钮时,时间戳显示出来.现在,如果我等待5秒,然后确认将发生此错误的时间
 在dispose()之后调用的setState()

我确实在控制台中看到Flutter如何更新父窗口小部件,但为什么呢? – 我什么都不做 – 我等了5秒钟!
这个例子在普通项目中可以使用,但是在我的项目中,这个项目要复杂得多,因为在我等待的时候,颤动会更新状态……我怎么了?有没有人猜测在我更复杂的项目而不是在一个简单的项目中,颤动是随机更新的?

[UPDATE]
我检查它是从我的Tabbar和TabbarVIEw所在的级别更新.
是否必须对tabbarvIEw所需的“with TickerProvIDerStateMixin”做些什么?可能是因为它导致应用程序定期和随机刷新?

class DateTimebutton extends State<DateTimebuttonWidget> {  DateTime selectedDate = new DateTime.Now();  Future initTimePicker() async {    final TimeOfDay picked = await showTimePicker(      context: context,initialTime: new TimeOfDay(hour: selectedDate.hour,minute: selectedDate.minute),);    if (picked != null) {      setState(() {        selectedDate = new DateTime(selectedDate.year,selectedDate.month,selectedDate.day,picked.hour,picked.minute);      });    }  }  @overrIDe  Widget build(BuildContext context) {    return new Raisedbutton(      child: new Text("${selectedDate.hour} ${selectedDate.minute}"),onpressed: () {        initTimePicker();      }    );  }}
解决方法 在调用setState之前,只需检查窗口小部件的状态类的布尔属性“已挂载”.

if (this.mounted){ setState((){       //Your state change code goes here });}
总结

以上是内存溢出为你收集整理的flutter – 在dispose()之后调用的setState()全部内容,希望文章能够帮你解决flutter – 在dispose()之后调用的setState()所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

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

原文地址: http://outofmemory.cn/web/1003360.html

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

发表评论

登录后才能评论

评论列表(0条)

保存