【问题标题】:Expanded Widget occupies the whole screenExpanded Widget 占据整个屏幕
【发布时间】:2021-03-11 18:00:52
【问题描述】:

当我在列或行中使用带有 ListView 的 Expanded 小部件时,它会占据整个屏幕并且不适合列表的大小。有什么方法可以使我的列或行与 ListView 返回的列表的确切大小相匹配?我不希望它占据整个屏幕,因为我有两个按钮被推到屏幕的末尾,因为 Expanded 小部件占用了不必要的空间。如果没有 Expanded 小部件,Listview 似乎无法工作。

【问题讨论】:

  • 以下小部件树 Column[Expanded>ListView, Row[Button, Button]] 应该可以工作:您将在底部看到一个列表视图和 2 个按钮
  • 底部仍然溢出。 Column[Row[Flexible(flex:2), Flexible(flex:3, child: Container>Column[Text,Listview])], Row[Button, Button]] 这是我正在使用的小部件树。
  • 列表视图必须是扩展的子视图
  • 我试过了,但是容器的断言 hasSize 失败

标签: flutter flutter-layout flutter-listview


【解决方案1】:

您有 3 个选项来解决此问题:

第一种方法:删除Expanded,使用ListView中的shrinkWrap属性,设置为true,这是最简单的方法,但是有一些缺点,请检查出Flutter official docs for more details.

第二种方式:删除Expanded,将其替换为SizedBoxContainer,并设置一个显式的height,如300。

第三种方式:使用CustomScrollView作为你的身体,使用SliverListView而不是ListView和使用SliverToBoxAdapterRow作为一个孩子,请阅读Flutter official docs for more detail关于使用 Slivers

【讨论】:

  • 你有资源吗,我可以从哪里关注 sliverlist?另外,您认为 sliverlist 会解决这个问题吗? [stackoverflow.com/questions/65048354/…
  • 你可以分享你提到的第三种方式的小部件树吗?
猜你喜欢
  • 1970-01-01
  • 2019-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多