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
Jonny Borges
2021-07-20 05:07:47 -0300
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
4e296f74f75fb171b93ec2f73d574616e299e9d7
4e296f74
1 parent
7a190806
change nav 2 api
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
55 additions
and
73 deletions
example_nav2/lib/app/modules/dashboard/views/dashboard_view.dart
example_nav2/lib/app/modules/home/controllers/home_controller.dart
example_nav2/lib/app/modules/home/views/home_view.dart
example_nav2/lib/app/modules/profile/views/profile_view.dart
example_nav2/lib/app/modules/root/views/root_view.dart
example_nav2/lib/app/routes/app_pages.dart
lib/get_navigation/src/nav2/get_router_delegate.dart
lib/get_navigation/src/nav2/router_outlet.dart
example_nav2/lib/app/modules/dashboard/views/dashboard_view.dart
View file @
4e296f7
import
'package:example_nav2/app/modules/dashboard/controllers/dashboard_controller.dart'
;
import
'package:flutter/material.dart'
;
import
'package:get/get.dart'
;
import
'../../home/controllers/home_controller.dart'
;
import
'../controllers/dashboard_controller.dart'
;
class
DashboardView
extends
GetView
<
DashboardController
>
{
@override
...
...
example_nav2/lib/app/modules/home/controllers/home_controller.dart
View file @
4e296f7
import
'dart:async'
;
import
'package:get/get.dart'
;
class
HomeController
extends
GetxController
{}
...
...
example_nav2/lib/app/modules/home/views/home_view.dart
View file @
4e296f7
...
...
@@ -3,7 +3,6 @@ import 'package:get/get.dart';
import
'../../../routes/app_pages.dart'
;
import
'../controllers/home_controller.dart'
;
import
'../../dashboard/views/dashboard_view.dart'
;
class
HomeView
extends
GetView
<
HomeController
>
{
@override
...
...
@@ -21,18 +20,11 @@ class HomeView extends GetView<HomeController> {
}
return
Scaffold
(
body:
GetRouterOutlet
(
name:
Routes
.
HOME
,
initialRoute:
Routes
.
DASHBOARD
,
// name: Routes.HOME,
//It's preferable to use emptyPage instead of emptyWidget
emptyPage:
(
delegate
)
=>
Get
.
routeTree
.
matchRoute
(
Routes
.
DASHBOARD
).
route
!,
pickPages:
(
currentNavStack
)
{
print
(
'Home RouterOutlet:
$currentNavStack
'
);
// will take any route after home
final
res
=
currentNavStack
.
currentTreeBranch
.
pickAfterRoute
(
Routes
.
HOME
);
return
res
;
},
// emptyPage: (delegate) =>
// Get.routeTree.matchRoute(Routes.DASHBOARD).route!,
),
bottomNavigationBar:
BottomNavigationBar
(
currentIndex:
currentIndex
,
...
...
example_nav2/lib/app/modules/profile/views/profile_view.dart
View file @
4e296f7
import
'package:example_nav2/app/routes/app_pages.dart'
;
import
'package:flutter/material.dart'
;
import
'package:get/get.dart'
;
import
'../../../routes/app_pages.dart'
;
import
'../controllers/profile_controller.dart'
;
class
ProfileView
extends
GetView
<
ProfileController
>
{
...
...
example_nav2/lib/app/modules/root/views/root_view.dart
View file @
4e296f7
...
...
@@ -18,14 +18,7 @@ class RootView extends GetView<RootController> {
centerTitle:
true
,
),
body:
GetRouterOutlet
(
name:
'rootView'
,
emptyPage:
(
delegate
)
=>
Get
.
routeTree
.
matchRoute
(
Routes
.
HOME
).
route
!,
pickPages:
(
currentNavStack
)
{
//show all routes here except the root view
print
(
'Root RouterOutlet:
$currentNavStack
'
);
return
currentNavStack
.
currentTreeBranch
.
skip
(
1
).
take
(
1
).
toList
();
},
initialRoute:
Routes
.
HOME
,
),
);
},
...
...
example_nav2/lib/app/routes/app_pages.dart
View file @
4e296f7
import
'package:get/get.dart'
;
import
'package:example_nav2/app/modules/dashboard/bindings/dashboard_binding.dart'
;
import
'package:example_nav2/app/modules/dashboard/views/dashboard_view.dart'
;
import
'../middleware/auth_middleware.dart'
;
import
'../modules/dashboard/bindings/dashboard_binding.dart'
;
import
'../modules/dashboard/views/dashboard_view.dart'
;
import
'../modules/home/bindings/home_binding.dart'
;
import
'../modules/home/views/home_view.dart'
;
import
'../modules/login/bindings/login_binding.dart'
;
...
...
@@ -44,6 +43,7 @@ class AppPages {
binding:
LoginBinding
(),
),
GetPage
(
participatesInRootNavigator:
false
,
preventDuplicates:
true
,
name:
_Paths
.
HOME
,
page:
()
=>
HomeView
(),
...
...
lib/get_navigation/src/nav2/get_router_delegate.dart
View file @
4e296f7
...
...
@@ -280,7 +280,6 @@ class GetDelegate extends RouterDelegate<GetNavConfig>
final
pages
=
getVisualPages
();
final
extraObservers
=
navigatorObservers
;
return
GetNavigator
(
name:
'root'
,
key:
navigatorKey
,
onPopPage:
_onPopVisualRoute
,
pages:
pages
,
...
...
@@ -420,14 +419,15 @@ class GetNavigator extends Navigator {
List
<
NavigatorObserver
>?
observers
,
bool
reportsRouteUpdateToEngine
=
false
,
TransitionDelegate
?
transitionDelegate
,
String
?
name
,
//
String? name,
})
:
super
(
//keys should be optional
key:
key
!=
null
?
key
:
name
!=
null
?
Get
.
nestedKey
(
name
)
:
null
,
key:
key
,
// key != null
// ? key
// : name != null
// ? Get.nestedKey(name)
// : null,
onPopPage:
onPopPage
??
(
route
,
result
)
{
final
didPop
=
route
.
didPop
(
result
);
...
...
@@ -439,7 +439,7 @@ class GetNavigator extends Navigator {
reportsRouteUpdateToEngine:
reportsRouteUpdateToEngine
,
pages:
pages
,
observers:
[
GetObserver
(),
//
GetObserver(),
if
(
observers
!=
null
)
...
observers
,
],
transitionDelegate:
...
...
lib/get_navigation/src/nav2/router_outlet.dart
View file @
4e296f7
...
...
@@ -76,36 +76,17 @@ class _RouterOutletState<TDelegate extends RouterDelegate<T>, T extends Object>
}
class
GetRouterOutlet
extends
RouterOutlet
<
GetDelegate
,
GetNavConfig
>
{
GetRouterOutlet
.
builder
({
required
Widget
Function
(
BuildContext
context
,
GetDelegate
delegate
,
GetNavConfig
?
currentRoute
,
)
builder
,
GetDelegate
?
routerDelegate
,
})
:
super
.
builder
(
builder:
builder
,
delegate:
routerDelegate
,
);
GetRouterOutlet
({
required
String
initialRoute
,
Widget
Function
(
GetDelegate
delegate
)?
emptyWidget
,
GetPage
Function
(
GetDelegate
delegate
)?
emptyPage
,
required
List
<
GetPage
>
Function
(
GetNavConfig
currentNavStack
)
pickPages
,
bool
Function
(
Route
<
dynamic
>,
dynamic
)?
onPopPage
,
String
?
name
,
})
:
assert
(
(
emptyPage
==
null
&&
emptyWidget
==
null
)
||
(
emptyPage
!=
null
&&
emptyWidget
==
null
)
||
(
emptyPage
==
null
&&
emptyWidget
!=
null
),
'Either use emptyPage or emptyWidget'
),
super
(
// String? name,
})
:
super
(
pageBuilder:
(
context
,
rDelegate
,
pages
)
{
final
pageRes
=
(
pages
??
<
GetPage
<
dynamic
>?>[
emptyPage
?.
call
(
rDelegate
)])
.
whereType
<
GetPage
<
dynamic
>>()
.
toList
();
final
route
=
Get
.
routeTree
.
matchRoute
(
initialRoute
);
final
pageRes
=
(
pages
??
<
GetPage
<
dynamic
>?>[
route
.
route
])
.
whereType
<
GetPage
<
dynamic
>>()
.
toList
();
if
(
pageRes
.
length
>
0
)
{
return
GetNavigator
(
onPopPage:
onPopPage
??
...
...
@@ -117,22 +98,41 @@ class GetRouterOutlet extends RouterOutlet<GetDelegate, GetNavConfig> {
return
true
;
},
pages:
pageRes
,
name:
name
,
//
name: name,
);
}
return
(
emptyWidget
?.
call
(
rDelegate
)
??
SizedBox
.
shrink
());
},
pickPages:
pickPages
,
pickPages:
(
currentNavStack
)
{
final
length
=
Uri
.
parse
(
initialRoute
).
pathSegments
.
length
;
return
currentNavStack
.
currentTreeBranch
.
skip
(
length
)
.
take
(
length
)
.
toList
();
},
delegate:
Get
.
rootDelegate
,
);
GetRouterOutlet
.
builder
({
required
Widget
Function
(
BuildContext
context
,
GetDelegate
delegate
,
GetNavConfig
?
currentRoute
,
)
builder
,
GetDelegate
?
routerDelegate
,
})
:
super
.
builder
(
builder:
builder
,
delegate:
routerDelegate
,
);
}
extension
PagesListExt
on
List
<
GetPage
>
{
List
<
GetPage
>
pickAtRoute
(
String
route
)
{
return
skipWhile
((
value
)
=>
value
.
name
!=
route
).
toList
();
}
// extension PagesListExt on List<GetPage> {
// List<GetPage> pickAtRoute(String route) {
// return skipWhile((value) => value.name != route).toList();
// }
List
<
GetPage
>
pickAfterRoute
(
String
route
)
{
return
skipWhile
((
value
)
=>
value
.
name
!=
route
).
skip
(
1
).
toList
();
}
}
// List<GetPage> pickAfterRoute(String route) {
// return skipWhile((value) => value.name != route).skip(1).toList();
// }
// }
...
...
Please
register
or
login
to post a comment