AdaptiveExperimentLab<T> constructor

const AdaptiveExperimentLab<T>({
  1. Key? key,
  2. required List<T> experiments,
  3. required Widget itemBuilder(
    1. BuildContext context,
    2. T experiment,
    3. bool selected,
    4. VoidCallback onTap,
    ),
  4. required Widget focusBuilder(
    1. BuildContext context,
    2. T experiment
    ),
  5. required Widget evidenceBuilder(
    1. BuildContext context,
    2. T experiment
    ),
  6. required Widget decisionBuilder(
    1. BuildContext context,
    2. T experiment
    ),
  7. required String experimentTitle,
  8. required String evidenceTitle,
  9. required String decisionTitle,
  10. Widget? header,
  11. Widget? emptyState,
  12. String? experimentDescription,
  13. Widget? experimentLeading,
  14. String? evidenceDescription,
  15. Widget? evidenceLeading,
  16. String? decisionDescription,
  17. Widget? decisionLeading,
  18. String modalExperimentLabel = 'Open experiments',
  19. Widget modalExperimentIcon = const Icon(Icons.science_outlined),
  20. String modalEvidenceLabel = 'Open evidence',
  21. Widget modalEvidenceIcon = const Icon(Icons.fact_check_outlined),
  22. String modalDecisionLabel = 'Open decisions',
  23. Widget modalDecisionIcon = const Icon(Icons.rule_outlined),
  24. AdaptiveSize experimentDockedAt = AdaptiveSize.medium,
  25. AdaptiveSize evidenceDockedAt = AdaptiveSize.expanded,
  26. AdaptiveSize decisionDockedAt = AdaptiveSize.expanded,
  27. AdaptiveHeight minimumExperimentDockedHeight = AdaptiveHeight.compact,
  28. AdaptiveHeight minimumEvidenceDockedHeight = AdaptiveHeight.medium,
  29. AdaptiveHeight minimumDecisionDockedHeight = AdaptiveHeight.expanded,
  30. bool useContainerConstraints = true,
  31. bool considerOrientation = false,
  32. int? selectedIndex,
  33. int initialIndex = 0,
  34. ValueChanged<int>? onSelectedIndexChanged,
  35. double spacing = 16,
  36. double itemSpacing = 12,
  37. int experimentFlex = 2,
  38. int focusFlex = 4,
  39. int evidenceFlex = 2,
  40. int focusPaneFlex = 3,
  41. int decisionFlex = 2,
  42. EdgeInsetsGeometry experimentPadding = const EdgeInsets.all(16),
  43. EdgeInsetsGeometry focusPadding = const EdgeInsets.all(16),
  44. EdgeInsetsGeometry evidencePadding = const EdgeInsets.all(16),
  45. EdgeInsetsGeometry decisionPadding = const EdgeInsets.all(16),
  46. double modalHeightFactor = 0.72,
  47. bool showModalDragHandle = true,
  48. bool animateSize = true,
  49. Duration animationDuration = const Duration(milliseconds: 250),
  50. Curve animationCurve = Curves.easeInOutCubic,
})

Creates an adaptive experiment lab.

Implementation

const AdaptiveExperimentLab({
  super.key,
  required this.experiments,
  required this.itemBuilder,
  required this.focusBuilder,
  required this.evidenceBuilder,
  required this.decisionBuilder,
  required this.experimentTitle,
  required this.evidenceTitle,
  required this.decisionTitle,
  this.header,
  this.emptyState,
  this.experimentDescription,
  this.experimentLeading,
  this.evidenceDescription,
  this.evidenceLeading,
  this.decisionDescription,
  this.decisionLeading,
  this.modalExperimentLabel = 'Open experiments',
  this.modalExperimentIcon = const Icon(Icons.science_outlined),
  this.modalEvidenceLabel = 'Open evidence',
  this.modalEvidenceIcon = const Icon(Icons.fact_check_outlined),
  this.modalDecisionLabel = 'Open decisions',
  this.modalDecisionIcon = const Icon(Icons.rule_outlined),
  this.experimentDockedAt = AdaptiveSize.medium,
  this.evidenceDockedAt = AdaptiveSize.expanded,
  this.decisionDockedAt = AdaptiveSize.expanded,
  this.minimumExperimentDockedHeight = AdaptiveHeight.compact,
  this.minimumEvidenceDockedHeight = AdaptiveHeight.medium,
  this.minimumDecisionDockedHeight = AdaptiveHeight.expanded,
  this.useContainerConstraints = true,
  this.considerOrientation = false,
  this.selectedIndex,
  this.initialIndex = 0,
  this.onSelectedIndexChanged,
  this.spacing = 16,
  this.itemSpacing = 12,
  this.experimentFlex = 2,
  this.focusFlex = 4,
  this.evidenceFlex = 2,
  this.focusPaneFlex = 3,
  this.decisionFlex = 2,
  this.experimentPadding = const EdgeInsets.all(16),
  this.focusPadding = const EdgeInsets.all(16),
  this.evidencePadding = 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,
});