我有这个小部件树。
Scaffold
AppBar
Column
Center
SingleChildScrollView
FutureBuilder
Container
Flex
direction: Axis.vertical,
children: <Widget>[
Row(),
.....
UserCommentsWidget(id)
]
在... UserCommentsWidget
我使用一个未来的建设者从Web服务加载数据,并显示一个列表视图。
Widget build(BuildContext context) {
return FutureBuilder<UserCommentModel>(
future: _userCommentsFuture,
builder: (ctx, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return Center(
child: CircularProgressIndicator(),
);
} else if (!snapshot.hasError && snapshot.hasData) {
return snapshot.data.data.list.length != 0
? Column(
children: <Widget>[
Row(),
Container(
ListView.builder(
itemCount: snapshot.data.list.length,
itemBuilder: (ctx, index) {
return
commentItems(snapshot.data.data.list[index]);
}),
)
],
)
但我得到了这个错误。
════════ Exception caught by rendering library ═════════════════════════════════════════════════════
RenderBox was not laid out: RenderFlex#c406c relayoutBoundary=up15 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
'package:flutter/src/rendering/box.dart':
Failed assertion: line 1694 pos 12: 'hasSize'
我把 列表视图 变成 扩大的 但我得到了同样的错误,我如何能填补剩余空间与列表视图?
把 ListView.builder
内的Expanded,这样它将填补空间。
Flex和Expanded可以帮助你在这种情况下。
Flex(
direction: Axis.vertical,
children: <Widget>[
Expanded(child: ListView.builder(//IMPLEMENT YOUR LIST//))
])
我改变了我的widget树。
Scaffold
AppBar
Column
Expanded
FutureBuilder
Container
Column
children: <Widget>[
Row(),
.....
Expanded
UserCommentsWidget(id)
]
现在一切都OK了。 谢谢大家