AdaptiveReviewDesk<T> constructor

const AdaptiveReviewDesk<T>({
  1. Key? key,
  2. required List<T> items,
  3. required Widget itemBuilder(
    1. BuildContext context,
    2. T item,
    3. bool selected,
    4. VoidCallback onTap,
    ),
  4. required Widget reviewBuilder(
    1. BuildContext context,
    2. T item
    ),
  5. required Widget decisionBuilder(
    1. BuildContext context,
    2. T item
    ),
  6. required String queueTitle,
  7. required String decisionTitle,
  8. Widget? header,
  9. Widget? emptyState,
  10. String? queueDescription,
  11. Widget? queueLeading,
  12. String? decisionDescription,
  13. Widget? decisionLeading,
  14. String modalQueueLabel = 'Open queue',
  15. Widget modalQueueIcon = const Icon(Icons.playlist_play_outlined),
  16. String modalDecisionLabel = 'Open decision',
  17. Widget modalDecisionIcon = const Icon(Icons.rule_outlined),
  18. AdaptiveSize queueDockedAt = AdaptiveSize.medium,
  19. AdaptiveSize decisionDockedAt = AdaptiveSize.expanded,
  20. AdaptiveHeight minimumQueueDockedHeight = AdaptiveHeight.compact,
  21. AdaptiveHeight minimumDecisionDockedHeight = AdaptiveHeight.medium,
  22. bool useContainerConstraints = true,
  23. bool considerOrientation = false,
  24. int? selectedIndex,
  25. int initialIndex = 0,
  26. ValueChanged<int>? onSelectedIndexChanged,
  27. double spacing = 16,
  28. double itemSpacing = 12,
  29. int queueFlex = 2,
  30. int reviewFlex = 4,
  31. int decisionFlex = 2,
  32. EdgeInsetsGeometry queuePadding = const EdgeInsets.all(16),
  33. EdgeInsetsGeometry reviewPadding = const EdgeInsets.all(16),
  34. EdgeInsetsGeometry decisionPadding = const EdgeInsets.all(16),
  35. double modalHeightFactor = 0.72,
  36. bool showModalDragHandle = true,
  37. bool animateSize = true,
  38. Duration animationDuration = const Duration(milliseconds: 250),
  39. Curve animationCurve = Curves.easeInOutCubic,
})

Creates an adaptive review desk.

Implementation

const AdaptiveReviewDesk({
  super.key,
  required this.items,
  required this.itemBuilder,
  required this.reviewBuilder,
  required this.decisionBuilder,
  required this.queueTitle,
  required this.decisionTitle,
  this.header,
  this.emptyState,
  this.queueDescription,
  this.queueLeading,
  this.decisionDescription,
  this.decisionLeading,
  this.modalQueueLabel = 'Open queue',
  this.modalQueueIcon = const Icon(Icons.playlist_play_outlined),
  this.modalDecisionLabel = 'Open decision',
  this.modalDecisionIcon = const Icon(Icons.rule_outlined),
  this.queueDockedAt = AdaptiveSize.medium,
  this.decisionDockedAt = AdaptiveSize.expanded,
  this.minimumQueueDockedHeight = AdaptiveHeight.compact,
  this.minimumDecisionDockedHeight = AdaptiveHeight.medium,
  this.useContainerConstraints = true,
  this.considerOrientation = false,
  this.selectedIndex,
  this.initialIndex = 0,
  this.onSelectedIndexChanged,
  this.spacing = 16,
  this.itemSpacing = 12,
  this.queueFlex = 2,
  this.reviewFlex = 4,
  this.decisionFlex = 2,
  this.queuePadding = const EdgeInsets.all(16),
  this.reviewPadding = const EdgeInsets.all(16),
  this.decisionPadding = const EdgeInsets.all(16),
  this.modalHeightFactor = 0.72,
  this.showModalDragHandle = true,
  this.animateSize = true,
  this.animationDuration = const Duration(milliseconds: 250),
  this.animationCurve = Curves.easeInOutCubic,
})  : assert(spacing >= 0, 'spacing must be zero or greater.'),
      assert(itemSpacing >= 0, 'itemSpacing must be zero or greater.'),
      assert(queueFlex > 0, 'queueFlex must be greater than zero.'),
      assert(reviewFlex > 0, 'reviewFlex must be greater than zero.'),
      assert(decisionFlex > 0, 'decisionFlex must be greater than zero.'),
      assert(
        modalHeightFactor > 0 && modalHeightFactor <= 1,
        'modalHeightFactor must be between 0 and 1.',
      );