flutter - 如何在 Flutter 中随 Chip inside Wrap 一起缩放芯片布局框
问题描述
在 Wrap 内部,我有一组 StatelessWidget 表示标签。现在,子小部件只返回一个 Chip。我的 Tag 小部件的构建方法如下所示:
Widget build(BuildContext context) {
return Chip(
label: Text('#the-tag-name'));
}
Chips 渲染如下:
我想渲染更小的芯片,所以按照这里的建议,我已将其更新为:
Widget build(BuildContext context) {
return Transform(
transform: Matrix4.identity()..scale(0.8),
child: Chip(
label: Text('#the-tag-name')),
);
}
这是结果:
我想保留芯片之间的初始间距,但似乎转换并未改变芯片的原始布局大小:
调试油漆在每个芯片的右侧和底部显示了额外的非缩放填充。有什么办法可以去掉这个吗?
解决方案
我的建议是不要使用Transform
. 它可能导致意想不到的后果。
您的Chip
填充不会变小的原因是它受到材料规格的限制。可点击小部件具有最小tapTarget
尺寸。materialTapTargetSize
您可以通过查看芯片上的来测试这一点。
CMD+点击shringWrap
,你会看到它说:“将点击目标尺寸缩小到材料规格提供的最小值。”
Chip(
label: Text('#the-tag-name',
style: TextStyle(fontSize: 10.0)),
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
),
所以如果你真的需要缩小你的小部件,你最好的选择是走另一条路。可能通过使用RawMaterialButton
这样的:填充和 textSize 可以根据需要进行调整。
RawMaterialButton(
onPressed: () {},
constraints: BoxConstraints(),
padding: EdgeInsets.fromLTRB(8.0, 4.0, 8.0, 4.0),
child: Text(
'#the-tag-name',
style: new TextStyle(fontSize: 12.0),
),
shape: RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(18.0),
),
fillColor: Colors.grey[300],
),
推荐阅读
- java - 为什么我的数组没有在其中添加字符?
- angular - Angular compiler.js:2175 未捕获错误:为组件指定的模板不是字符串
- c# - 如何上传文件并查看进度条?
- java - Integer.toString() 与 Integer.parseInt()
- javascript - 为什么我的 HTML 文件无法从源模块中找到 javascript 函数?
- java - 为什么我的应用程序中没有显示选项菜单?
- html - 如何修复 Flex 页脚错误 IE 11
- sql - 数据工作室如何将可重复列读取为单个记录的值?
- bloomberg - 有没有人发现使用 Pdblp 或其他 Python 包调用 Bloomberg BQL API?
- c - C : getchar() 和 putchar()