[Flutter 实战] setState() or markNeedsBuild() called during build

在此记录项目中所遇到问题及解决方案

在initState方法中使用context对象获取用户token时发生该错误,解决方法是
把它移到did

修改之前的代码:

  @override
  void initState() {
    super.initState();
    if(_presenter==null) {
      _presenter = new MyCouponPresenter(this, getToken(context));
      _presenter.query(0);
    }
  }

修改之后的代码:

  @override
  void didChangeDependencies() {
    super.didChangeDependencies();
    if(_presenter==null) {
      _presenter = new MyCouponPresenter(this, getToken(context));
      _presenter.query(0);
    }
  }

在didChangeDependencies方法中showDialog还是会出现这个问题,可以使用延时处理。

_showLoadingDialog() async{
  await Future.delayed(Duration(milliseconds: 100));
  showDialog<DialogDemoAction>(context: context,
        builder: (BuildContext context){
          return LoadingDialog();
        });
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,904评论 1 32
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,917评论 0 17
  • 1.设计模式是什么? 你知道哪些设计模式,并简要叙述?设计模式是一种编码经验,就是用比较成熟的逻辑去处理某一种类型...
    龍飝阅读 6,646评论 0 12
  • 安装 开机自动启动: crontab 命令 功能说明:设置计时器。 crontab [-u <用户名称>][配置文...
    二石兄阅读 4,050评论 0 0
  • 最近这两天全身酸痛,自己也没有什么精神去听课,但是我们化工老师也给我们说了关于我们专业的事情,也让我值得深思,其实...
    雷帅帅阅读 1,144评论 0 0

友情链接更多精彩内容