RistoStatusSwitcher.computed constructor

RistoStatusSwitcher.computed({
  1. Key? key,
  2. bool isLoading = false,
  3. bool hasError = false,
  4. bool isEmpty = false,
  5. required WidgetBuilder contentBuilder,
  6. WidgetBuilder? loadingBuilder,
  7. WidgetBuilder? emptyBuilder,
  8. WidgetBuilder? errorBuilder,
  9. String? defaultEmptyTitle,
  10. String? defaultEmptySubtitle,
  11. String? defaultErrorTitle,
  12. String? defaultErrorSubtitle,
  13. VoidCallback? onRetry,
  14. Duration duration = const Duration(milliseconds: 400),
  15. Alignment alignment = Alignment.topCenter,
  16. EdgeInsetsGeometry? margin,
  17. EdgeInsetsGeometry? padding,
  18. double? width,
  19. double? height,
  20. double? minWidth,
  21. double? maxWidth,
  22. double? minHeight,
  23. double? maxHeight,
  24. Color? backgroundColor,
  25. Color? borderColor,
  26. double borderWidth = 1.0,
  27. double borderRadius = 16.0,
  28. double? elevation,
  29. Color? shadowColor,
  30. Clip clipBehavior = Clip.none,
})

A convenience factory that automatically computes the RistoUiState based on boolean flags. Priority: isLoading > hasError > isEmpty > content.

Implementation

factory RistoStatusSwitcher.computed({
  Key? key,
  bool isLoading = false,
  bool hasError = false,
  bool isEmpty = false,
  required WidgetBuilder contentBuilder,
  WidgetBuilder? loadingBuilder,
  WidgetBuilder? emptyBuilder,
  WidgetBuilder? errorBuilder,
  String? defaultEmptyTitle,
  String? defaultEmptySubtitle,
  String? defaultErrorTitle,
  String? defaultErrorSubtitle,
  VoidCallback? onRetry,
  Duration duration = const Duration(milliseconds: 400),
  Alignment alignment = Alignment.topCenter,
  EdgeInsetsGeometry? margin,
  EdgeInsetsGeometry? padding,
  double? width,
  double? height,
  double? minWidth,
  double? maxWidth,
  double? minHeight,
  double? maxHeight,
  Color? backgroundColor,
  Color? borderColor,
  double borderWidth = 1.0,
  double borderRadius = 16.0,
  double? elevation,
  Color? shadowColor,
  Clip clipBehavior = Clip.none,
}) {
  RistoUiState derivedState = RistoUiState.content;
  if (isLoading) {
    derivedState = RistoUiState.loading;
  } else if (hasError) {
    derivedState = RistoUiState.error;
  } else if (isEmpty) {
    derivedState = RistoUiState.empty;
  }

  return RistoStatusSwitcher(
    key: key,
    state: derivedState,
    contentBuilder: contentBuilder,
    loadingBuilder: loadingBuilder,
    emptyBuilder: emptyBuilder,
    errorBuilder: errorBuilder,
    defaultEmptyTitle: defaultEmptyTitle,
    defaultEmptySubtitle: defaultEmptySubtitle,
    defaultErrorTitle: defaultErrorTitle,
    defaultErrorSubtitle: defaultErrorSubtitle,
    onRetry: onRetry,
    duration: duration,
    alignment: alignment,
    margin: margin,
    padding: padding,
    width: width,
    height: height,
    minWidth: minWidth,
    maxWidth: maxWidth,
    minHeight: minHeight,
    maxHeight: maxHeight,
    backgroundColor: backgroundColor,
    borderColor: borderColor,
    borderWidth: borderWidth,
    borderRadius: borderRadius,
    elevation: elevation,
    shadowColor: shadowColor,
    clipBehavior: clipBehavior,
  );
}