flutter - setState 重建父部件,导致 FutureBuilders 中出现闪烁效果(因为它们重建了?)

标签 flutter mobile

在我的父部件中我有 2 个 FutureBuilders

图片 FutureBuilder

FutureBuilder(
              future: scannedUserBloc.getImageUrl(widget.userId),
              builder: (context, snapshot) {
                if(snapshot.connectionState == ConnectionState.done) {
                  return Container(
                      height: MediaQuery.of(context).size.height / 5,
                      width: MediaQuery.of(context).size.width / 5,
                      child: Image.network(snapshot.data)
                  );
                } else {
                  return Text("Image is loading");
                }
              }

列出 FutureBuilder

FutureBuilder(
    future: scannedUserBloc.getMembershipPrograms(widget.userId),
    builder: (context, snapshot) {
      if(snapshot.connectionState == ConnectionState.done) {
        var programs = snapshot.data as List<MembershipPrograms>;
        if(programs.length > 0) {
          hasPrograms = true;
          return programsRowWidget(context, programs);
        } else {
          return noProgramsColumnWidget(context);
        }
      }else {
        //loading indicator
        return Container(

        );
      }
});

当我想点击 ListView 中的一个项目时,我希望它改变它的边框,所以它看起来像是被选中了。为此,我需要调用 setState,但当我调用它时,它会导致 FutureBuilders 闪烁。发生这种情况是因为(我假设)小部件重建,这导致 FutureBuilders 对后端进行异步调用,使项目暂时消失,直到再次获取项目。

是否有任何解决方法或修复方法?一般而言,我采用的方法是否有问题?

最佳答案

您可以将 ListView 小部件分离到不同的 Stateful 类。然后从那里调用 setState。那么FutureBuilder就不会执行多次了。

关于flutter - setState 重建父部件,导致 FutureBuilders 中出现闪烁效果(因为它们重建了?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64448984/

相关文章:

list - 无法在 flutter 中使用 socket.io 数据更新 ListView ?

firebase - getter 'instance' 没有为类型 'Firestore' 定义

http - 如何使 Http 请求和解析数据到 Flutter 中的模型类

delphi - 使用 Delphi 的 Kinvey 向客户发送推送通知?

mobile - 如何在 Flutter 中使页面背景半透明以显示上一屏幕?

Flutter Navigator 2.0 通过 Navigator() 路由

flutter - 如何从父小部件检测子部件的焦点

javascript - 在移动 Chrome 上隐藏键盘不会改变窗口高度

Android:为什么当计算量增加时整数计算比浮点计算慢很多?

web-services - 为移动设备提供数据的最佳语言/数据库/网络服务器?