【问题标题】:setState not updatingsetState 不更新
【发布时间】:2021-04-21 14:42:15
【问题描述】:

我只是无法弄清楚这种设置状态方法在颤振中有什么问题。一切似乎都还好。但是 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'),
                ],
              ),
            ),
          ),
        );
      }
    }

【问题讨论】:

    标签: flutter setstate


    【解决方案1】:

    您将text 作为build 方法中的局部变量。 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'),
                ],
              ),
            ),
          ),
        );
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-14
      • 2021-06-09
      • 2021-03-23
      • 2020-01-31
      • 2020-05-02
      • 2019-05-17
      • 2019-07-03
      • 1970-01-01
      相关资源
      最近更新 更多