AdaptiveReleaseLab<T> constructor

const AdaptiveReleaseLab<T>({
  1. Key? key,
  2. required List<T> releases,
  3. required Widget itemBuilder(
    1. BuildContext context,
    2. T release,
    3. bool selected,
    4. VoidCallback onTap,
    ),
  4. required Widget readinessBuilder(
    1. BuildContext context,
    2. T release
    ),
  5. required Widget blockersBuilder(
    1. BuildContext context,
    2. T release
    ),
  6. required Widget rolloutBuilder(
    1. BuildContext context,
    2. T release
    ),
  7. required String releaseTitle,
  8. required String blockersTitle,
  9. required String rolloutTitle,
  10. Widget? header,
  11. Widget? emptyState,
  12. String? releaseDescription,
  13. Widget? releaseLeading,
  14. String? blockersDescription,
  15. Widget? blockersLeading,
  16. String? rolloutDescription,
  17. Widget? rolloutLeading,
  18. String modalReleaseLabel = 'Open releases',
  19. Widget modalReleaseIcon = const Icon(Icons.rocket_launch_outlined),
  20. String modalBlockersLabel = 'Open blockers',
  21. Widget modalBlockersIcon = const Icon(Icons.warning_amber_outlined),
  22. String modalRolloutLabel = 'Open rollout log',
  23. Widget modalRolloutIcon = const Icon(Icons.history_outlined),
  24. AdaptiveSize releaseDockedAt = AdaptiveSize.medium,
  25. AdaptiveSize blockersDockedAt = AdaptiveSize.expanded,
  26. AdaptiveSize rolloutDockedAt = AdaptiveSize.expanded,
  27. AdaptiveHeight minimumReleaseDockedHeight = AdaptiveHeight.compact,
  28. AdaptiveHeight minimumBlockersDockedHeight = AdaptiveHeight.medium,
  29. AdaptiveHeight minimumRolloutDockedHeight = 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 releaseFlex = 2,
  38. int readinessFlex = 4,
  39. int blockersFlex = 2,
  40. int readinessPaneFlex = 3,
  41. int rolloutFlex = 2,
  42. EdgeInsetsGeometry releasePadding = const EdgeInsets.all(16),
  43. EdgeInsetsGeometry readinessPadding = const EdgeInsets.all(16),
  44. EdgeInsetsGeometry blockersPadding = const EdgeInsets.all(16),
  45. EdgeInsetsGeometry rolloutPadding = 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 release lab.

Implementation

const AdaptiveReleaseLab({
  super.key,
  required this.releases,
  required this.itemBuilder,
  required this.readinessBuilder,
  required this.blockersBuilder,
  required this.rolloutBuilder,
  required this.releaseTitle,
  required this.blockersTitle,
  required this.rolloutTitle,
  this.header,
  this.emptyState,
  this.releaseDescription,
  this.releaseLeading,
  this.blockersDescription,
  this.blockersLeading,
  this.rolloutDescription,
  this.rolloutLeading,
  this.modalReleaseLabel = 'Open releases',
  this.modalReleaseIcon = const Icon(Icons.rocket_launch_outlined),
  this.modalBlockersLabel = 'Open blockers',
  this.modalBlockersIcon = const Icon(Icons.warning_amber_outlined),
  this.modalRolloutLabel = 'Open rollout log',
  this.modalRolloutIcon = const Icon(Icons.history_outlined),
  this.releaseDockedAt = AdaptiveSize.medium,
  this.blockersDockedAt = AdaptiveSize.expanded,
  this.rolloutDockedAt = AdaptiveSize.expanded,
  this.minimumReleaseDockedHeight = AdaptiveHeight.compact,
  this.minimumBlockersDockedHeight = AdaptiveHeight.medium,
  this.minimumRolloutDockedHeight = AdaptiveHeight.expanded,
  this.useContainerConstraints = true,
  this.considerOrientation = false,
  this.selectedIndex,
  this.initialIndex = 0,
  this.onSelectedIndexChanged,
  this.spacing = 16,
  this.itemSpacing = 12,
  this.releaseFlex = 2,
  this.readinessFlex = 4,
  this.blockersFlex = 2,
  this.readinessPaneFlex = 3,
  this.rolloutFlex = 2,
  this.releasePadding = const EdgeInsets.all(16),
  this.readinessPadding = const EdgeInsets.all(16),
  this.blockersPadding = const EdgeInsets.all(16),
  this.rolloutPadding = const EdgeInsets.all(16),
  this.modalHeightFactor = 0.72,
  this.showModalDragHandle = true,
  this.animateSize = true,
  this.animationDuration = const Duration(milliseconds: 250),
  this.animationCurve = Curves.easeInOutCubic,
});