setState 不更新

setState not updating

我就是想不通flutter中这个set state的方法有什么问题。一切似乎都还好。但是文本不会在 onPressed 上更新。

class NetBalanceWidget extends StatefulWidget {
  @override
  _NetBalanceWidgetState createState() => _NetBalanceWidgetState();
}

    class _NetBalanceWidgetState extends State<NetBalanceWidget> {
      @override
      Widget build(BuildContext context) {
        String text = 'NetBalance-Amount';
        return RawMaterialButton(
          onPressed: () {
            setState(() {
              text = 'It works';
            });
          },
          child: Container(
            height: 80.0,
            child: Center(
              child: Row(
                mainAxisAlignment: MainAxisAlignment.spaceAround,
                children: [
                  Text(text),
                  Text('0.00'),
                ],
              ),
            ),
          ),
        );
      }
    }

您在 build 方法中将 text 作为局部变量。 setState 本质上只是再次调用 build,并将 text 的值重置为默认值 'NetBalance-Amount'。

将其声明移到 build 之外:

class _NetBalanceWidgetState extends State<NetBalanceWidget> {
  String text = 'NetBalance-Amount';

  @override
  Widget build(BuildContext context) {
    return RawMaterialButton(
      onPressed: () {
        setState(() {
          text = 'It works';
        });
      },
      child: Container(
        height: 80.0,
        child: Center(
          child: Row(
            mainAxisAlignment: MainAxisAlignment.spaceAround,
            children: [
              Text(text),
              Text('0.00'),
            ],
          ),
        ),
      ),
    );
  }
}