Toggle navigation
Toggle navigation
This project
Loading...
Sign in
flutter_package
/
fluttertpc_get
Go to a project
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
Schaban
2020-11-27 14:31:28 +0100
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
07722a060496db2310e1dda0b921670605ebfc75
07722a06
1 parent
8bf7603e
Add onPageCalled
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
34 additions
and
16 deletions
lib/get_navigation/src/root/get_cupertino_app.dart
lib/get_navigation/src/root/get_material_app.dart
lib/get_navigation/src/routes/route_middleware.dart
lib/get_navigation/src/root/get_cupertino_app.dart
View file @
07722a0
...
...
@@ -190,14 +190,15 @@ class GetCupertinoApp extends StatelessWidget {
Route
<
dynamic
>
generator
(
RouteSettings
settings
)
{
var
match
=
Get
.
routeTree
.
matchRoute
(
settings
.
name
);
final
redirect
=
MiddlewareRunner
(
match
.
route
.
middlewares
).
runOnPageCalled
();
if
(!
redirect
.
isNullOrBlank
)
{
var
runner
=
MiddlewareRunner
(
match
.
route
.
middlewares
);
var
redirect
=
runner
.
runRedirect
();
while
(!
redirect
.
isNullOrBlank
)
{
match
=
Get
.
routeTree
.
matchRoute
(
redirect
);
runner
=
MiddlewareRunner
(
match
.
route
.
middlewares
);
redirect
=
runner
.
runRedirect
();
}
Get
.
parameters
=
match
?.
parameters
;
if
(
match
?.
route
==
null
)
{
return
GetPageRoute
(
page:
unknownRoute
.
page
,
...
...
@@ -218,6 +219,7 @@ class GetCupertinoApp extends StatelessWidget {
);
}
match
.
route
=
runner
.
runOnPageCalled
(
match
.
route
);
return
GetPageRoute
(
page:
match
.
route
.
page
,
parameter:
match
.
route
.
parameter
,
...
...
lib/get_navigation/src/root/get_material_app.dart
View file @
07722a0
...
...
@@ -202,7 +202,7 @@ class GetMaterialApp extends StatelessWidget {
var
match
=
Get
.
routeTree
.
matchRoute
(
settings
.
name
);
final
redirect
=
MiddlewareRunner
(
match
.
route
.
middlewares
).
run
OnPageCalled
();
MiddlewareRunner
(
match
.
route
.
middlewares
).
run
Redirect
();
if
(!
redirect
.
isNullOrBlank
)
{
match
=
Get
.
routeTree
.
matchRoute
(
redirect
);
}
...
...
lib/get_navigation/src/routes/route_middleware.dart
View file @
07722a0
...
...
@@ -22,7 +22,7 @@ abstract class _RouteMiddleware {
/// you can use it to redirect befor anything in this page happend.
/// {@tool snippet}
/// ```dart
/// GetPage
onPageCalled
( ) {
/// GetPage
redirect
( ) {
/// final authService = Get.find<AuthService>();
/// return authService.isAuthed ? null : '/login';
/// }
...
...
@@ -30,6 +30,19 @@ abstract class _RouteMiddleware {
/// {@end-tool}
String
redirect
();
/// This function will be called when this Page is called
/// you can use it to change something about the page or give it new page
/// {@tool snippet}
/// ```dart
/// GetPage onPageCalled(GetPage page) {
/// final authService = Get.find<AuthService>();
/// page.title = 'Wellcome ${authService.UserName}';
/// return page;
/// }
/// ```
/// {@end-tool}
GetPage
onPageCalled
(
GetPage
page
);
/// This function will be called right before the [Bindings] are initialize.
/// Here you can change [Bindings] for this page
List
<
Bindings
>
onBindingsStart
(
List
<
Bindings
>
bindings
);
...
...
@@ -55,18 +68,22 @@ class GetMiddleware implements _RouteMiddleware {
GetMiddleware
({
this
.
priority
});
@override
String
redirect
()
=>
''
;
@override
GetPage
onPageCalled
(
GetPage
page
)
=>
page
;
@override
List
<
Bindings
>
onBindingsStart
(
List
<
Bindings
>
bindings
)
=>
bindings
;
@override
GetPageBuilder
onPageBuildStart
(
GetPageBuilder
page
)
=>
page
;
@override
Widget
onPageBuilt
(
Widget
page
)
=>
page
;
@override
void
onPageDispose
()
{}
@override
String
redirect
()
=>
''
;
}
class
MiddlewareRunner
{
...
...
@@ -82,15 +99,14 @@ class MiddlewareRunner {
return
<
GetMiddleware
>[];
}
List
<
GetMiddleware
>
getMiddlewares
()
{
if
(
_middlewares
!=
null
)
{
_middlewares
.
sort
((
a
,
b
)
=>
a
.
priority
.
compareTo
(
b
.
priority
));
return
_middlewares
;
}
return
<
GetMiddleware
>[];
GetPage
runOnPageCalled
(
GetPage
page
)
{
_getMiddlewares
().
forEach
((
element
)
{
page
=
element
.
onPageCalled
(
page
);
});
return
page
;
}
String
run
OnPageCalled
()
{
String
run
Redirect
()
{
var
to
=
''
;
_getMiddlewares
().
forEach
((
element
)
{
to
=
element
.
redirect
();
...
...
Please
register
or
login
to post a comment