routes.dart
3.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import 'package:flutter/widgets.dart';
import 'getroute.dart';
class Get {
static Get _get;
static GlobalKey<NavigatorState> key = new GlobalKey<NavigatorState>();
///Use Get.to instead of Navigator.push, Get.off instead of Navigator.pushReplacement,
///Get.offAll instead of Navigator.pushAndRemoveUntil. For named routes just add "named"
///after them. Example: Get.toNamed, Get.offNamed, and Get.AllNamed.
///To return to the previous screen, use Get.back().
///No need to pass any context to Get, just put the name of the route inside
///the parentheses and the magic will occur.
factory Get() {
if (_get == null) _get = Get._();
return _get;
}
///Use Get.to instead of Navigator.push, Get.off instead of Navigator.pushReplacement,
///Get.offAll instead of Navigator.pushAndRemoveUntil. For named routes just add "named"
///after them. Example: Get.toNamed, Get.offNamed, and Get.AllNamed.
///To return to the previous screen, use Get.back().
///No need to pass any context to Get, just put the name of the route inside
///the parentheses and the magic will occur.
Get._();
/// It replaces Navigator.push, but needs no context, and it doesn't have the Navigator.push
/// routes rebuild bug present in Flutter. If for some strange reason you want the default behavior
/// of rebuilding every app after a route, use rebuildRoutes = true as the parameter.
static to(Widget page, {bool rebuildRoutes = false}) {
return key.currentState
.push(GetRoute(opaque: rebuildRoutes, builder: (_) => page));
}
/// It replaces Navigator.pushNamed, but needs no context, and it doesn't have the Navigator.pushNamed
/// routes rebuild bug present in Flutter. If for some strange reason you want the default behavior
/// of rebuilding every app after a route, use rebuildRoutes = true as the parameter.
static toNamed(String page, {arguments}) {
return key.currentState.pushNamed(page, arguments: arguments);
}
/// It replaces Navigator.pushReplacementNamed, but needs no context.
static offNamed(String page, {arguments}) {
return key.currentState.pushReplacementNamed(page, arguments: arguments);
}
/// It replaces Navigator.popUntil, but needs no context.
static until(String page, predicate) {
return key.currentState.popUntil(predicate);
}
/// It replaces Navigator.pushAndRemoveUntil, but needs no context.
static offUntil(page, predicate) {
return key.currentState.pushAndRemoveUntil(page, predicate);
}
/// It replaces Navigator.pushNamedAndRemoveUntil, but needs no context.
static offNamedUntil(page, predicate) {
return key.currentState.pushNamedAndRemoveUntil(page, predicate);
}
/// It replaces Navigator.removeRoute, but needs no context.
static removeRoute(route) {
return key.currentState.removeRoute(route);
}
/// It replaces Navigator.pushNamedAndRemoveUntil, but needs no context.
static offAllNamed(
String newRouteName,
RoutePredicate predicate, {
arguments,
}) {
return key.currentState
.pushNamedAndRemoveUntil(newRouteName, predicate, arguments: arguments);
}
/// It replaces Navigator.pop, but needs no context.
static back({result}) {
return key.currentState.pop(result);
}
/// It replaces Navigator.pushReplacement, but needs no context, and it doesn't have the Navigator.pushReplacement
/// routes rebuild bug present in Flutter. If for some strange reason you want the default behavior
/// of rebuilding every app after a route, use rebuildRoutes = true as the parameter.
static off(Widget page, {bool rebuildRoutes = false}) {
return key.currentState
.pushReplacement(GetRoute(opaque: rebuildRoutes, builder: (_) => page));
}
/// It replaces Navigator.pushAndRemoveUntil, but needs no context
static offAll(Widget page, RoutePredicate predicate,
{bool rebuildRoutes = false}) {
return key.currentState.pushAndRemoveUntil(
GetRoute(opaque: rebuildRoutes, builder: (_) => page), predicate);
}
}