AdaptivePlanningDesk<T> constructor

const AdaptivePlanningDesk<T>({
  1. Key? key,
  2. required List<T> plans,
  3. required Widget itemBuilder(
    1. BuildContext context,
    2. T plan,
    3. bool selected,
    4. VoidCallback onTap,
    ),
  4. required Widget focusBuilder(
    1. BuildContext context,
    2. T plan
    ),
  5. required Widget risksBuilder(
    1. BuildContext context,
    2. T plan
    ),
  6. required Widget milestonesBuilder(
    1. BuildContext context,
    2. T plan
    ),
  7. required String planTitle,
  8. required String risksTitle,
  9. required String milestonesTitle,
  10. Widget? header,
  11. Widget? emptyState,
  12. String? planDescription,
  13. Widget? planLeading,
  14. String? risksDescription,
  15. Widget? risksLeading,
  16. String? milestonesDescription,
  17. Widget? milestonesLeading,
  18. String modalPlanLabel = 'Open plans',
  19. Widget modalPlanIcon = const Icon(Icons.view_list_outlined),
  20. String modalRisksLabel = 'Open risks',
  21. Widget modalRisksIcon = const Icon(Icons.warning_amber_outlined),
  22. String modalMilestonesLabel = 'Open milestones',
  23. Widget modalMilestonesIcon = const Icon(Icons.flag_outlined),
  24. AdaptiveSize planDockedAt = AdaptiveSize.medium,
  25. AdaptiveSize risksDockedAt = AdaptiveSize.expanded,
  26. AdaptiveSize milestonesDockedAt = AdaptiveSize.expanded,
  27. AdaptiveHeight minimumPlanDockedHeight = AdaptiveHeight.compact,
  28. AdaptiveHeight minimumRisksDockedHeight = AdaptiveHeight.medium,
  29. AdaptiveHeight minimumMilestonesDockedHeight = 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 planFlex = 2,
  38. int focusFlex = 4,
  39. int risksFlex = 2,
  40. int focusPaneFlex = 3,
  41. int milestonesFlex = 2,
  42. EdgeInsetsGeometry planPadding = const EdgeInsets.all(16),
  43. EdgeInsetsGeometry focusPadding = const EdgeInsets.all(16),
  44. EdgeInsetsGeometry risksPadding = const EdgeInsets.all(16),
  45. EdgeInsetsGeometry milestonesPadding = 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 planning desk.

Implementation

const AdaptivePlanningDesk({
  super.key,
  required this.plans,
  required this.itemBuilder,
  required this.focusBuilder,
  required this.risksBuilder,
  required this.milestonesBuilder,
  required this.planTitle,
  required this.risksTitle,
  required this.milestonesTitle,
  this.header,
  this.emptyState,
  this.planDescription,
  this.planLeading,
  this.risksDescription,
  this.risksLeading,
  this.milestonesDescription,
  this.milestonesLeading,
  this.modalPlanLabel = 'Open plans',
  this.modalPlanIcon = const Icon(Icons.view_list_outlined),
  this.modalRisksLabel = 'Open risks',
  this.modalRisksIcon = const Icon(Icons.warning_amber_outlined),
  this.modalMilestonesLabel = 'Open milestones',
  this.modalMilestonesIcon = const Icon(Icons.flag_outlined),
  this.planDockedAt = AdaptiveSize.medium,
  this.risksDockedAt = AdaptiveSize.expanded,
  this.milestonesDockedAt = AdaptiveSize.expanded,
  this.minimumPlanDockedHeight = AdaptiveHeight.compact,
  this.minimumRisksDockedHeight = AdaptiveHeight.medium,
  this.minimumMilestonesDockedHeight = AdaptiveHeight.expanded,
  this.useContainerConstraints = true,
  this.considerOrientation = false,
  this.selectedIndex,
  this.initialIndex = 0,
  this.onSelectedIndexChanged,
  this.spacing = 16,
  this.itemSpacing = 12,
  this.planFlex = 2,
  this.focusFlex = 4,
  this.risksFlex = 2,
  this.focusPaneFlex = 3,
  this.milestonesFlex = 2,
  this.planPadding = const EdgeInsets.all(16),
  this.focusPadding = const EdgeInsets.all(16),
  this.risksPadding = const EdgeInsets.all(16),
  this.milestonesPadding = const EdgeInsets.all(16),
  this.modalHeightFactor = 0.72,
  this.showModalDragHandle = true,
  this.animateSize = true,
  this.animationDuration = const Duration(milliseconds: 250),
  this.animationCurve = Curves.easeInOutCubic,
});