flutter - 如何强制 ListView 不连续扩展超过其他小部件(Flutter)
问题描述
我正在为此苦苦挣扎,无法在搜索引擎上很好地描述它,所以这是我的问题:我有一个包含两个 Expanded 的行,flex: 5
旨在拥有两个宽度相等的单元格;在第一个单元格内,我有一个列(包含一个表格和一个按钮);在第二个单元格内我有一个列(包含一个 ListView 和一个按钮);一旦其内容高于第一个单元格的固有高度,我想强制 ListView 变得可滚动,因此第二个单元格的高度永远不会高于第一个单元格的高度。
Row(
children: [
Expanded(
flex: 5,
child: Column(
children: [
DataTable(),
ElevatedButton()
]
), // Column
), // Expanded
Expanded(
flex: 5,
child: Column(
children: [
ListView(),
ElevatedButton()
]
), // Column
) // Expanded
]
) // Row
我迷失了自己shrinkWrap: true
在 ListView、IntrinsicHeight()
Row 周围等尝试的东西。
谢谢您的帮助!
编辑:
我发现的解决方案是通过聆听第一个单元格的大小变化并将其高度设置为第二个单元格的高度(感谢这个 Medium 链接)来解决问题。即使我宁愿采用更清洁的方式,它似乎也能正常工作。
这是我的代码目前的样子:
Row(
children: [
Expanded(
flex: 5,
child: WidgetSize(
onChange: (size) {
if (size != null)
setState(() => heightOfTable = (size as Size).height);
},
child: Column(
children: [
DataTable(),
ElevatedButton()
]
), // Column
), // WidgetSize
), // Expanded
Expanded(
flex: 5,
child: Container(
height: heightOfTable,
child: Column(
children: [
ListView(),
ElevatedButton()
]
), // Column
), // Container
) // Expanded
]
) // Row
如果你有更好的想法,请告诉我!:)
解决方案
我认为您可以尝试将ListView
内部包裹起来Container
并给出合适的height
宽度。
Row(
children: [
Expanded(
flex: 5,
child: Column(
children: [
DataTable(),
ElevatedButton()
]
), // Column
), // Expanded
Expanded(
flex: 5,
child: Column(
children: [
Container(
height:,
width:,
child: ListView()),
ElevatedButton()
]
), // Column
) // Expanded
]
) // Row
推荐阅读
- angular - 两个 ngFor 中的 ngModel - Angular/Ionic
- wpf - WPF/CaliburnMicro 将一个属性绑定到两个表单控件
- haskell - 如何使用 take 和 drop while 来修复这个 haskell 函数?
- c# - 任务开始延迟
- portaudio - 正确解码作品
- dart - 如何使用来自不同类的变量
- javascript - 如何查找数组内的对象是否不为空?
- php - 对于带有 URL 图像的循环检查数组,但不检测确实存在哪些图像
- c# - C# / WPF 中的进度环(椭圆帮助)
- javascript - 如果耳机刚刚拔出,如何在浏览器中检查?