Flutter 如何阻止RotatedBox组件内文本自动向右侧扩展?
Flutter RotatedBox 竖向文本溢出不生效问题解决
问题原因
RotatedBox 的布局逻辑是先完成子组件的布局计算,再对渲染结果做旋转,你当前的写法存在两个问题:
Text组件未指定maxLines属性,默认支持无限换行,当外层Container限制宽度为50时,长文本会自动折成多行,不会触发overflow规则- 旋转后宽高属性会互换:
quarterTurns: -1等价于逆时针旋转90度,原来子组件的水平宽度会变为旋转后的竖直高度,原来子组件的竖直高度会变为旋转后的水平宽度。你限制的子组件宽度50最终会变成旋转后组件的高度,多行文本的总高度会变成旋转后组件的水平宽度,因此出现右侧多余空白的问题。
解决方法
调整尺寸限制的位置,在 RotatedBox 外层直接限制旋转后的组件尺寸,同时给 Text 加上 maxLines 属性即可:
SizedBox( // 宽度对应单行文本的行高,可根据你的字体大小调整,也可设置为自适应 width: 16, // 你需要的竖向文本的总高度,对应旋转前Text的最大宽度 height: 50, child: RotatedBox( quarterTurns: -1, child: Tooltip( message: "the long text message when user wants to see it", child: Text( "some long text that is too long to fit", overflow: TextOverflow.fade, // 必须指定最大行数,才会触发溢出裁剪逻辑 maxLines: 1, ), ), ), )
如果不需要硬编码宽度,也可以用 Wrap 或者 IntrinsicWidth 组件适配文本行高,避免手动指定宽度的适配问题。
内容的提问来源于stack exchange,提问作者flutter_bee
相关产品推荐
相关产品推荐

