navigation top-level property
String
navigation
getter/setter pair
Implementation
String navigation = '''
import 'package:flutter/material.dart';
import 'package:injectable/injectable.dart';
@lazySingleton
class NavigationService {
final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
// GlobalKey<NavigatorState> get navigatorKey => navigatorKey;
final GlobalKey<ScaffoldState> scaffoldKey = GlobalKey();
BuildContext get activeContext => navigatorKey.currentState!.context;
Future<T?> pushFile<T extends Object>(Route<T> route) {
return navigatorKey.currentState!.push(route);
}
Future<T?> push<T extends Object?>(Route<T> route) {
return navigatorKey.currentState!.push(route);
}
Future<dynamic> pushNamed<T extends Object>(
String routeName, {
Object? arguments,
}) {
return navigatorKey.currentState!.pushNamed(
routeName,
arguments: arguments,
);
}
// void goPushNamed<T extends Object>(String routeName, {Object? arguments}) {
// navigatorKey.currentContext!.goNamed(routeName);
// // context.goNamed(Routes.addSales);
// // return navigatorKey.currentState!
// // .pushNamed(routeName, arguments: arguments);
// }
void pop<T extends Object>([T? result]) {
return navigatorKey.currentState?.pop(result);
}
Future displayDialog<T>(Widget dialog, {bool barrierDismissible = true}) {
return showDialog(
barrierLabel: '',
context: navigatorKey.currentState!.overlay!.context,
barrierDismissible: barrierDismissible,
builder: (context) => dialog,
);
}
Future fullScreenDialog<T>(Widget dialog, {bool barrierDismissible = true}) {
return showDialog(
barrierColor: Colors.transparent,
barrierLabel: '',
context: navigatorKey.currentState!.overlay!.context,
barrierDismissible: barrierDismissible,
builder: (context) => dialog,
);
}
Future animatedDialog<T>(Widget dialog, {bool barrierDismissible = true}) {
return showGeneralDialog(
barrierColor: Color(0xcc000000),
context: navigatorKey.currentState!.overlay!.context,
// barrierDismissible: barrierDismissible,
barrierDismissible: barrierDismissible,
barrierLabel: '',
transitionBuilder: (context, a1, a2, widget) {
return Transform.scale(
scale: a1.value,
child: Opacity(opacity: a1.value, child: dialog),
);
},
transitionDuration: const Duration(milliseconds: 200),
pageBuilder: (context, animation1, animation2) => dialog,
);
}
Future displayBottomSheet<T>(
Widget dialog, {
bool barrierDismissible = true,
bool enableDrag = false,
}) {
return showModalBottomSheet(
backgroundColor: Colors.white,
enableDrag: enableDrag,
shape: const RoundedRectangleBorder(
borderRadius: BorderRadius.only(
topLeft: Radius.circular(50.0),
topRight: Radius.circular(50.0),
),
),
context: navigatorKey.currentState!.overlay!.context,
isScrollControlled: true,
builder: (context) => dialog,
);
}
Future transBottomSheet<T>(
Widget dialog, {
bool barrierDismissible = true,
bool enableDrag = false,
}) {
return showModalBottomSheet(
backgroundColor: Colors.transparent,
enableDrag: enableDrag,
shape: const RoundedRectangleBorder(
borderRadius: BorderRadius.only(
topLeft: Radius.circular(50.0),
topRight: Radius.circular(50.0),
),
),
context: navigatorKey.currentState!.overlay!.context,
isScrollControlled: true,
builder: (context) => dialog,
);
}
Future<dynamic> pushReplacementNamed<T extends Object, TO extends Object>(
String routeName, {
TO? result,
Object? arguments,
}) {
return navigatorKey.currentState!.pushReplacementNamed(
routeName,
result: result,
arguments: arguments,
);
}
void popUntil(bool Function(Route<dynamic>) predicate) {
return navigatorKey.currentState?.popUntil(predicate);
}
Future<Object?> pushNamedAndRemoveUntil<T extends Object>(
String newRouteName,
bool Function(Route<dynamic>) predicate, {
Object? arguments,
}) {
return navigatorKey.currentState!.pushNamedAndRemoveUntil(
newRouteName,
predicate,
arguments: arguments,
);
}
ScaffoldFeatureController<SnackBar, SnackBarClosedReason> snackBar(
String message,
) {
return ScaffoldMessenger.of(
navigatorKey.currentState!.overlay!.context,
).showSnackBar(SnackBar(content: Text(message)));
}
// void openDrawer() {
// if (_endDrawerKey.currentState != null && _endDrawerOpened.value)
// _endDrawerKey.currentState!.close();
// _drawerKey.currentState?.open();
// }
}
''';