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; })); } }