flutter - 颤振基线文本对齐与 Wrap 类
问题描述
使用Row
该类,我可以使文本基线与此属性对齐:
crossAxisAlignment: CrossAxisAlignment.baseline,
Wrap
但是这个属性似乎在课堂上不可用。使用Wrap
而不是的好处Row
是它允许多行文本。而Row
类强制内容保持在一行中。
如何Wrap
在使文本基线对齐的同时保持 的好处?
解决方案
我也有这个问题。Flutter Repo 中有一个未解决的问题来解决这个问题。虽然内置的解决方案还没有实现,但我确实想出了一个稍微有点hacky的解决方法。
基本上,取决于您的字体和您的需求...
设置你Wrap()
有crossAxisAlignment: WrapCrossAlignment.end,
。然后你可以让你Wrap()
的 a 的一个孩子Column()
有一个SizedBox()
作为最低的孩子,你需要让它看起来像你的文本使用不存在的高度WrapCrossAlignment.baseLine
问题示例:
编码:
class WrapBaselineHackWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return DecoratedBox(
decoration: BoxDecoration(border: Border.all(color: Colors.red)),
child: Wrap(
crossAxisAlignment: WrapCrossAlignment.end,
spacing: 8,
children: [
Text(
'\$50,000.00',
style: TextStyle(fontSize: 24),
),
Column(
children: [
Text('Is a lot of money'),
//this is needed because Wrap does not have WrapCrossAlignment.baseLine
const SizedBox(height: 3),
],
),
],
),
);
}
}
推荐阅读
- python - gunicorn 如何更好地部署 django?
- reactjs - 单击 svg 元素时反应重定向
- excel - 如何加快将选定单元格打印到 pdf 文件并将 xlsm 文件保存到共享设备?
- linux - linux命令在python子进程中不起作用
- android - 为什么 32 位 Android 应用程序可以在 64 位设备上运行?
- c# - 在c#中禁用ListView中ListViewItem元素的FocusStyle
- jquery - 如果语句有效,但是当我添加 else 时没有任何效果
- machine-learning - 用于检测任意边界内物体的 CNN
- python-3.x - 检查目标:预期具有形状(3404,)但得到形状为(1705,)的数组
- amazon-web-services - 带有 AWS SDK nodejs 的 AWS Lambda 中的模块初始化错误 TypeError