show<T> static method
- BuildContext context, {
- DeviceDetails? initial,
- void onSelected()?,
Displays a OutputRouteView wrapped in a ModalPopup.
Implementation
static Future<T?> show<T>(
BuildContext context, {
DeviceDetails? initial,
void Function(DeviceDetails)? onSelected,
}) async {
final style = Theme.of(context).style;
final route = RawDialogRoute<T?>(
barrierColor: style.barrierColor,
barrierDismissible: true,
pageBuilder: (_, _, _) {
final Widget body = Center(
child: Container(
constraints: const BoxConstraints(maxWidth: 380),
width: 380,
margin: const EdgeInsets.symmetric(horizontal: 10, vertical: 10),
decoration: BoxDecoration(
color: style.colors.background,
borderRadius: BorderRadius.circular(16),
),
child: OutputRouteView(initial: initial, onSelected: onSelected),
),
);
return CustomSafeArea(
child: Material(type: MaterialType.transparency, child: body),
);
},
barrierLabel: MaterialLocalizations.of(context).modalBarrierDismissLabel,
transitionDuration: const Duration(milliseconds: 300),
transitionBuilder: (_, Animation<double> animation, _, Widget child) {
return FadeTransition(
opacity: CurvedAnimation(parent: animation, curve: Curves.linear),
child: child,
);
},
);
router.obscuring.add(route);
try {
return await Navigator.of(context, rootNavigator: true).push<T?>(route);
} finally {
router.obscuring.remove(route);
}
}