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

Flutter代码点击按钮后屏幕数字不更新,求排查问题

问题分析与修复

你的代码有三个核心问题导致数字始终不变:

  • 变量作用域错误:把int number = 0;放在了build方法内部,每次Flutter重新构建Widget时,这个变量都会被重置为0。必须把它提升为_MyAppState类的成员变量,这样状态才能在多次构建之间保留。
  • 参数重名+未触发状态更新:onTap回调里的(int number)是回调的局部参数,和你的计数变量重名了,而且直接number++只是修改了这个局部参数,根本没碰实际的计数变量。就算改对了变量,也必须用setState包裹修改操作,这样Flutter才知道要重新渲染UI。
  • (额外优化)BottomNavigationBar的两个item标签都是home,虽然不影响功能,但可以改成更合理的名字,比如第一个叫"增加"。

修复后的代码

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends Stateful Widget {
  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  // 将变量提升为类成员,保留状态
  int number = 0;

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text(
            "Flutter",
            style: TextStyle(
              fontSize: 22,
              fontWeight: FontWeight.bold,
            ),
          ),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              Text(
                "$number",
                style: TextStyle(
                  fontSize: 55,
                  fontWeight: FontWeight.bold,
                ),
              )
            ],
          ),
        ),
        bottomNavigationBar: BottomNavigationBar(
          items: [
            BottomNavigationBarItem(icon: Icon(Icons.add), label: '增加'),
            BottomNavigationBarItem(icon: Icon(Icons.home), label: '首页'),
          ],
          // 修正onTap:用setState修改成员变量,避免参数重名
          onTap: (index) {
            // 可根据index判断点击的按钮,这里只让第一个按钮触发增加
            if (index == 0) {
              setState(() {
                number++;
              });
            }
          },
        ),
      ),
    );
  }
}

修改后,点击底部第一个按钮时,数字就会正常递增了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 08:20:50