当前位置: 首页 > news >正文

[Flutter]有的时候调用setState(() {})报错?

  先看FlutterSDK的原生类State中有一个变量mounted。

abstract class State<T extends StatefulWidget> with Diagnosticable {/// mounted的作用是,此State对象当前是否在树中。/// 在创建State对象之后,在调用initState之前,框架通过将State对象与BuildContext的关联来 "mounts" 这个State对象。State对象保持挂载状态,直到框架调用dispose,在此之后,框架将永远不会要求State对象再次构建。/// 除非mounted为true,否则调用setState是错误的。bool get mounted => _element != null;
}


  因此,在State<T extends StatefulWidget>的子类对象中,我们可以在封装了一个刷新界面的方法。特别是在网络数据请求等异步任务的回调中调用这个方法。

class _HomePageState extends State<HomePage>void _updateUI() {if (mounted) {setState(() {});}}void _requestData() {RequestUtil.get(urlStr: 'urlStr',param: null,showLoading: false,).then((value) {// 注: 回调可能在State对象被dispose之后才执行。if (value && value.data is List) {_dataList = value.data;} else {_dataList = [];}_updateUI();});}
}

http://www.lryc.cn/news/134900.html

相关文章:

  • 利用屏幕水印学习英语单词,无打扰英语单词学习
  • 开学必备物品清单!这几款优先考虑!
  • 聊聊调制解调器
  • Go语言入门指南:基础语法和常用特性(下)
  • 【MFC常用问题记录】
  • ThreadLocal内存泄漏问题
  • 微服务基础概念【内含图解】
  • Dockerfile创建 LNMP 服务+Wordpress 网站平台
  • 消息中间件篇
  • 基本定时器
  • MySQL 中文全文检索
  • Redis——list类型详解
  • npm 安装 git 仓库包
  • 问题来了!你知道你穿的防砸劳保鞋的保护包头都是什么材料
  • 计算机网络-物理层(三)编码与调制
  • Linux面试笔试题(6)
  • qt中窗口的布局
  • 玄子Share - HTML Emmet 语法详细介绍
  • Linux上安装和使用git到gitoschina和github上_亲测
  • 合宙Air724UG LuatOS-Air LVGL API--简介
  • 「Vue|网页开发|前端开发」01 快速入门:用vue-cli快速写一个Vue的HelloWorld项目
  • 7.5.tensorRT高级(2)-RAII接口模式下的生产者消费者多batch实现
  • 华为OD-最大括号深度
  • 【Leetcode】108. 将有序数组转换为二叉搜索树
  • 【树莓派打怪升级】:玩转个人Web世界!
  • mysql5.7在centos环境下的常见故障
  • hive中get_json_object函数不支持解析json中文key
  • Azure VM上意外禁用NIC如何还原恢复
  • 神经网络简单理解:机场登机
  • Sping源码(七)— 后置处理器