AdaptiveExplorer<T> constructor

const AdaptiveExplorer<T>({
  1. Key? key,
  2. required List<T> results,
  3. required Widget filters,
  4. required String filtersTitle,
  5. required Widget itemBuilder(
    1. BuildContext context,
    2. T result,
    3. bool selected,
    4. VoidCallback onTap,
    ),
  6. required Widget detailBuilder(
    1. BuildContext context,
    2. T result
    ),
  7. String? filtersDescription,
  8. Widget? filtersLeading,
  9. List<Widget> activeFilters = const [],
  10. String activeFiltersLabel = 'Active filters',
  11. Widget? header,
  12. Widget? emptyState,
  13. AdaptiveSize dockedAt = AdaptiveSize.expanded,
  14. AdaptiveHeight minimumDockedHeight = AdaptiveHeight.medium,
  15. bool useContainerConstraints = true,
  16. bool considerOrientation = false,
  17. int? selectedIndex,
  18. int initialIndex = 0,
  19. ValueChanged<int>? onSelectedIndexChanged,
  20. String modalFilterLabel = 'Open filters',
  21. Widget modalFilterIcon = const Icon(Icons.tune_outlined),
  22. double spacing = 16,
  23. int filtersFlex = 2,
  24. int resultsFlex = 2,
  25. int detailFlex = 3,
  26. double itemSpacing = 12,
  27. EdgeInsetsGeometry filtersPadding = const EdgeInsets.all(16),
  28. EdgeInsetsGeometry resultsPadding = const EdgeInsets.all(16),
  29. EdgeInsetsGeometry detailPadding = const EdgeInsets.all(16),
  30. EdgeInsetsGeometry activeFiltersPadding = const EdgeInsets.all(12),
  31. double modalHeightFactor = 0.72,
  32. bool showModalDragHandle = true,
  33. bool animateSize = true,
  34. Duration animationDuration = const Duration(milliseconds: 250),
  35. Curve animationCurve = Curves.easeInOutCubic,
})

Creates an adaptive explorer.

Implementation

const AdaptiveExplorer({
  super.key,
  required this.results,
  required this.filters,
  required this.filtersTitle,
  required this.itemBuilder,
  required this.detailBuilder,
  this.filtersDescription,
  this.filtersLeading,
  this.activeFilters = const [],
  this.activeFiltersLabel = 'Active filters',
  this.header,
  this.emptyState,
  this.dockedAt = AdaptiveSize.expanded,
  this.minimumDockedHeight = AdaptiveHeight.medium,
  this.useContainerConstraints = true,
  this.considerOrientation = false,
  this.selectedIndex,
  this.initialIndex = 0,
  this.onSelectedIndexChanged,
  this.modalFilterLabel = 'Open filters',
  this.modalFilterIcon = const Icon(Icons.tune_outlined),
  this.spacing = 16,
  this.filtersFlex = 2,
  this.resultsFlex = 2,
  this.detailFlex = 3,
  this.itemSpacing = 12,
  this.filtersPadding = const EdgeInsets.all(16),
  this.resultsPadding = const EdgeInsets.all(16),
  this.detailPadding = const EdgeInsets.all(16),
  this.activeFiltersPadding = const EdgeInsets.all(12),
  this.modalHeightFactor = 0.72,
  this.showModalDragHandle = true,
  this.animateSize = true,
  this.animationDuration = const Duration(milliseconds: 250),
  this.animationCurve = Curves.easeInOutCubic,
})  : assert(filtersFlex > 0, 'filtersFlex must be greater than zero.'),
      assert(resultsFlex > 0, 'resultsFlex must be greater than zero.'),
      assert(detailFlex > 0, 'detailFlex must be greater than zero.'),
      assert(spacing >= 0, 'spacing must be zero or greater.'),
      assert(itemSpacing >= 0, 'itemSpacing must be zero or greater.'),
      assert(
        modalHeightFactor > 0 && modalHeightFactor <= 1,
        'modalHeightFactor must be between 0 and 1.',
      );