Flutter有状态组件中数值点击按钮不更新问题求助
Flutter Stateful Widget数值不更新问题修复
你的代码存在两个核心问题,导致点击按钮后页面数值无变化:
- 局部变量遮蔽成员变量:在
hitungtambah方法里,你重新声明了int value = int.tryParse(Value)??0;,这会创建一个方法内的局部变量。后续setState里修改的是这个局部变量,而非State类的成员变量value——而UI绑定的是成员变量,所以数值不会更新。 - 初始值设置错误且冗余:成员变量
value初始值设为0,但你预期初始值是100;同时额外定义的String Value属于冗余变量,完全没必要通过字符串中转初始化数值。
以下是修正后的完整代码:
import 'package:flutter/material.dart'; class InitialValue extends StatefulWidget{ InitialValue({Key? key}):super(key: key); @override _InitialValue createState()=> _InitialValue(); } class _InitialValue extends State<InitialValue>{ final TextEditingController ivalue = TextEditingController(); // 直接将成员变量初始化为100,移除冗余的String Value int value = 100; void hitungtambah(){ String Ivalue = ivalue.text; int Fvalue = int.tryParse(Ivalue)?? 0; // 去掉局部变量声明,直接操作类的成员变量value setState(() { value += Fvalue; }); } @override Widget build(BuildContext context){ return Scaffold( appBar: AppBar( title: Text("Initial Value"), ), body: Column( children: <Widget>[ Container( alignment: Alignment.center, child: Text("$value", style: TextStyle(fontSize: 20), ), ), Container( padding: EdgeInsets.only(left: 20,right: 20,top: 20), child: TextField( decoration: InputDecoration( hintText: 'Input Value',), controller: ivalue,), ), TextButton(onPressed: (){ hitungtambah(); }, child: Text("Plus")) ], ) , ); } }
关键修改说明:
- 移除冗余的
String Value变量,直接将成员变量value初始化为100,匹配你预期的初始值要求。 - 删除
hitungtambah方法中重新声明的局部value变量,确保setState操作的是State类的成员变量,触发UI同步更新。
内容的提问来源于stack exchange,提问作者Razer
相关产品推荐
相关产品推荐

