getResponsiveWidget method

  1. @override
Widget getResponsiveWidget(
  1. BuildContext context,
  2. ScreenType screenType,
  3. double scale
)
override

Implementation

@override
Widget getResponsiveWidget(BuildContext context, ScreenType screenType, double scale) {

  double size = 0.0;
  TextStyle defaultStyle = DefaultTextStyle.of(context).style;
  TextStyle responsiveStyle = DefaultTextStyle.of(context).style;

  if(has('style')) {
    responsiveStyle = get('style');
  }

  if(responsiveStyle.fontSize != null) {
    size = responsiveStyle.fontSize!;
  } else {
    size = defaultStyle.fontSize!;
  }

  if(useCaptionStyle) {
      TextStyle captionStyle = Theme.of(context).textTheme.caption!;
      responsiveStyle = captionStyle.copyWith(fontSize: size * scale);
  } else {
      responsiveStyle = responsiveStyle.copyWith(fontSize: size * scale);
  }

  var cutOff = get('overflow') == TextOverflow.ellipsis ? '...' : '';
  var maxLengthNeeded = maxLength != null && text.length > maxLength!;
  var responsiveText = maxLengthNeeded ? text.substring(0, maxLength! - cutOff.length) + cutOff : text;

  return Text(
      responsiveText,
      key: get('key'),
      style: responsiveStyle,
      strutStyle: get('strutStyle'),
      textAlign: get('textAlign'),
      textDirection: get('textDirection'),
      locale: get('locale'),
      softWrap: get('softWrap'),
      overflow: get('overflow') ?? TextOverflow.clip,
      textScaler: get('textScaler'),
      maxLines: get('maxLines'),
      semanticsLabel: get('semanticsLabel'),
      textWidthBasis: get('textWidthBasis'),
      textHeightBehavior: get('textHeightBehavior')
  );
}