flutter - 更新 Flutter 上的部分 UI

标签 flutter

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

我有这个用户界面: enter image description here

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

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

(取自这个答案: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();
            });
         }
     )

 }

关于flutter - 更新 Flutter 上的部分 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59225626/

相关文章:

json - Flutter - 解析 Json 的最佳方法是什么?

Flutter 最佳架构模式

Flutter web 错误 pluginConstants ['isCrashlyticsCollectionEnabled' ] != null

flutter - 任务 ':app:signReleaseBundle' 执行失败

android - 为什么在 flutter 中的 build 者在这里破裂

flutter - 在Flutter中处理Firebase Data推送通知

Gridview限制子内容

Flutter Run - 失去与设备的连接(模拟器 iPhone 11 Pro Max)

flutter - 如何在 Flutter 中触摸空白区域时使 GestureDetector 也能工作

dart - 如果手势超出Flutter中的容器范围,如何取消手势