如何在其他窗口小部件中使用listview?

17 浏览
0 Comments

如何在其他窗口小部件中使用listview?

我想要在ListView中使用其他控件,但是我不知道怎么做。当我使用容器包装ListView时,我就无法显示其他控件了。请问该怎么办?

 Scaffold(   
        body: SingleChildScrollView(
          child: Column(
            children: [
              ListView.builder(),
              RaisedButton(
                child: Text('Text'),
                onPressed:(){})
])));

admin 更改状态以发布 2023年5月22日
0
0 Comments

这是因为您在Column中使用了ListView,ListView和Column都会占据可用的整个屏幕,因此我们只能在屏幕上看到ListView。要解决这个问题,我们必须将ListView缩小到其确切的大小,为此使用shrinkwrap: true

ListView.Builder(
  shrinkWrap: true,
  physics: NeverScrollableScrollPhysics(),
)

physics: NeverScrollableScrollPhysics()用于停止ListView滚动,您已添加了SingleChildScrollView(),它会滚动整个页面。

0
0 Comments

如果您正在尝试基于列表显示某些小部件,则根本不应嵌套滚动视图,Dart允许您在任何集合内部使用for,您也可以使用List.generate,或list.map与扩展操作符

Scaffold(
  body: SingleChildScrollView(
    child: Column(
      children: [
        for(final item in list) widget,
        RaisedButton(child: Text('Text'), onPressed: () {})
      ],
    ),
  ),
);

Scaffold(
  body: SingleChildScrollView(
    child: Column(
      children: [
        ...list.map((item)=> widget).toList(),
        RaisedButton(child: Text('Text'), onPressed: () {})
      ],
    ),
  ),
);

Scaffold(
  body: SingleChildScrollView(
    child: Column(
      children: [
        ...List.generate(list.length, (index)=> widget).toList(),
        RaisedButton(child: Text('Text'), onPressed: () {})
      ],
    ),
  ),
);

0