颤动:用listview填充屏幕的剩余空间

时间:2020-05-09 16:53:28

标签: flutter flutter-layout

我有这个小部件树:

>>> import re
>>>
>>> fact_dic = {'': 1, 'K': 1000, 'M': 1000000}
>>>
>>> def GetFloatFromFactor( input ):
...     m = re.search( r"^(\d+(?:\.\d*)?|\.\d+)([KM]?)$", input)
...     if m != None:
...         fval = float( m.group(1) ) * fact_dic[ m.group(2) ]
...         return fval
...     else:
...         return "no match"
...
>>> GetFloatFromFactor( '3K' )
3000.0
>>> GetFloatFromFactor( '12.4M' )
12400000.0
>>> GetFloatFromFactor( '098.281' )
98.281

Scaffold AppBar Column Center SingleChildScrollView FutureBuilder Container Flex direction: Axis.vertical, children: <Widget>[ Row(), ..... UserCommentsWidget(id) ] 中,我正在使用将来的构建器从Web服务加载数据并显示列表视图:

UserCommentsWidget

但是我得到了这个错误:

  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]);
                        }),
                     )
                  ],
                )

我将 Listview 放入了 Expanded 中,但是遇到了同样的错误,如何用listview填充剩余空间?

3 个答案:

答案 0 :(得分:0)

ListView.builder放在展开的位置,以便填充空间。

答案 1 :(得分:0)

我将小部件树更改为此:

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

现在一切都很好。谢谢大家

答案 2 :(得分:0)

在这种情况下,Flex和Expanded可以为您提供帮助。

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