get 1.2.1 get: ^1.2.1 copied to clipboard
A consistent Flutter route navigation library that navigate with no context and not rebuild materialApp with each navigation.
Get #
A consistent Flutter route navigation library that navigate with no context and not rebuild materialApp with each navigation.
Getting Started #
Flutter's conventional navigation method has a route reconstruction bug that makes it inconsistent for large applications with undefined routes. Get came to solve this problem. In addition, Get needs no context, also solving Flutter's biggest problem with patterns like BLoC. Get also makes navigation much clearer and more concise for beginners and friendly to those who came from Web programming.
How to use? #
Add this to your package's pubspec.yaml file:
dependencies: get:
And import it:
import 'package:get/get.dart';
Add GetKey to your MaterialApp and enjoy:
MaterialApp(
navigatorKey: Get.key,
home: MyHome(),
)
To navigate to a new screen:
Get.to(NextScreen());
To return to previous screen
Get.back();
To go to the next screen and no option to go back to the previous screen (for use in SplashScreens, login screens and etc.)
Get.off(NextScreen());
To go to the next screen and cancel all previous routes (useful in shopping carts, polls, and tests)
Get.offAll(NextScreen());
Is possible used default namedRoutes from flutter? Yes, and with no navigation bug Example:
void main() {
runApp(MaterialApp(
onGenerateRoute: Router.generateRoute,
initialRoute: "/",
navigatorKey: Get.key,
title: 'Navigation',
));
}
class Router {
static Route<dynamic> generateRoute(RouteSettings settings) {
switch (settings.name) {
case '/':
return GetRoute(builder: (_) => FirstRoute());
case '/second':
return GetRoute(builder: (_) => SecondRoute());
default:
return GetRoute(
builder: (_) => Scaffold(
body: Center(
child: Text('No route defined for ${settings.name}')),
));
}
}
}
class FirstRoute extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('First Route'),
),
body: Center(
child: RaisedButton(
child: Text('Open route'),
onPressed: () {
Get.toNamed("/second");
},
),
),
);
}
}
class SecondRoute extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Second Route"),
),
body: Center(
child: RaisedButton(
onPressed: () {
Get.back();
},
child: Text('Go back!'),
),
),
);
}
}