flutter - [Flutter]Layout/Build Container 基于其兄弟部件的大小(两个部件都是 Column 的子级)
问题描述
我有一个像这样的小部件布局:
这是它的代码:
Column(
children: [
Row(
mainAxisSize: MainAxisSize.min,
children: [
Icon(Icons.lightbulb_outline),
SizedBox(
width: 4,
),
Text(
'Something something something',
style: kTextRegularW500,
),
],
),
Padding(
padding: const EdgeInsets.only(top: 13.0),
child: Container(
padding: EdgeInsets.symmetric(
vertical: 17,
),
decoration: BoxDecoration(
color: Colors.black,
borderRadius: BorderRadius.circular(16),
),
child: Center(
child: Text(
'Next',
style: TextStyle(
color: Colors.white,
),
),
),
),
),
],
)
问题:
如何使“按钮”小部件(Padding
列中的第二个小部件)与其上方的(列的第一个小部件)具有相同的宽度Row
?
我试过的:
我只是将一个固定宽度添加到该Container
渲染为按钮,结果如下:
这是代码:(我只附加了Container
它的(按钮)部分)
Container(
width: 300,
padding: EdgeInsets.symmetric(
vertical: 17,
)
甚至添加一个固定宽度来Container
实现我想要的,但它只是针对这种特殊情况而固定的......如果按钮上方的文本变长,我将回到我最初面对的地方......
所以,我能想出的唯一解决方案是找到一种方法使其Container
宽度与上面的宽度相同Row
,或者从兄弟小部件获取大小然后应用它,但即使经过数小时的搜索,我也不知道如何。 ..
或者如果您有任何其他方法可以使 button( Container
) 与 的大小相同Row
,欢迎分享。
解决方案
用IntrinsicWidth
IntrinsicWidth(
child: Column(
children: [
Row(
mainAxisSize: MainAxisSize.min,
children: [
Icon(Icons.lightbulb_outline),
SizedBox(
width: 4,
),
Text(
'Something something something something',
// style: kTextRegularW500,
),
],
),
Padding(
padding: const EdgeInsets.only(top: 13.0),
child: Container(
padding: EdgeInsets.symmetric(
vertical: 17,
),
decoration: BoxDecoration(
color: Colors.black,
borderRadius: BorderRadius.circular(16),
),
child: Center(
child: Text(
'Next',
style: TextStyle(
color: Colors.white,
),
),
),
),
),
],
),
)
推荐阅读
- java - 在我自己的 android 应用程序上使用 VLC 媒体播放器
- spring - 每次我将项目作为 spring 应用程序运行时,spring data jpa 都会附加 create 语句,
- javascript - d3.js 棒棒糖图表 - 动画
- javascript - React Native - 模态触发按钮始终可见
- python - Pyspark - 将两列中的值转换为字典
- python - TF2、Tensorflow Probability 随机种子生成器和 VAE
- node.js - 节点缓存是否使用锁
- python - 使用python读取vb文件时无法识别的符号
- php - PHP MYSQL ODBC 连接成功但未检索数据
- amazon-web-services - 如何将 AWS 应用程序负载均衡器和 NAT 网关配置为具有公共 IP