didvan-app/lib/views/widgets/overflow_proof_text.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;
}));
}
}