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

flutter 局部view更新,dialog更新进度,dialog更新

局部更新有好几种方法,本次使用的是 StatefulBuilder 定义 customState去更新对话框内容

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';class ProgressDialog {final BuildContext context;BuildContext? dialogContext;double _progress = 0.0;bool _isShowing = false;StateSetter? mCustomState;ProgressDialog(this.context, this._progress);void show() {_isShowing = true;showDialog<void>(context: context,builder: (BuildContext context) {return StatefulBuilder(builder: (mDialogContext, customState) {mCustomState =customState;dialogContext = mDialogContext;return AlertDialog(title: const Text('下载中...'),content: Column(mainAxisSize: MainAxisSize.min,children: <Widget>[LinearProgressIndicator(value: _progress),Padding(padding: const EdgeInsets.symmetric(vertical: 20.0),child: Text('${(_progress * 100).toStringAsFixed(0)}%'),),],),);});},);}void updateProgress(double progress) {if (_isShowing && null!=mCustomState) {(mCustomState!)(() {_progress = progress;});}}void hide() {if (dialogContext != null && _isShowing) {Navigator.of(dialogContext!).pop();}_isShowing = false;}}

定义 StateSetter? mCustomState; 去set更新

使用

   final ProgressDialog progressDialog = ProgressDialog(context, 0);progressDialog.show();更新进度
progressDialog.updateProgress(progress);关闭对话框
progressDialog.hide();

相关文章:

  • 【热门话题】深入浅出:npm常用命令详解与实践
  • Redis监控工具
  • mac安装rust开发环境,使用brew安装和全局配置
  • 【GPT-SOVITS-03】SOVITS 模块-生成模型解析
  • 【NTN 卫星通信】 TN和多NTN配合的应用场景
  • shardingsphere-elastic-job-ui 管理界面安装
  • 数据分析-Pandas数据分类的转换控制
  • 速盾cdn:cdn节点缓存内容不一致怎么办?
  • 面试经典-MySQL篇
  • MQTT和Modbus的物联网网关协议区别分析
  • 上位机图像处理和嵌入式模块部署(qmacvisual畸变矫正)
  • [Java、Android面试]_05_内存泄漏和内存溢出
  • 由浅到深认识C语言(13):共用体
  • 1060:均值
  • 百度paddleocr GPU版部署
  • 分享一款快速APP功能测试工具
  • Cookie 在前端中的实践
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • echarts的各种常用效果展示
  • javascript面向对象之创建对象
  • JavaWeb(学习笔记二)
  • Java-详解HashMap
  • js中的正则表达式入门
  • linux安装openssl、swoole等扩展的具体步骤
  • Linux链接文件
  • MQ框架的比较
  • PAT A1092
  • tab.js分享及浏览器兼容性问题汇总
  • vue 个人积累(使用工具,组件)
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • 安卓应用性能调试和优化经验分享
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 如何合理的规划jvm性能调优
  • 什么是Javascript函数节流?
  • 微信公众号开发小记——5.python微信红包
  • 我这样减少了26.5M Java内存!
  • 异步
  • elasticsearch-head插件安装
  • Prometheus VS InfluxDB
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • ​渐进式Web应用PWA的未来
  • %check_box% in rails :coditions={:has_many , :through}
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (11)MSP430F5529 定时器B
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (23)Linux的软硬连接
  • (42)STM32——LCD显示屏实验笔记
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (Python第六天)文件处理
  • (zt)最盛行的警世狂言(爆笑)
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (十六)Flask之蓝图
  • (转)linux下的时间函数使用
  • (转)树状数组