openDetail static method
Future<void>
openDetail(
- BuildContext context, {
- required WidgetBuilder builder,
- String? title,
- FuiCompactDetailPresentation compactPresentation = FuiCompactDetailPresentation.auto,
- FuiNavigationBreakpoints breakpoints = const FuiNavigationBreakpoints(),
- bool fullscreenDialog = false,
- bool barrierDismissible = true,
- bool preferSecondaryPane = true,
- bool useSafeArea = true,
Implementation
static Future<void> openDetail(
BuildContext context, {
required WidgetBuilder builder,
String? title,
FuiCompactDetailPresentation compactPresentation =
FuiCompactDetailPresentation.auto,
FuiNavigationBreakpoints breakpoints = const FuiNavigationBreakpoints(),
bool fullscreenDialog = false,
bool barrierDismissible = true,
bool preferSecondaryPane = true,
bool useSafeArea = true,
}) async {
final detailBuilder = useSafeArea
? (BuildContext context) =>
FuiNavigationContent(child: Builder(builder: builder))
: builder;
final scope = _FuiNavigationScope.maybeOf(context);
if (preferSecondaryPane && scope?.layout == FuiNavigationLayout.split) {
await scope!.showSecondary(
detailBuilder,
replace: !FuiNavigation.isSecondaryPane(context),
);
return;
}
final resolvedPresentation = _resolveDetailPresentation(
compactPresentation,
);
switch (resolvedPresentation) {
case FuiCompactDetailPresentation.auto:
throw StateError('FuiCompactDetailPresentation.auto was not resolved.');
case FuiCompactDetailPresentation.push:
await Navigator.of(context).push<void>(
FuiPageRoute<void>(
fullscreenDialog: fullscreenDialog,
builder: detailBuilder,
),
);
case FuiCompactDetailPresentation.bottomSheet:
await showModalBottomSheet<void>(
context: context,
isScrollControlled: true,
useSafeArea: useSafeArea,
builder: (context) => FractionallySizedBox(
heightFactor: 0.88,
child: Builder(builder: builder),
),
);
case FuiCompactDetailPresentation.dialog:
await showDialog<void>(
context: context,
barrierDismissible: barrierDismissible,
builder: (context) => Dialog(
clipBehavior: Clip.antiAlias,
child: ConstrainedBox(
constraints: const BoxConstraints(maxWidth: 720, maxHeight: 720),
child: Builder(builder: builder),
),
),
);
}
}