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:06:38 +0100
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
8bf7603ebdd627e6f0c36f21f31ced37ba824bb9
8bf7603e
1 parent
b7c02026
Add GetMiddleware
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
58 additions
and
11 deletions
lib/get_navigation/src/routes/default_route.dart
lib/get_navigation/src/routes/get_route.dart
lib/get_navigation/src/routes/route_middleware.dart
test/navigation/middleware_test.dart
lib/get_navigation/src/routes/default_route.dart
View file @
8bf7603
...
...
@@ -66,7 +66,7 @@ class GetPageRoute<T> extends PageRoute<T> {
final
Alignment
alignment
;
final
List
<
Get
Page
Middleware
>
middlewares
;
final
List
<
GetMiddleware
>
middlewares
;
@override
final
Color
barrierColor
;
...
...
lib/get_navigation/src/routes/get_route.dart
View file @
8bf7603
...
...
@@ -23,7 +23,7 @@ class GetPage {
final
bool
fullscreenDialog
;
final
RouteSettings
settings
;
final
List
<
GetPage
>
children
;
final
List
<
Get
Page
Middleware
>
middlewares
;
final
List
<
GetMiddleware
>
middlewares
;
const
GetPage
({
@required
this
.
name
,
...
...
lib/get_navigation/src/routes/route_middleware.dart
View file @
8bf7603
import
'package:flutter/cupertino.dart'
;
import
'../../../get.dart'
;
/// The Page Middlewares
/// The Functions will be called in this order
/// (( [onPageCalled] -> [onBindingsStart] -> [onPageBuildStart] ->
/// [onPageBuilt] -> [onPageDispose] ))
abstract
class
GetPageMiddleware
{
abstract
class
_RouteMiddleware
{
/// The Order of the Middlewares to run.
///
/// {@tool snippet}
/// This Middewares will be called in this order.
/// ```dart
/// final middlewares = [
/// GetMiddleware(priority: 2),
/// GetMiddleware(priority: 5),
/// GetMiddleware(priority: 4),
/// GetMiddleware(priority: -8),
/// ];
/// ```
/// -8 => 2 => 4 => 5
/// {@end-tool}
int
priority
;
/// This function will be the first thing to call when this Page is called
...
...
@@ -21,11 +30,12 @@ abstract class GetPageMiddleware {
/// {@end-tool}
String
redirect
();
///This function will be called right before the [Bindings] are initialize.
///
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
);
/// This function will be called right after the [Bindings] are initialize.
/// Here you can change the Page to build
GetPageBuilder
onPageBuildStart
(
GetPageBuilder
page
);
// Get the built page
...
...
@@ -34,17 +44,50 @@ abstract class GetPageMiddleware {
void
onPageDispose
();
}
/// The Page Middlewares.
/// The Functions will be called in this order
/// (( [redirect] -> [onBindingsStart] -> [onPageBuildStart] ->
/// [onPageBuilt] -> [onPageDispose] ))
class
GetMiddleware
implements
_RouteMiddleware
{
@override
int
priority
=
0
;
GetMiddleware
({
this
.
priority
});
@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
{
MiddlewareRunner
(
this
.
_middlewares
);
final
List
<
GetPageMiddleware
>
_middlewares
;
final
List
<
GetMiddleware
>
_middlewares
;
List
<
GetMiddleware
>
_getMiddlewares
()
{
if
(
_middlewares
!=
null
)
{
_middlewares
.
sort
((
a
,
b
)
=>
a
.
priority
.
compareTo
(
b
.
priority
));
return
_middlewares
;
}
return
<
GetMiddleware
>[];
}
List
<
Get
PageMiddleware
>
_
getMiddlewares
()
{
List
<
Get
Middleware
>
getMiddlewares
()
{
if
(
_middlewares
!=
null
)
{
_middlewares
.
sort
((
a
,
b
)
=>
a
.
priority
.
compareTo
(
b
.
priority
));
return
_middlewares
;
}
return
<
Get
Page
Middleware
>[];
return
<
GetMiddleware
>[];
}
String
runOnPageCalled
()
{
...
...
test/navigation/middleware_test.dart
0 → 100644
View file @
8bf7603
main
(
)
{
}
\ No newline at end of file
...
...
Please
register
or
login
to post a comment