AdaptiveReviewDesk<T> constructor
const
AdaptiveReviewDesk<T> ({
- Key? key,
- required List<
T> items, - required Widget itemBuilder(
- BuildContext context,
- T item,
- bool selected,
- VoidCallback onTap,
- required Widget reviewBuilder(
- BuildContext context,
- T item
- required Widget decisionBuilder(
- BuildContext context,
- T item
- required String queueTitle,
- required String decisionTitle,
- Widget? header,
- Widget? emptyState,
- String? queueDescription,
- Widget? queueLeading,
- String? decisionDescription,
- Widget? decisionLeading,
- String modalQueueLabel = 'Open queue',
- Widget modalQueueIcon = const Icon(Icons.playlist_play_outlined),
- String modalDecisionLabel = 'Open decision',
- Widget modalDecisionIcon = const Icon(Icons.rule_outlined),
- AdaptiveSize queueDockedAt = AdaptiveSize.medium,
- AdaptiveSize decisionDockedAt = AdaptiveSize.expanded,
- AdaptiveHeight minimumQueueDockedHeight = AdaptiveHeight.compact,
- AdaptiveHeight minimumDecisionDockedHeight = AdaptiveHeight.medium,
- bool useContainerConstraints = true,
- bool considerOrientation = false,
- int? selectedIndex,
- int initialIndex = 0,
- ValueChanged<
int> ? onSelectedIndexChanged, - double spacing = 16,
- double itemSpacing = 12,
- int queueFlex = 2,
- int reviewFlex = 4,
- int decisionFlex = 2,
- EdgeInsetsGeometry queuePadding = const EdgeInsets.all(16),
- EdgeInsetsGeometry reviewPadding = const EdgeInsets.all(16),
- EdgeInsetsGeometry decisionPadding = const EdgeInsets.all(16),
- double modalHeightFactor = 0.72,
- bool showModalDragHandle = true,
- bool animateSize = true,
- Duration animationDuration = const Duration(milliseconds: 250),
- 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.',
);