Skip to content

Commit 3d8613c

Browse files
committed
fixed push named and tracker
1 parent 1454f41 commit 3d8613c

File tree

8 files changed

+48
-88
lines changed

8 files changed

+48
-88
lines changed

flutter_modular/.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,3 +44,7 @@ app.*.map.json
4444
/android/app/debug
4545
/android/app/profile
4646
/android/app/release
47+
48+
49+
# coverage
50+
coverage/

flutter_modular/CHANGELOG.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
## [4.0.0+11] - 2021-09-16
1+
## [4.0.1] - 2021-09-22
2+
* Fixed pushNamed.
3+
* Fixed bug that allowed access to parameters and arguments in other modules.
4+
* Fixed transitions bug.
5+
6+
## [4.0.0+12] - 2021-09-16
27

38
* New documentation is here! [https://modular.flutterando.com.br](https://modular.flutterando.com.br).
49
* Modular design now uses Layered Architecture (Clean Architecture) with 100% code coverage.

flutter_modular/lib/src/presenter/navigation/modular_router_delegate.dart

Lines changed: 21 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,7 @@ class ModularRouterDelegate extends RouterDelegate<ModularBook>
2828
final ReportPop reportPop;
2929
List<NavigatorObserver> observers = [];
3030

31-
ModularRouterDelegate(
32-
{required this.parser,
33-
required this.navigatorKey,
34-
required this.reportPop});
31+
ModularRouterDelegate({required this.parser, required this.navigatorKey, required this.reportPop});
3532

3633
@override
3734
ModularBook? currentConfiguration;
@@ -70,11 +67,8 @@ class ModularRouterDelegate extends RouterDelegate<ModularBook>
7067
Future<void> setNewRoutePath(ModularBook book) async {
7168
final disposableRoutes = <ParallelRoute>[];
7269

73-
for (var route
74-
in currentConfiguration?.routes ?? <ParallelRoute<dynamic>>[]) {
75-
if (book.routes
76-
.indexWhere((element) => element.uri.path == route.uri.path) ==
77-
-1) {
70+
for (var route in currentConfiguration?.routes ?? <ParallelRoute<dynamic>>[]) {
71+
if (book.routes.indexWhere((element) => element.uri.path == route.uri.path) == -1) {
7872
disposableRoutes.add(route);
7973
}
8074
}
@@ -85,10 +79,6 @@ class ModularRouterDelegate extends RouterDelegate<ModularBook>
8579
for (var disposableRoute in disposableRoutes) {
8680
reportPop.call(disposableRoute);
8781
}
88-
89-
final arguments =
90-
parser.getArguments().getOrElse((l) => ModularArguments.empty());
91-
parser.setArguments(arguments.copyWith(params: {}, data: null));
9282
}
9383

9484
var _lastClick = DateTime.now();
@@ -116,37 +106,28 @@ class ModularRouterDelegate extends RouterDelegate<ModularBook>
116106
final parallel = page.route;
117107
parallel.popCallback?.call(result);
118108
currentConfiguration?.routes.remove(parallel);
119-
reportPop.call(parallel);
120-
final arguments =
121-
parser.getArguments().getOrElse((l) => ModularArguments.empty());
109+
if (currentConfiguration?.routes.indexWhere((element) => element.uri.toString() == parallel.uri.toString()) == -1) {
110+
reportPop.call(parallel);
111+
}
112+
final arguments = parser.getArguments().getOrElse((l) => ModularArguments.empty());
122113
parser.setArguments(arguments.copyWith(uri: currentConfiguration!.uri));
123114
notifyListeners();
124115

125116
return true;
126117
}
127118

128119
@override
129-
Future<T?> pushNamed<T extends Object?>(String routeName,
130-
{Object? arguments, bool forRoot = false}) async {
120+
Future<T?> pushNamed<T extends Object?>(String routeName, {Object? arguments, bool forRoot = false}) async {
131121
final popComplete = Completer();
132-
var book = await parser.selectBook(routeName,
133-
arguments: arguments, popCallback: popComplete.complete);
122+
var book = await parser.selectBook(routeName, arguments: arguments, popCallback: popComplete.complete);
134123
if (forRoot) {
135-
book = currentConfiguration!.copyWith(routes: [
136-
...currentConfiguration!.routes,
137-
book.routes.last.copyWith(schema: '')
138-
]);
124+
book = currentConfiguration!.copyWith(routes: [...currentConfiguration!.routes, book.routes.last.copyWith(schema: '')]);
139125
await setNewRoutePath(book);
140126
} else {
141127
final list = [...currentConfiguration!.routes];
142128

143129
for (var route in book.routes.reversed) {
144-
if (list
145-
.firstWhere(
146-
(element) => element.uri.toString() == route.uri.toString(),
147-
orElse: () => ParallelRoute.empty())
148-
.name ==
149-
'') {
130+
if (list.firstWhere((element) => element.uri.toString() == route.uri.toString(), orElse: () => ParallelRoute.empty()).name == '') {
150131
list.add(route);
151132
}
152133
}
@@ -162,31 +143,20 @@ class ModularRouterDelegate extends RouterDelegate<ModularBook>
162143
}
163144

164145
@override
165-
Future<T?> pushReplacementNamed<T extends Object?, TO extends Object?>(
166-
String routeName,
167-
{TO? result,
168-
Object? arguments,
169-
bool forRoot = false}) async {
146+
Future<T?> pushReplacementNamed<T extends Object?, TO extends Object?>(String routeName, {TO? result, Object? arguments, bool forRoot = false}) async {
170147
final popComplete = Completer();
171-
var book = await parser.selectBook(routeName,
172-
arguments: arguments, popCallback: popComplete.complete);
148+
var book = await parser.selectBook(routeName, arguments: arguments, popCallback: popComplete.complete);
173149
final currentRoutes = [...currentConfiguration!.routes];
174150
if (forRoot) {
175151
currentRoutes.removeWhere((element) => element.schema != '');
176152
currentRoutes.removeLast();
177-
book = currentConfiguration!.copyWith(
178-
routes: [...currentRoutes, book.routes.first.copyWith(schema: '')]);
153+
book = currentConfiguration!.copyWith(routes: [...currentRoutes, book.routes.first.copyWith(schema: '')]);
179154
await setNewRoutePath(book);
180155
} else {
181156
final list = [...currentConfiguration!.routes]..removeLast();
182157

183158
for (var route in book.routes.reversed) {
184-
if (list
185-
.firstWhere(
186-
(element) => element.uri.toString() == route.uri.toString(),
187-
orElse: () => ParallelRoute.empty())
188-
.name ==
189-
'') {
159+
if (list.firstWhere((element) => element.uri.toString() == route.uri.toString(), orElse: () => ParallelRoute.empty()).name == '') {
190160
list.add(route);
191161
}
192162
}
@@ -197,11 +167,7 @@ class ModularRouterDelegate extends RouterDelegate<ModularBook>
197167
}
198168

199169
@override
200-
Future<T?> popAndPushNamed<T extends Object?, TO extends Object?>(
201-
String routeName,
202-
{TO? result,
203-
Object? arguments,
204-
bool forRoot = false}) {
170+
Future<T?> popAndPushNamed<T extends Object?, TO extends Object?>(String routeName, {TO? result, Object? arguments, bool forRoot = false}) {
205171
pop(result);
206172
return pushNamed(routeName, arguments: arguments);
207173
}
@@ -210,20 +176,15 @@ class ModularRouterDelegate extends RouterDelegate<ModularBook>
210176
bool canPop() => navigatorKey.currentState?.canPop() ?? false;
211177

212178
@override
213-
Future<bool> maybePop<T extends Object?>([T? result]) =>
214-
navigatorKey.currentState?.maybePop(result) ?? Future.value(false);
179+
Future<bool> maybePop<T extends Object?>([T? result]) => navigatorKey.currentState?.maybePop(result) ?? Future.value(false);
215180

216181
@override
217-
void pop<T extends Object?>([T? result]) =>
218-
navigatorKey.currentState?.pop(result);
182+
void pop<T extends Object?>([T? result]) => navigatorKey.currentState?.pop(result);
219183

220184
@override
221185
void popUntil(bool Function(Route) predicate) {
222186
var isFoundedPages = currentConfiguration?.routes.where((route) {
223-
return predicate(CustomModalRoute(ModularPage(
224-
route: route,
225-
args: ModularArguments.empty(),
226-
flags: ModularFlags())));
187+
return predicate(CustomModalRoute(ModularPage(route: route, args: ModularArguments.empty(), flags: ModularFlags())));
227188
});
228189

229190
isFoundedPages ??= [];
@@ -235,9 +196,7 @@ class ModularRouterDelegate extends RouterDelegate<ModularBook>
235196
}
236197

237198
@override
238-
Future<T?> pushNamedAndRemoveUntil<T extends Object?>(
239-
String newRouteName, bool Function(Route) predicate,
240-
{Object? arguments, bool forRoot = false}) {
199+
Future<T?> pushNamedAndRemoveUntil<T extends Object?>(String newRouteName, bool Function(Route) predicate, {Object? arguments, bool forRoot = false}) {
241200
popUntil(predicate);
242201
return pushNamed<T>(newRouteName, arguments: arguments, forRoot: forRoot);
243202
}
@@ -264,8 +223,7 @@ class CustomModalRoute extends ModalRoute {
264223
String? get barrierLabel => throw UnimplementedError();
265224

266225
@override
267-
Widget buildPage(BuildContext context, Animation<double> animation,
268-
Animation<double> secondaryAnimation) {
226+
Widget buildPage(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation) {
269227
throw UnimplementedError();
270228
}
271229

flutter_modular/pubspec.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: flutter_modular
22
description: Smart project structure with dependency injection and route management
3-
version: 4.0.0+11
3+
version: 4.0.1
44
homepage: https://github.com/Flutterando/modular
55

66
environment:
@@ -9,7 +9,7 @@ environment:
99
dependencies:
1010
flutter_modular_annotations: ^0.0.2
1111
triple: ">=1.3.0+2 <2.0.0"
12-
modular_core: ">=1.0.3 <=2.0.0"
12+
modular_core: ">=1.0.4 <=2.0.0"
1313
meta: ">=1.3.0 <2.0.0"
1414
flutter:
1515
sdk: flutter

modular_core/CHANGELOG.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
## 1.0.0+1 - 2021/09/21
2-
* Fix ordenation routes
1+
## 1.0.4 - 2021/09/22
2+
* Rebuild modularArguments after get route
33
## 1.0.0+1 - 2021/09/05
44
* Stable version
55

modular_core/lib/src/route/tracker.dart

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,7 @@ class TrackerImpl implements Tracker {
2424

2525
String get currentPath => arguments.uri.toString();
2626

27-
FutureOr<ModularRoute?> findRoute(String path,
28-
{dynamic data, String schema = ''}) async {
27+
FutureOr<ModularRoute?> findRoute(String path, {dynamic data, String schema = ''}) async {
2928
var uri = _resolverPath(path);
3029
final modularKey = ModularKey(schema: schema, name: uri.path);
3130

@@ -41,13 +40,11 @@ class TrackerImpl implements Tracker {
4140
break;
4241
}
4342
}
44-
if (uriCandidate.pathSegments.length != uri.pathSegments.length &&
45-
!uriCandidate.path.contains('**')) {
43+
if (uriCandidate.pathSegments.length != uri.pathSegments.length && !uriCandidate.path.contains('**')) {
4644
continue;
4745
}
4846

49-
if (!(uriCandidate.path.contains(':') ||
50-
uriCandidate.path.contains('**'))) {
47+
if (!(uriCandidate.path.contains(':') || uriCandidate.path.contains('**'))) {
5148
continue;
5249
}
5350

@@ -75,7 +72,7 @@ class TrackerImpl implements Tracker {
7572

7673
if (route == null) return null;
7774

78-
_arguments = arguments.copyWith(data: data, uri: uri, params: params);
75+
_arguments = ModularArguments(uri: uri, data: data, params: params);
7976

8077
return route;
8178
}
@@ -139,6 +136,5 @@ class TrackerImpl implements Tracker {
139136
}
140137

141138
class TrackerNotInitiated extends ModularError {
142-
const TrackerNotInitiated(String message, [StackTrace? stackTrace])
143-
: super(message, stackTrace);
139+
const TrackerNotInitiated(String message, [StackTrace? stackTrace]) : super(message, stackTrace);
144140
}

modular_core/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: modular_core
22
description: Smart project structure with dependency injection and route management
3-
version: 1.0.3
3+
version: 1.0.4
44
homepage: https://github.com/Flutterando/modular
55

66
environment:

modular_core/test/src/route/tracker_test.dart

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ void main() {
3535

3636
route = await ModularTracker.findRoute('/product/test') as CustomRoute?;
3737
expect(route?.uri.path, '/product/test');
38+
expect(ModularTracker.currentPath, '/product/test');
39+
expect(ModularTracker.arguments.params['id'], isNull);
3840
});
3941

4042
test('find route with queries', () async {
@@ -53,8 +55,7 @@ void main() {
5355
});
5456

5557
test('find child route in other module', () async {
56-
var route =
57-
await ModularTracker.findRoute('/other/details') as CustomRoute?;
58+
var route = await ModularTracker.findRoute('/other/details') as CustomRoute?;
5859
expect(route?.uri.path, '/other/details');
5960
expect(route?.parent, '/other/');
6061
expect(route?.data, 'otherWithDetails');
@@ -64,8 +65,7 @@ void main() {
6465
});
6566

6667
test('find child route in deep module', () async {
67-
var route =
68-
await ModularTracker.findRoute('/other/internal/') as CustomRoute?;
68+
var route = await ModularTracker.findRoute('/other/internal/') as CustomRoute?;
6969
expect(route, isNotNull);
7070
ModularTracker.reportPushRoute(route!);
7171
expect(ModularTracker.injector.isModuleAlive<DeepModule>(), true);
@@ -75,8 +75,7 @@ void main() {
7575
ModularTracker.reportPopRoute(route);
7676
expect(ModularTracker.injector.isModuleAlive<DeepModule>(), false);
7777

78-
route =
79-
await ModularTracker.findRoute('/other/internal/deep') as CustomRoute?;
78+
route = await ModularTracker.findRoute('/other/internal/deep') as CustomRoute?;
8079
expect(route, isNotNull);
8180
ModularTracker.reportPushRoute(route!);
8281
expect(ModularTracker.injector.isModuleAlive<DeepModule>(), true);
@@ -92,15 +91,13 @@ void main() {
9291

9392
test('find route with schema', () async {
9493
expect(await ModularTracker.findRoute('/schema'), isNull);
95-
final route = await ModularTracker.findRoute('/schema', schema: 'tag')
96-
as CustomRoute?;
94+
final route = await ModularTracker.findRoute('/schema', schema: 'tag') as CustomRoute?;
9795
expect(route?.uri.path, '/schema');
9896
expect(route?.data, 'withSchema');
9997
});
10098

10199
test('find route with wildcard', () async {
102-
final route =
103-
await ModularTracker.findRoute('/wildcard/test/2') as CustomRoute?;
100+
final route = await ModularTracker.findRoute('/wildcard/test/2') as CustomRoute?;
104101
expect(route?.uri.path, '/wildcard/test/2');
105102
expect(route?.data, 'wildcard');
106103
});

0 commit comments

Comments
 (0)