multiChildStrategy method

  1. @override
Widget multiChildStrategy(
  1. BuildContext context,
  2. Widget multiChild(
    1. List<Widget> children
    ),
  3. List<RegionRegistration>? data, {
  4. Widget separator(
    1. BuildContext context
    )?,
})
override

Implementation

@override
Widget multiChildStrategy(
  BuildContext context,
  Widget Function(List<Widget> children) multiChild,
  List<RegionRegistration>? data, {
  Widget Function(BuildContext context)? separator,
}) {
  if (data == null || data.isEmpty) return const SizedBox.shrink();

  final groups = groupBy(
      data.where((data) => data.metadata is DrawerMetadata), (data) => (data.metadata as DrawerMetadata).location);

  return Padding(
    padding: const EdgeInsets.symmetric(horizontal: 12.0, vertical: 20.0),
    child: Column(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: [
        if (groups.containsKey(DrawerLocation.top)) ...[
          super.multiChildStrategy(context, multiChild, groups[DrawerLocation.top]),
          if (separator != null) separator(context),
        ],
        Expanded(
            child: (groups.containsKey(DrawerLocation.content))
                ? super.multiChildStrategy(context, multiChild, groups[DrawerLocation.content])
                : const SizedBox.shrink()),
        if (groups.containsKey(DrawerLocation.bottom)) ...[
          if (separator != null) separator(context),
          super.multiChildStrategy(context, multiChild, groups[DrawerLocation.bottom]),
        ]
      ],
    ),
  );
}