Flutter 防止Text内容溢出产生警告(黄色块)

Text内容过多时,屏幕上会出现溢出,即黄色块

以下是解决方案

 Container(
                        alignment: Alignment.centerLeft,
                        width: px(120),
                        margin: EdgeInsets.only(left: px(50)),
                        child: Text(toK(count),
                            style: TextStyle(
                                fontSize: px(24),
                                color: Color(0xFFACB5CA),
                                fontFamily: Font.din,
                                fontWeight: FontWeight.bold),
                          maxLines: 1,
                          overflow: TextOverflow.ellipsis,
                         )),

外面套个Container,给定宽度,然后在里面的Text加2个属性即可
maxLines: 1, //做多支持一行
overflow: TextOverflow.ellipsis,// 内容过多显示不下时,末尾显示省略号

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要判断一个`Text`组件的高度是否溢出,可以使用`LayoutBuilder`和`RenderObject`来获取`Text`组件的实际高度和最大高度进行比较。以下是基本步骤: 1. 导入需要的库 ```dart import 'package:flutter/rendering.dart'; ``` 2. 在`Text`组件外层包裹`LayoutBuilder`组件 ```dart LayoutBuilder( builder: (context, constraints) { return Text( '需要检测的文本', maxLines: 1, // 设置最大行数为1 overflow: TextOverflow.ellipsis, // 设置文本溢出时的省略符号 ); }, ); ``` 3. 在`Text`组件渲染完成后,获取`RenderObject`对象 ```dart RenderObject renderObject = context.findRenderObject(); ``` 4. 使用`RenderObject`对象获取`Text`组件的实际高度和最大高度,并进行比较 ```dart if (renderObject.paintBounds.height > constraints.maxHeight) { // 文本高度溢出 } else { // 文本高度未溢出 } ``` 完整代码示例如下: ```dart LayoutBuilder( builder: (context, constraints) { return Text( '需要检测的文本', maxLines: 1, // 设置最大行数为1 overflow: TextOverflow.ellipsis, // 设置文本溢出时的省略符号 style: TextStyle(fontSize: 16), // 设置文本字体大小 textAlign: TextAlign.center, // 设置文本对齐方式 strutStyle: StrutStyle.disabled, // 禁用strut softWrap: true, // 允许文本自动换行 textScaleFactor: 1.0, // 文本缩放因子 textDirection: TextDirection.ltr, // 文本方向 locale: Locale('zh'), // 本地化语言 overflowReplacement: Text('文本溢出'), // 整个文本溢出时的替换组件 textWidthBasis: TextWidthBasis.longestLine, // 文本宽度基准 textHeightBehavior: TextHeightBehavior( // 文本高度行为 applyHeightToFirstAscent: false, applyHeightToLastDescent: false, ), onTextLayout: (textLayout) { // 文本布局回调 RenderObject renderObject = context.findRenderObject(); if (renderObject.paintBounds.height > constraints.maxHeight) { // 文本高度溢出 } else { // 文本高度未溢出 } }, ); }, ); ``` 需要注意的是,在进行高度比较时,需要等到`Text`组件完成渲染后才能获取到实际高度。因此,需要使用`onTextLayout`回调来获取`Text`组件渲染完成的信息。同时,还需要设置`maxLines`和`overflow`属性,以确保`Text`组件的高度是固定的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值