更新 Flutter 上的部分 UI

2023-12-25

要更新整个小部件很容易,我们调用SetState()我们进行了更改,但是如果我不需要更新所有内容会怎样?

I have this UI: enter image description here

当我加载该页面时,我从应用程序提供商处获取元素数组:

Widget build(BuildContext context) {
   var elements = shuffle(Provider.of<GameSettings>(context).set.elements);

(摘自这个答案:Dart 中的 List.shuffle() ? https://stackoverflow.com/questions/13554129/list-shuffle-in-dart)

我需要context为了获取我保存的元素列表,这就是我把它放在那里的原因。

我还有需要刷新的进度条:

void _startTimer() {
    var sub = countDownTimer.listen(null);
    sub.onData((duration) {
      setState(() {
        _current = _start + duration.elapsed.inSeconds;
      });
    });

    sub.onDone(() {
      sub.cancel();
    });
  }
}

但当我刷新它时,我也在刷新我的元素。发生这种情况是因为整个小部件正在被调用,所以我的shuffle功能。

我尝试将进度按钮移动到不同的小部件,但仍然相同。我怎么能刷新这个进度呢?


您可以使用 StatefulBuilder()

你的代码将是:

void _startTimer() {
    StatefulBuilder(
        builder: (BuildContext context, setState){
           var sub = countDownTimer.listen(null);
           sub.onData((duration) {
              setState(() {
                   _current = _start + duration.elapsed.inSeconds;
                });
            });

            sub.onDone(() {
             sub.cancel();
            });
         }
     )

 }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更新 Flutter 上的部分 UI 的相关文章

随机推荐