helpBuilder<T> method

T helpBuilder<T>({
  1. HelpBuilderCallback<T>? mobileSmall,
  2. HelpBuilderCallback<T>? mobileSmallLandscape,
  3. HelpBuilderCallback<T>? mobileNormal,
  4. HelpBuilderCallback<T>? mobileNormalLandscape,
  5. HelpBuilderCallback<T>? mobileLarge,
  6. HelpBuilderCallback<T>? mobileLargeLandscape,
  7. HelpBuilderCallback<T>? mobileExtraLarge,
  8. HelpBuilderCallback<T>? mobileExtraLargeLandscape,
  9. HelpBuilderCallback<T>? tabletSmall,
  10. HelpBuilderCallback<T>? tabletSmallLandscape,
  11. HelpBuilderCallback<T>? tabletNormal,
  12. HelpBuilderCallback<T>? tabletNormalLandscape,
  13. HelpBuilderCallback<T>? tabletLarge,
  14. HelpBuilderCallback<T>? tabletLargeLandscape,
  15. HelpBuilderCallback<T>? tabletExtraLarge,
  16. HelpBuilderCallback<T>? tabletExtraLargeLandscape,
  17. HelpBuilderCallback<T>? desktopSmall,
  18. HelpBuilderCallback<T>? desktopSmallLandscape,
  19. HelpBuilderCallback<T>? desktopNormal,
  20. HelpBuilderCallback<T>? desktopNormalLandscape,
  21. HelpBuilderCallback<T>? desktopLarge,
  22. HelpBuilderCallback<T>? desktopLargeLandscape,
  23. HelpBuilderCallback<T>? desktopExtraLarge,
  24. HelpBuilderCallback<T>? desktopExtraLargeLandscape,
})

Takes T Function(double width, double height) as a parameter

Implementation

T helpBuilder<T>({
  HelpBuilderCallback<T>? mobileSmall,
  HelpBuilderCallback<T>? mobileSmallLandscape,
  HelpBuilderCallback<T>? mobileNormal,
  HelpBuilderCallback<T>? mobileNormalLandscape,
  HelpBuilderCallback<T>? mobileLarge,
  HelpBuilderCallback<T>? mobileLargeLandscape,
  HelpBuilderCallback<T>? mobileExtraLarge,
  HelpBuilderCallback<T>? mobileExtraLargeLandscape,
  HelpBuilderCallback<T>? tabletSmall,
  HelpBuilderCallback<T>? tabletSmallLandscape,
  HelpBuilderCallback<T>? tabletNormal,
  HelpBuilderCallback<T>? tabletNormalLandscape,
  HelpBuilderCallback<T>? tabletLarge,
  HelpBuilderCallback<T>? tabletLargeLandscape,
  HelpBuilderCallback<T>? tabletExtraLarge,
  HelpBuilderCallback<T>? tabletExtraLargeLandscape,
  HelpBuilderCallback<T>? desktopSmall,
  HelpBuilderCallback<T>? desktopSmallLandscape,
  HelpBuilderCallback<T>? desktopNormal,
  HelpBuilderCallback<T>? desktopNormalLandscape,
  HelpBuilderCallback<T>? desktopLarge,
  HelpBuilderCallback<T>? desktopLargeLandscape,
  HelpBuilderCallback<T>? desktopExtraLarge,
  HelpBuilderCallback<T>? desktopExtraLargeLandscape,
}) {
  final isPortrait = _currentOrientation == Orientation.portrait;

  final closestBreakPoints =
      _oldLength == _currentLength && _oldOrientation == _currentOrientation
          ? _cachedBreakPointsList!
          : _getSortedBreakPointsByClosestTo(_currentLength);

  _oldLength = _currentLength;
  _oldOrientation = _currentOrientation;
  _cachedBreakPointsList = closestBreakPoints;

  if (_printScreenInfo)
    _printCurrentScreenInfo(
      currentLength: _currentLength,
      closestBreakPoint: closestBreakPoints.first,
      size: _size,
      isPortrait: isPortrait,
    );

  final portraitMap = {
    if (mobileSmall != null) BreakPoint.mobileSmall: mobileSmall,
    if (mobileNormal != null) BreakPoint.mobileNormal: mobileNormal,
    if (mobileLarge != null) BreakPoint.mobileLarge: mobileLarge,
    if (mobileExtraLarge != null)
      BreakPoint.mobileExtraLarge: mobileExtraLarge,
    if (tabletSmall != null) BreakPoint.tabletSmall: tabletSmall,
    if (tabletNormal != null) BreakPoint.tabletNormal: tabletNormal,
    if (tabletLarge != null) BreakPoint.tabletLarge: tabletLarge,
    if (tabletExtraLarge != null)
      BreakPoint.tabletExtraLarge: tabletExtraLarge,
    if (desktopSmall != null) BreakPoint.desktopSmall: desktopSmall,
    if (desktopNormal != null) BreakPoint.desktopNormal: desktopNormal,
    if (desktopLarge != null) BreakPoint.desktopLarge: desktopLarge,
    if (desktopExtraLarge != null)
      BreakPoint.desktopExtraLarge: desktopExtraLarge,
  };

  final landscapeMap = {
    if (mobileSmallLandscape != null)
      BreakPoint.mobileSmall: mobileSmallLandscape,
    if (mobileNormalLandscape != null)
      BreakPoint.mobileNormal: mobileNormalLandscape,
    if (mobileLargeLandscape != null)
      BreakPoint.mobileLarge: mobileLargeLandscape,
    if (mobileExtraLargeLandscape != null)
      BreakPoint.mobileExtraLarge: mobileExtraLargeLandscape,
    if (tabletSmallLandscape != null)
      BreakPoint.tabletSmall: tabletSmallLandscape,
    if (tabletNormalLandscape != null)
      BreakPoint.tabletNormal: tabletNormalLandscape,
    if (tabletLargeLandscape != null)
      BreakPoint.tabletLarge: tabletLargeLandscape,
    if (tabletExtraLargeLandscape != null)
      BreakPoint.tabletExtraLarge: tabletExtraLargeLandscape,
    if (desktopSmallLandscape != null)
      BreakPoint.desktopSmall: desktopSmallLandscape,
    if (desktopNormalLandscape != null)
      BreakPoint.desktopNormal: desktopNormalLandscape,
    if (desktopLargeLandscape != null)
      BreakPoint.desktopLarge: desktopLargeLandscape,
    if (desktopExtraLargeLandscape != null)
      BreakPoint.desktopExtraLarge: desktopExtraLargeLandscape,
  };

  final closest = _findClosest(
    closestBreakPoints,
    isPortrait,
    portraitMap,
    landscapeMap,
  );

  if (closest != null) {
    return closest(
      ScreenInfo(
        width: _size.width,
        height: _size.height,
        orientation: _currentOrientation,
      ),
    );
  } else
    throw Exception(
        'Screen size not specified or there is no options passed from the parameters [currentLength: `$_currentLength`, orientation: `$_currentOrientation`]');
}