getSingleMiddleEllipsisText function

Widget getSingleMiddleEllipsisText(
  1. String? data, {
  2. TextStyle? style,
})

Implementation

Widget getSingleMiddleEllipsisText(String? data, {TextStyle? style}) {
  return LayoutBuilder(builder: (context, constrain) {
    String info = data ?? "";
    final TextPainter textPainter = TextPainter(
        text: TextSpan(text: info, style: style),
        maxLines: 1,
        textDirection: TextDirection.ltr)
      ..layout(minWidth: 0, maxWidth: double.infinity);
    final exceedWidth = (textPainter.size.width - constrain.maxWidth).toInt();
    if (exceedWidth > 0) {
      final exceedLength =
          (exceedWidth / textPainter.size.width * info.length).toInt();
      final index = (info.length - exceedLength) ~/ 2;
      info =
          "${info.substring(0, index)}...${info.substring(index + exceedLength + 4)}";
    }
    return Text(
      info,
      maxLines: 1,
      style: style,
    );
  });
}