flutter - 无法使用 Flutter Stateful 小部件

标签 flutter dart setstate statefulwidget flutter-state

我是拉维。我对 Flutter 还很陌生,但对编程并不陌生。我一直在使用 Flutter 有状态的小部件。由于我是这个 SDK 的新手,我无法弄清楚为什么我的状态没有得到更新。我所做的只是编写了一些代码,每当单击按钮时就会增加一个数字,而且我知道我们必须使用有状态的小部件才能实时更新任何数据。但我的代码无法正常工作。谁能帮我解决这个问题。

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
int level = 0;
return MaterialApp(
  home: Scaffold(
      appBar: AppBar(
        title: Text('Stateful Widget'),
      ),
      body: Center(
        child: Column(
          children: [
            Text('$level'),
            RaisedButton(
              child: Text('Increment'),
              onPressed: () {
                setState(() {
                  level = level + 1;
                  print(level);
                });
              },
            ),
          ],
        ),
      )),
);
}
}

Console: 
Performing hot reload...
Syncing files to device sdk gphone x86 arm...
Reloaded 1 of 513 libraries in 1,722ms.
I/flutter ( 8886): 1

Flutter Stateful widget demo

最佳答案

问题出在 level 变量的范围上。它不应该在您的 build 方法中,而应该在您的 class

class _MyAppState extends State<MyApp> {
//Moved level here.
  int level = 0;

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Stateful Widget'),
        ),
        body: Center(
          child: Column(
            children: [
              Text('$level'),
              RaisedButton(
                child: Text('Increment'),
                onPressed: () {
                  setState(() {
                    level = level + 1;
                    print(level);
                  });
                },
              ),
            ],
          ),
        ),
      ),
    );
  }
}

关于flutter - 无法使用 Flutter Stateful 小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63689086/

相关文章:

Flutter 3.7 基于此命令 `flutter create --template=package <package_name>` 创建与之前(3.3)和文档不同的结果

flutter - Flutter中的setState()方法直到for循环中的最后一次调用才更新 View

flutter - 无法加载 Assets

dart - 如果手势超出Flutter中的容器范围,如何取消手势

flutter - 单击按钮在同一屏幕上显示TextField值

api - 从下拉选择中获取完整信息(Flutter/Dart)

git - 我不应该将 Flutter 项目中的哪些文件推送到远程仓库?

dart - 强制变量只能被赋值一次

javascript - 事件处理程序中的 React SetState 对于模拟数据和来自 API 的数据的行为有所不同

javascript - 将react-virtualized List的当前索引设置为状态时发生错误