这是因为LayoutBuilder会根据父组件的约束条件重新计算子组件的大小和位置,而Text的overflow属性需要在子组件的大小确定之后才能生效。解决这个问题的方法是在LayoutBuilder的回调函数中使用SizedBox来限制Text的大小,然后再将Text放进一个带有overflow属性的组件中,如Expanded或者OverflowBox。示例代码如下:

LayoutBuilder(
  builder: (BuildContext context, BoxConstraints constraints) {
    return SizedBox(
      width: constraints.maxWidth,
      height: constraints.maxHeight,
      child: Text(
        '这是一段很长很长的文本',
        overflow: TextOverflow.ellipsis,
      ),
    );
  },
);
LayoutBuilder(
  builder: (BuildContext context, BoxConstraints constraints) {
    return Expanded(
      child: SizedBox(
        width: constraints.maxWidth,
        child: Text(
          '这是一段很长很长的文本',
          overflow: TextOverflow.ellipsis,
        ),
      ),
    );
  },
);
flutter使用LayoutBuilder包裹Text组件之后Text的overflow属性就失效了

原文地址: https://www.cveoy.top/t/topic/bV3w 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录