dart Flutter-使用计时器同时更新多个小部件

lx0bsm1f  于 2023-06-27  发布在  Flutter
关注(0)|答案(1)|浏览(109)

我有一个ListView,里面有一堆显示倒计时的小部件。我设法为每个小部件创建了一个定时器,以每秒更新,但我的目标是有一个主时钟来管理它们。
但问题是,我不知道如何从另一个脚本同时访问我的小部件。我怀疑这与状态管理有关(我是新手,有人建议我把这个主题放在一开始)。
目前为止我拥有的代码:

_timer = Timer.periodic(
  const Duration(seconds: 1),
  (timer) {
    setState(() {
      // magically update every widget inside ListView here..
    });
  },

真的很想听听你的想法,谢谢!

xtupzzrd

xtupzzrd1#

下面是示例代码,供您参考:

// Create a list to store the countdown values for each widget
List<int> countdownValues = [10, 20, 30]; // Example initial values

// Inside your build method
ListView.builder(
  itemCount: countdownValues.length,
  itemBuilder: (BuildContext context, int index) {
    // Use countdownValues[index] to display the countdown in each widget
    return YourWidget(countdownValue: countdownValues[index]);
  },
),

// Set up the master clock timer
Timer.periodic(
  const Duration(seconds: 1),
  (timer) {
    setState(() {
      // Update the countdown values for each widget
      for (int i = 0; i < countdownValues.length; i++) {
        countdownValues[i]--;
      }
    });
  },
),

您可以看到,这里的countdownValues列表存储了ListView中每个小部件的倒计时值。ListView的builder中的itemBuilder根据列表中的倒计时值创建小部件。然后,在Timer回调中,倒计时值递减,并调用setState以触发使用更新的倒计时值重建ListView。因此,所有小部件将使用主时钟同时更新。
希望这就是你要找的东西!继续飘!

相关问题