我想构建一个可滚动页面,其中列出了不同的小部件(在列表视图中)。基本上,我的想法是进行以下设置:
SingleChildScrollView (Container (Column (... Expanded( ListView))))
然而,这仅适用于容器的固定高度。有什么方法可以根据列表视图显示的小部件数量动态更改容器的高度吗?
PS:我使列表视图不可滚动,因为整个页面已经可以通过 SingleChildScrollView 滚动。
希望有人可以在这里提供帮助。
非常感谢,尼古拉斯
代码:
class _ProfileState extends State<Profile> {
@override
Widget build(BuildContext context) {
return SingleChildScrollView(
child: Container(height: 2000, child:
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Expanded(child: PostList()),
],),),);}}
和:
class _PostListState extends State<PostList> {
@override
Widget build(BuildContext context) {
final postData = Provider.of<List<PostData>>(context) ?? [];
if (postData != null) {
return ListView.builder(
physics: const NeverScrollableScrollPhysics(),
itemCount: postData.length,
itemBuilder: (context, index) {
return PostTile (postData: postData[index]);
},);
} else {
return Text('loading'); // Check if necessary
}}}
为了完成您在这里寻找的内容,您可能应该将 更改Listiew
为 aColumn
并删除Container
.
像这样的东西:
class _ProfileState extends State<Profile> {
@override
Widget build(BuildContext context) {
return SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
PostList(),
],),);}}
class _PostListState extends State<PostList> {
@override
Widget build(BuildContext context) {
final postData = Provider.of<List<PostData>>(context) ?? [];
if (postData != null) {
return Column(
children: ...postData.map((el) => PostTile (postData: el))
);
} else {
return Text('loading'); // Check if necessary
}}}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句