在构建时获取元素的高度以适应堆栈中的元素
get height of element on buildtime to adapt element in stack
我想让我的 ListTile 的背景颜色像进度条一样。只有它的某些部分应该根据双精度值进行着色。
我使用以下代码:
InkWell(
child: Stack(
alignment: Alignment.centerRight,
children: [
Container(
width: 100.w,
child: FractionallySizedBox(
alignment: Alignment.centerLeft,
widthFactor: getAnswerScore(index),
child: Container(
color: Colors.purpleAccent,
child: Text(""),
),
)),
ListTile(
contentPadding: EdgeInsets.all(0),
title: Text("my Text",
style: TextStyle(fontSize: 14.sp),
),
leading: Radio(
activeColor: Colors.purple,
value: index,
groupValue: answer,
onChanged: (int value) {
onClick(index);
},
)),
getResultIcon(index)
],
),
onTap: () {
onClick(index);
}
);
这导致了这个(系数 0.5)
宽度设置正确(紫色容器),但我需要将高度设置为 ListTile 的高度。问题是,listTile 的高度取决于 child 标题的长度。所以这是在构建时动态设置的。
解决此问题的正确方法是什么?
我认为用 positioned 包装你的外部 Container 并将 top 和 bottom 设置为 0 可以解决你的问题。
您可以使用 ConstrainedBox 设置紫色容器的最小高度。
ConstrainedBox(
constraints: const BoxConstraints(
minHeight: 70,
),
child: Container(...),
),
您可以将 Positioned.fill
与 Container 一起使用来填充背景,并使用 FractionallySizedBox
来填充 Container 的颜色。
InkWell(
child: Stack(
alignment: Alignment.centerRight,
children: [
Positioned.fill(
child: FractionallySizedBox(
alignment: Alignment.centerLeft,
widthFactor: sliderValue,
child: Container(
color: Colors.purpleAccent,
child: Text(""),
),
),
),
要有部分进度条,请使用 Positioned
小部件并提供顶部和底部 0。
InkWell(
child: Stack(
alignment: Alignment.centerRight,
children: [
Positioned(
top: 0,
bottom: 0,
left: 0, // left and right is based on your max progress value
right: 100,
child: FractionallySizedBox(
alignment: Alignment.centerLeft,
widthFactor: sliderValue,
我想让我的 ListTile 的背景颜色像进度条一样。只有它的某些部分应该根据双精度值进行着色。
我使用以下代码:
InkWell(
child: Stack(
alignment: Alignment.centerRight,
children: [
Container(
width: 100.w,
child: FractionallySizedBox(
alignment: Alignment.centerLeft,
widthFactor: getAnswerScore(index),
child: Container(
color: Colors.purpleAccent,
child: Text(""),
),
)),
ListTile(
contentPadding: EdgeInsets.all(0),
title: Text("my Text",
style: TextStyle(fontSize: 14.sp),
),
leading: Radio(
activeColor: Colors.purple,
value: index,
groupValue: answer,
onChanged: (int value) {
onClick(index);
},
)),
getResultIcon(index)
],
),
onTap: () {
onClick(index);
}
);
这导致了这个(系数 0.5)
宽度设置正确(紫色容器),但我需要将高度设置为 ListTile 的高度。问题是,listTile 的高度取决于 child 标题的长度。所以这是在构建时动态设置的。
解决此问题的正确方法是什么?
我认为用 positioned 包装你的外部 Container 并将 top 和 bottom 设置为 0 可以解决你的问题。
您可以使用 ConstrainedBox 设置紫色容器的最小高度。
ConstrainedBox(
constraints: const BoxConstraints(
minHeight: 70,
),
child: Container(...),
),
您可以将 Positioned.fill
与 Container 一起使用来填充背景,并使用 FractionallySizedBox
来填充 Container 的颜色。
InkWell(
child: Stack(
alignment: Alignment.centerRight,
children: [
Positioned.fill(
child: FractionallySizedBox(
alignment: Alignment.centerLeft,
widthFactor: sliderValue,
child: Container(
color: Colors.purpleAccent,
child: Text(""),
),
),
),
要有部分进度条,请使用 Positioned
小部件并提供顶部和底部 0。
InkWell(
child: Stack(
alignment: Alignment.centerRight,
children: [
Positioned(
top: 0,
bottom: 0,
left: 0, // left and right is based on your max progress value
right: 100,
child: FractionallySizedBox(
alignment: Alignment.centerLeft,
widthFactor: sliderValue,