Watch
1
0
Fork
You've already forked nexus
0
forked from Nexus/nexus

show bottom sheets / dialogs / menus based on screen size

Fixes #76
This commit is contained in:
Henry Hiles 2026-10-15 10:20:27 -04:00
commit 76d78596cd
Signed by: Henry-Hiles
SSH key fingerprint: SHA256:VKQUdS31Q90KvX7EkKMHMBpUspcmItAh86a+v7PGiIs
12 changed files with 141 additions and 49 deletions

View file

@ -0,0 +1,24 @@
import "package:material_ui/material_ui.dart";
import "package:nexus/helpers/extensions/is_desktop.dart";
extension ShowAdaptiveSheet on BuildContext {
/// Shows the widget from [builder] in a dialog on desktop, or a bottom sheet
/// on mobile. Use the context passed to [builder] to close it.
Future<void> showAdaptiveSheet(WidgetBuilder builder) => isDesktop
? showDialog(
context: this,
builder: (context) => Dialog(
clipBehavior: .antiAlias,
child: ConstrainedBox(
constraints: const .new(maxWidth: 450, maxHeight: 600),
child: Builder(builder: builder),
),
),
)
: showModalBottomSheet(
context: this,
isScrollControlled: true,
constraints: .new(maxHeight: MediaQuery.sizeOf(this).height - 80),
builder: builder,
);
}