首页 > 解决方案 > RenderBox 未布置:RenderRepaintBoundary#622c4 relayoutBoundary=up2 NEEDS-PAINT Flutter

问题描述

我是 Flutter 的新手,我正在屏幕上获取和显示数据,我有 2 个来自 api 的 ListView 数据,我正在使用 Future Builder。我不能在一个容器中放置两个 FutureBuilder 我必须使用这个错误发生

RenderBox was not laid out: RenderRepaintBoundary#622c4 relayoutBoundary=up2 NEEDS-PAINT

这是我的代码

Column(
          children: <Widget>[
            FutureBuilder <List<Users>>(
            future: users,
            builder: (context, snapshot) {
              if (snapshot.hasData) {
                print('True');
                List<Users> data = snapshot.data!;
                return 
                  ListView.builder(
                  itemCount: 1,
                  itemBuilder: (BuildContext context, int index) {
                    var family = data[index].mobile;
                    var family_id = data[index].family_id;
                    return Card(
                      child: Column(
                        children: <Widget>[
                          Padding(padding:EdgeInsets.all(10)),
                          ListTile(
                            title: Text(family),
                            subtitle: Text('Id:$family_id'),
                          ),
                        Padding(padding:EdgeInsets.all(10)),
                        ],
                      ),
                    );
                  }
                );
              } else if (snapshot.hasError) {
                return Text("${snapshot.error}");
              }else{
                return Container(child: Text('Null'),);
              }
            }
            ),
            FutureBuilder <List<FamilyMembers>>(
            future: futureData,
            builder: (context, snapshot) {
              if (snapshot.hasData) {
                List<FamilyMembers> data = snapshot.data!;
                return 
                  ListView.builder(
                  itemCount: data.length,
                  itemBuilder: (BuildContext context, int index) {
                    var name = data[index].name;
                    var age = data[index].age;
                    return Card(
                      child: Column(
                        children: <Widget>[
                          Padding(padding:EdgeInsets.all(10)),
                          ListTile(
                            title: Text(data[index].name),
                            subtitle: Text('Name:$name \nAge:$age'),
                          ),
                        Padding(padding:EdgeInsets.all(10)),
                        ],
                      ),
                    );
                  }
                );
              } else if (snapshot.hasError) {
                return Text("${snapshot.error}");
              }else{
                return Container();
              }
            }
            )

      ]
      )

我正在尝试解决此错误,但每次更改都会出现此问题。谢谢

标签: flutter

解决方案


列表需要一个高度和一个宽度才能呈现尝试将 FutureBuilder 包装在 Expanded 中,或者用具有您希望列表具有的特定高度和宽度的 Container 包装它。(与两个列表相关)

试试这个,告诉我它是否有效:)


推荐阅读