我的可滚动列表视图有什么问题?
What is wrong with my scrollable listview?
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')),
),
],
),
])));
}
}```
在您的列表视图中使用 physics: ScrollPhysics(),
以获得更详细的答案,请参阅下面的 link
问题是您将无限高的 ListView
放在高度有限的 Column
小部件中,因此 ListView
不知道如何呈现自身。
由于滚动功能,ListView
具有无限高度,因此它可以滚动无限数量的项目。
Column
有高度限制,所有可用的屏幕高度,所以限制在这个高度。
最简单的解决方案之一是将 ListView
包装在 Expanded
小部件中,以告诉 ListView
仅采用所有可用高度,这就是 Expanded
小部件做。
如果以后有人遇到和我一样的问题,这就是我修复代码的方法:
对于子ListView,使用参数:
shrinkWrap: true,
physics: ClampingScrollPhysics(),
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')),
),
],
),
])));
}
}```
在您的列表视图中使用 physics: ScrollPhysics(),
以获得更详细的答案,请参阅下面的 link
问题是您将无限高的 ListView
放在高度有限的 Column
小部件中,因此 ListView
不知道如何呈现自身。
由于滚动功能,ListView
具有无限高度,因此它可以滚动无限数量的项目。
Column
有高度限制,所有可用的屏幕高度,所以限制在这个高度。
最简单的解决方案之一是将 ListView
包装在 Expanded
小部件中,以告诉 ListView
仅采用所有可用高度,这就是 Expanded
小部件做。
如果以后有人遇到和我一样的问题,这就是我修复代码的方法:
对于子ListView,使用参数:
shrinkWrap: true,
physics: ClampingScrollPhysics(),