如何使用FutureBuilder获取可滚动的部件集,而不会出现溢出问题?
如何使用FutureBuilder获取可滚动的部件集,而不会出现溢出问题?
我的代码中有一个FutureBuilder,根据从Firestore获取的数据生成一组widget列表。我希望屏幕可以滚动而没有任何溢出错误。这是我的代码:
FutureBuilder( future: FirebaseFirestore.instance.collection('Assignments').get(), builder: (BuildContext context, AsyncSnapshot snapshot) { if (snapshot.hasData) { return Column( children: snapshot.data?.docs.map((doc) { return Column( children: [ Subject( dataMap: doc.data() as Map<dynamic, dynamic>), Divide() ], ); }).toList() ?? [], ); } else { // or your loading widget here return Text("Loading...."); } }, ),
这是我在屏幕上得到的输出:
我希望屏幕可以滚动。我已经使用了SingleChildScrollview,但是那会让整个屏幕都可以滚动,而我只希望“Assignment”标题下面的widget列表可以滚动。
admin 更改状态以发布 2023年5月22日
您可以使用ListView
替代多个Column
。由于ListView
是可以滚动的,所以您不应该遇到任何溢出小部件的问题。 ListView.Builder
构造函数需要itemCount
和一个builder
,在其中您只需为每个ListItem
返回一个小部件即可。
然后您的FutureBuilder
如下所示:
FutureBuilder( future: FirebaseFirestore.instance.collection('Assignments').get(), builder: (BuildContext context, AsyncSnapshot snapshot) { if (snapshot.hasData) { return ListView.builder( itemCount: snapshot.data.docs.length, itemBuilder: (context, index) { return Column( children: [ Subject( dataMap: snapshot.data.docs[index].data() as Map ), Divide() ], ); }, ); } else { // or your loading widget here return Text("Loading...."); } }, ),