Files
phylum/client/lib/ui/menu/bottom_sheet.dart
2024-11-22 00:22:21 +05:30

48 lines
1.7 KiB
Dart

import 'package:flutter/material.dart';
import 'package:phylum/libphylum/db/db.dart';
import 'package:phylum/libphylum/phylum_account.dart';
import 'package:phylum/ui/explorer/resource_icon_extension.dart';
import 'package:phylum/ui/menu/menu_option.dart';
import 'package:provider/provider.dart';
import 'option_groups.dart';
void showMenuOptionsBottomSheet(BuildContext context, MenuOptionGroups options, Iterable<Resource> resources) async {
final items = await buildPopupMenuItems(context.read<PhylumAccount>(), options, resources);
if (!context.mounted) return;
final selected = await showModalBottomSheet(
context: context,
builder: (context) => ListView(
shrinkWrap: true,
children: [
DecoratedBox(
position: DecorationPosition.foreground,
decoration: BoxDecoration(
border: Border(
bottom: Divider.createBorderSide(context),
),
),
child: resources.length == 1
? ListTile(
leading: resources.first.getIcon(),
title: Text(
resources.first.name,
softWrap: false,
overflow: TextOverflow.fade,
maxLines: 1,
),
)
: ListTile(
title: Text('${resources.length} items'),
),
),
...items,
],
));
if (!context.mounted || selected == null) {
return;
}
handleOption(context, resources, selected);
}