将控件放在Flutter中的ListView上方

Has*_*sef 0 dart flutter flutter-sliver flutter-layout

下面的代码对我来说很好,可以从Firestore调用和显示数据:

return ListView(
 padding: const EdgeInsets.only(top: 20.0),
 children: snapshot.map((data) => _buildListItem(context, data)).toList(),
);
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试将其放在一列中,然后在其上方添加另一个小部件,它将失败并给出stack overflow

return Column(
    children: <Widget>[
    Text('Hellow'),
  ListView(
  padding: const EdgeInsets.only(top: 20.0),
  children: snapshot.map((data) => _buildListItem(context, data)).toList(),
)]);
Run Code Online (Sandbox Code Playgroud)

Jor*_*ies 7

你需要把你的ListView内部Expanded构件,因此它知道它有多大的空间填满。

return Column(
    children: <Widget>[
      Text('Hellow'),
      Expanded(
        child: ListView(
          padding: const EdgeInsets.only(top: 20.0),
          children:
              snapshot.map((data) => _buildListItem(context, data)).toList(),
        ),
      ),
    ],
  );
Run Code Online (Sandbox Code Playgroud)

  • 正确答案。如果您希望文本也可以滚动,那么您必须将列包装在 CustomScrollView 中并使用 Sliverlist。 (2认同)