no_context_navigation
एक फ्लटर पैकेज जो कंटेक्स्ट (BuildContext) के बिना स्क्रीन (रूट्स) के बीच नेविगेट करने के लिए बनाया गया है।
एक फ्लटर पैकेज जो कॉन्टेक्स्ट (BuildContext) के बिना स्क्रीन्स के बीच नेविगेट करने के लिए बनाया गया है
{"sdk":"flutter"}{"sdk":"flutter"}यह अंग्रेज़ी मूल स्नैपशॉट है। नवीनतम सामग्री GitHub पर देखें।
No Context Navigation Package - pub.dev
Instead of using Navigator.of(context).pushNamed or some other method like pop() or pushReplacementNamed() USING context. With this package you don't need to anymore.
This service use a GlobalKey of type NavigatorState which can be used across the entire applicaton.
Now, you only need to this:
navService.pushNamed('/detail_screen', args: 'From Home Screen');
But first, add the navigationKey to your MaterialApp's navigationKey property:
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
//Over here
navigatorKey: NavigationService.navigationKey,
onGenerateRoute: (RouteSettings settings) {
switch (settings.name) {
case '/':
return MaterialPageRoute(builder: (_) => HomeScreen());
case '/detail_screen':
return MaterialPageRoute(builder: (_) => DetailScreen(message: settings.arguments));
default:
return null;
}
},
);
}
}
Use navService object to be able to acess those methods:
import 'package:flutter/material.dart';
final NavigationService navService = NavigationService();
class NavigationService<T, U> {
static GlobalKey<NavigatorState> navigationKey = GlobalKey<NavigatorState>();
Future<T> pushNamed(String routeName, {Object args}) async =>
navigationKey.currentState.pushNamed<T>(
routeName,
arguments: args,
);
Future<T> push(Route<T> route) async =>
navigationKey.currentState.push<T>(route);
Future<T> pushReplacementNamed(String routeName, {Object args}) async =>
navigationKey.currentState.pushReplacementNamed<T, U>(
routeName,
arguments: args,
);
Future<T> pushNamedAndRemoveUntil(
String routeName, {
Object args,
bool keepPreviousPages = false,
}) async =>
navigationKey.currentState.pushNamedAndRemoveUntil<T>(
routeName,
(Route<dynamic> route) => keepPreviousPages,
arguments: args,
);
Future<T> pushAndRemoveUntil(
Route<T> route, {
bool keepPreviousPages = false,
}) async =>
navigationKey.currentState.pushAndRemoveUntil<T>(
route,
(Route<dynamic> route) => keepPreviousPages,
);
Future<bool> maybePop([Object args]) async =>
navigationKey.currentState.maybePop<bool>(args);
bool canPop() => navigationKey.currentState.canPop();
void goBack({T result}) => navigationKey.currentState.pop<T>(result);
}
Hope you enjoy!