0

Flutter 的新手,试图制作一个包含长列表视图的可滚动页面。我尝试了一些我在不同的 SO 页面上读过的不同的东西,所以我的代码可能看起来很臃肿。我不知道为什么即使页面显示正常,并且显示了最后一个 ListTile 的图像,但我无法向下滚动屏幕以查看该图像的其余部分。

class About extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        backgroundColor: Colors.amberAccent,
        appBar: AppBar(
          title: Text('About this App'),
          backgroundColor: Colors.lightGreen[400],
          centerTitle: true,
        ),
        body: SingleChildScrollView(
            scrollDirection: Axis.vertical,
            child: Column(
                mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                children: <Widget>[
                  Text(
                      'The following people helped made my first app possible:',
                      textAlign: TextAlign.center,
                      style: TextStyle(
                          fontSize: 20,
                          color: Colors.black,
                          fontWeight: FontWeight.bold)),
                  ListView(
                    shrinkWrap: true,
                    padding: EdgeInsets.all(15.0),
                    children: <Widget>[
                      ListTile(
                        leading: Text('Me'),
                        title: Text(
                            'a little about myself'),
                      ),
                      ListTile(
                        leading: Text('Coworker'),
                        title: Text(
                            'Contribution made by coworker'),
                      ),
                      ListTile(
                        leading: Text('Friend'),
                        title: Text(
                            'Message about friend'),
                      ),
                      ListTile(
                        title: SizedBox(
                            height: 500.0,
                            width: 500.0,
                            child: Image.asset('images/friend.jpeg')),
                      ),
                    ],
                  ),
                ])));
  }
}```
4

3 回答 3

2

在您的 Listview 中使用physics: ScrollPhysics(),以获得更详细的答案,请参阅下面的链接

如何在 Flutter 中实现嵌套 ListView?

于 2020-08-22T22:44:10.783 回答
0

问题是你将一个ListView高度无限的小部件放在一个高度Column有限的小部件中,所以ListView它不知道如何呈现自己。

由于ListView滚动功能,它具有无限的高度,因此它可以滚动无限数量的项目。

有一个有限的Column高度,屏幕的所有可用高度,所以它被限制在这个高度。

最简单的解决方案之一是将小部件包装在ListView内部Expanded以告诉它ListView仅采用所有可用高度,这就是Expanded小部件的作用。

于 2020-08-23T04:10:13.337 回答
0

如果将来有人和我有同样的问题,这就是我修复代码的方法:

对于子 ListView,使用参数:

shrinkWrap: true,
physics: ClampingScrollPhysics(),
于 2020-08-23T17:47:00.963 回答