Wes*_*y92 5 text flutter flutter-layout
我想知道Flutter中是否有一种方法可以显示替代文本(如果原始文本溢出)。
例:
默认情况下,我显示的是完整日期:January 1, 2019
。
但是,如果我在小屏幕上会溢出(January 1...
),则想显示一个不同的字符串(1/1/2019
)。
我最终采用了受@Mantoska 答案启发的解决方案。
import 'package:flutter/widgets.dart';
class OverflowProofText extends StatelessWidget {
const OverflowProofText({@required this.text, @required this.fallback});
final Text text;
final Text fallback;
@override
Widget build(BuildContext context) {
return SizedBox(
width: double.infinity,
child: LayoutBuilder(builder: (BuildContext context, BoxConstraints size) {
final TextPainter painter = TextPainter(
maxLines: 1,
textAlign: TextAlign.left,
textDirection: TextDirection.ltr,
text: TextSpan(
style: text.style ?? DefaultTextStyle.of(context).style,
text: text.data
),
);
painter.layout(maxWidth: size.maxWidth);
return painter.didExceedMaxLines ? fallback : text;
})
);
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
OverflowProofText(
text: Text('January 1, 2019'),
fallback: Text('1/1/2019', overflow: TextOverflow.fade),
),
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
816 次 |
最近记录: |