扑腾:用列表视图填充屏幕的剩余空间。

问题描述 投票:0回答:1

我有这个小部件树。

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'

我把 列表视图 变成 扩大的 但我得到了同样的错误,我如何能填补剩余空间与列表视图?

flutter flutter-layout
1个回答
0
投票

ListView.builder 内的Expanded,这样它将填补空间。


0
投票

Flex和Expanded可以帮助你在这种情况下。

Flex(
direction: Axis.vertical,
children: <Widget>[
Expanded(child: ListView.builder(//IMPLEMENT YOUR LIST//))
])

0
投票

我改变了我的widget树。

Scaffold
  AppBar
  Column
    Expanded
      FutureBuilder
       Container
       Column
          children: <Widget>[
          Row(),
          .....
          Expanded
             UserCommentsWidget(id)
          ]

现在一切都OK了。 谢谢大家

© www.soinside.com 2019 - 2024. All rights reserved.