29 lines
780 B
Dart
29 lines
780 B
Dart
import 'package:flutter/widgets.dart';
|
|
|
|
class OverflowProofText extends StatelessWidget {
|
|
const OverflowProofText(
|
|
{super.key, required this.text, required this.fallback});
|
|
|
|
final Text text;
|
|
final Widget 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(text: text.data),
|
|
);
|
|
|
|
painter.layout(maxWidth: size.maxWidth);
|
|
|
|
return painter.didExceedMaxLines ? fallback : text;
|
|
}));
|
|
}
|
|
}
|