36.Flutter 零基础入门(三十六):StatefulWidget 与 setState 进阶 —— 动态页面必学 📅 发布时间:2026/7/9 1:44:30 👁️ 浏览次数: Flutter 零基础入门三十六StatefulWidget 与 setState 进阶 —— 动态页面必学到目前为止你已经会了页面跳转Navigator用户输入与表单TextField / Form异步操作Future / async / await但是所有真实 App 都是动态的页面点击按钮改变状态异步加载数据刷新界面计数器、点赞、收藏功能这些功能的核心就是StatefulWidget setState。一、StatefulWidget 与 StatelessWidget 区别类型特点使用场景StatelessWidget无状态UI 一旦生成就固定静态页面、文本展示、图标StatefulWidget有状态可动态刷新 UI交互、表单、列表更新 记住只要 UI 会变化一定是 StatefulWidget二、StatefulWidget 基本写法classCounterPageextendsStatefulWidget{override_CounterPageStatecreateState()_CounterPageState();}class_CounterPageStateextendsStateCounterPage{int _count0;overrideWidgetbuild(BuildContextcontext){returnScaffold(appBar:AppBar(title:Text(计数器)),body:Center(child:Column(mainAxisAlignment:MainAxisAlignment.center,children:[Text(点击次数:$_count,style:TextStyle(fontSize:24)),SizedBox(height:20),ElevatedButton(onPressed:(){setState((){_count;});},child:Text(点击增加),),],),),);}} 关键点_count→ 状态变量setState(() { ... })→ 更新状态并刷新 UI三、setState 的工作原理1️⃣ 你修改了状态变量2️⃣ 调用setState3️⃣ Flutter 框架会重新调用build方法4️⃣ UI 根据新的状态重新渲染 注意修改状态变量必须在 setState 内或者在异步完成后调用 setState四、异步更新状态示例结合上一章 Future / async / awaitclass AsyncCounter extends StatefulWidget { override _AsyncCounterState createState() _AsyncCounterState(); } class _AsyncCounterState extends StateAsyncCounter { int _count 0; Futurevoid incrementLater() async { await Future.delayed(Duration(seconds: 2)); setState(() { _count; }); } override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text(异步计数器)), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Text(点击次数: $_count, style: TextStyle(fontSize: 24)), SizedBox(height: 20), ElevatedButton( onPressed: incrementLater, child: Text(2 秒后增加), ), ], ), ), ); } } 注意异步操作结束后必须用 setState 刷新 UI否则界面不会更新五、多个状态变量的更新int _count 0; bool _isLoading false; void handleClick() { setState(() { _count; _isLoading true; }); }✅ setState 可以同时更新多个状态变量六、StatefulWidget 常见坑❌ 在 build 内直接修改状态 → 无限刷新❌ 忘记调用 setState → UI 不刷新❌ 异步更新状态不在 setState → UI 不刷新❌ 创建过多 StatefulWidget → 性能问题 建议状态变量尽量封装在 State 类内setState 只包裹修改变量的部分七、StatefulWidget 与 TextField / ListView 结合输入框用户输入 → 状态变量保存 → UI 刷新列表添加 / 删除 / 修改数据 → setState 刷新 ListView / GridView 基本模式状态变量 (State) → build 渲染 UI → 用户操作 / 异步修改状态 → setState → 重新渲染八、本篇你真正掌握了什么你已经学会StatefulWidget 基本结构setState 刷新 UI 原理异步操作更新状态多状态变量更新与列表、输入框结合的动态 UI 到这里为止你已经能写出完整的动态交互页面了九、一句话总结StatelessWidget 展示静态StatefulWidget setState 控制动态异步操作也要用 setState 刷新 UI 下一篇预告《Flutter 零基础入门三十七SnackBar 与提示信息 —— 页面反馈与用户交互必学》下一篇我们将学习SnackBar 提示AlertDialog 弹窗用户操作后的即时反馈动态交互能力再升级
从地震波到结构易损性:ABAQUS、Opensees、Perform3d与IDA曲线绘制 ABAQUS 、Opensees、Perform3d IDA曲线绘制,结构易损性评估。 地震波选波调幅,易损性分析,曲线生成代码matlab函数,直接调用即可。在结构工程领域,面对地震这一极具破坏力的自然灾害,深入了解结构在不同地… 2026/7/7 15:26:22
Generator 迭代器协议 co 库底层原理+实战 这两个是理解 Generator 的「关键底层知识点」,也是面试中容易被追问的细节——迭代器协议是 Generator 能被遍历的基础,co 库是 Generator 实现异步流程控制的核心,我用最通俗的语言+代码拆解清楚。 一、迭代器协议(Iterator Protocol):Generator 能“暂停/遍历”的底层… 2026/7/8 3:30:58
AT89C51微控制器与ADC0832和LCD1602配合实现电压电流监控系统 AT89C51配合两路ADC0832采集电压,电流在LCD1602上显示。其中有四个按键分别控制电压,电流的上下限阈值。当超过阈值之后蜂鸣器自动报警。 代码写的很详细一、引言本系统采用AT89C51微控制器为核心,通过两路ADC0832模拟数字转换器采集电压和电… 2026/7/7 9:28:09
提升中标率基础要素 一、高质量需求牵引 采购输电线路风险智能感知、预警、平台接入和运维闭环能力。 这样竞争点就不再是最低价,而是: 产品是否有第三方检测; 传感器是否有校准; 是否适应高压输电线路环境; 是否能接入甲方平台&#x… 2026/7/9 1:43:54
杰理之旋转编码器【篇】 RDEC(Rotary Decoder,旋转编码器)模块用于处理旋转编码器的输入信号,广泛应用于各种需要检测旋转方向、速度和位置的设备中,如音量控制、电机控制、工业设备等。旋转编码器通常输出两路相位差90度的脉冲信号࿰… 2026/7/9 1:39:54
法国AI初创公司ZML发布免费推理软件,支持多种AI芯片 英伟达的市场主导地位尚未终结,但来自各方的挑战者和替代选择正在不断涌现。法国热门AI初创公司ZML获得图灵奖得主杨立昆背书,近日推出了一款推理性能软件,可让多款开源大语言模型在多种芯片上运行,涵盖英伟达、AMD、谷歌TPU、App… 2026/7/9 1:39:54
AI Engineer 2026:从LLM API到生产的13步实战路线 # AI Engineer 2026:从LLM API到生产的13步实战路线 ## 一、背景与挑战 2025年秋,当我在面试一位自称“精通大模型开发”的候选人时,他的完整项目经验是“调用OpenAI的聊天补全接口做了一次情感分析”。这暴露出AI工程领域一个普遍问题&#… 2026/7/9 1:39:54
12 英寸单晶硅棒直拉法(CZ)工艺详解:温度梯度、旋转速度与缺陷控制 12英寸单晶硅棒直拉法工艺全解析:温度梯度、旋转动力学与晶体缺陷控制引言:单晶硅制造的精密艺术在半导体工业的基石中,单晶硅棒的制备堪称材料科学的巅峰之作。当一粒粒石英砂经历千度熔炼、分子重构,最终生长成完美晶格结构的圆… 2026/7/9 1:39:54
多模态大模型 5 大核心技术解析:从提示学习到 RLHF 的演进路径 多模态大模型 5 大核心技术解析:从提示学习到 RLHF 的演进路径 当GPT-4首次展示出能同时理解图像和文本的能力时,整个AI社区都意识到:多模态大模型的时代已经到来。这种能处理多种数据类型的模型,正在重新定义人机交互的边界。但很… 2026/7/9 1:37:53
机器视觉与PLC集成:轮毂缺陷检测与字符识别误差控制在0.2mm内 机器视觉与PLC集成:轮毂缺陷检测与字符识别误差控制在0.2mm内的技术实现轮毂作为汽车关键零部件,其表面质量直接影响行车安全与美观。传统人工检测效率低且易漏检,而采用机器视觉与PLC集成方案可实现微米级精度检测。本文将深入解析高精度视觉… 2026/7/9 0:01:04
GBase 8a vs MySQL 8.0:ALTER TABLE语法与限制的5点关键差异对比 GBase 8a与MySQL 8.0:ALTER TABLE语法差异深度解析与实战指南1. 两种数据库的ALTER TABLE能力全景对比在数据库架构设计和运维过程中,表结构变更(DDL操作)是不可避免的需求。GBase 8a作为国产分析型数据库代表,与开源M… 2026/7/9 0:03:06
【大数据毕业设计】基于多源旅游数据的景区热度分析与推荐系统的设计与实现 基于 Django 的旅游偏好挖掘与景区推荐系统(源码+文档+远程调试,全bao定制等) 博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am… 2026/7/9 0:05:09
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/7 11:26:57
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/8 20:15:17
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/8 14:25:08