You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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"))
        ],
      ) ,
    );
  }
}

关键修改说明:

  1. 移除冗余的String Value变量,直接将成员变量value初始化为100,匹配你预期的初始值要求。
  2. 删除hitungtambah方法中重新声明的局部value变量,确保setState操作的是State类的成员变量,触发UI同步更新。

内容的提问来源于stack exchange,提问作者Razer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 23:50:24