【问题标题】:How to change displayed data the best way in Flutter如何在 Flutter 中以最佳方式更改显示的数据
【发布时间】:2020-12-14 20:12:51
【问题描述】:

我想更改 Flutter 中显示的数据?我写了一个函数changeDataForTest(只是一个测试事件的函数),它应该改变Text中显示的数据。 但如果我点击它,它不会改变。如果我添加 (context as Element).reassemble(); 显示的字符串的值只会改变调用方法后。这是正常的方法吗,还是有更顺畅的方法来解决我的问题?

dynamic changeDataForTest(neuerWert) {
    this.data = neuerWert;
  }



Column(
      children: [
        Center(
          child: Text(
            this.data + this.wiegehts,
          ),
        ),
        FlatButton(
          textColor: Color(0xFF6200EE),
          onPressed: () {
            changeDataForTest('neuerWert');
            (context as Element).reassemble();
          },
        )
      ],
      
    )

谢谢 卢卡斯

【问题讨论】:

  • 使用 setState(),用于 statefulWidget
  • FlatButton 说“此类已过时,请改用 TextButton。”。

标签: flutter dart


【解决方案1】:

如果您只使用一个小部件,您可以使用StatefulWidget 方法:

setState(() {
 // change your variable
})

如果您的小部件很复杂并且有很多不同的可能变量,我不建议使用setState,因为此方法每次使用时都会调用build 方法。

一个简单快速的选择是使用ValueNotifier

final myVariable = ValueNotifier(false); // where you can replace 'false' with any Object

然后,以这种方式使用它:

ValueListenableBuilder(
   valueListenable: myVariable,
   builder: (context, value, child) {
      return Text(value); // or any other use of Widgets
   },
);

myVariable.value = true; // if you're looking for to change the current value

最后,如果您的逻辑确实很复杂并且需要扩展,我建议使用 StateManagement 库,例如:

  • 提供者
  • 河谷
  • 集团
  • 其他

您可以通过以下方式找到这些库和示例:https://pub.dev

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多