Skip to content

Commit c513de7

Browse files
authored
Merge pull request #715 from Flutterando/fix/714
fix: Parse params in RouteOutlet
2 parents e0583d5 + 8993253 commit c513de7

File tree

6 files changed

+37
-14
lines changed

6 files changed

+37
-14
lines changed

flutter_modular/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
## [5.0.2] - 2022-04-22
2+
- Fix: Parse params in RouteOutlet
13
## [5.0.1] - 2022-04-22
24
- Fix: Inject.get should return instance.
35

flutter_modular/lib/flutter_modular.dart

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ import 'src/presenter/navigation/modular_router_delegate.dart';
1212
import 'src/presenter/navigation/router_outlet_delegate.dart';
1313

1414
export 'package:flutter_modular_annotations/flutter_modular_annotations.dart';
15-
export 'package:modular_core/modular_core.dart' show ModularRoute, Disposable, ReassembleMixin;
15+
export 'package:modular_core/modular_core.dart'
16+
show ModularRoute, Disposable, ReassembleMixin;
1617

1718
export 'src/presenter/guards/route_guard.dart';
1819
export 'src/presenter/models/bind.dart';
@@ -53,7 +54,10 @@ void cleanGlobals() {
5354

5455
extension InjectorExtends on Injector {
5556
/// get arguments
56-
ModularArguments get args => injector.get<GetArguments>().call().getOrElse((l) => ModularArguments.empty());
57+
ModularArguments get args => injector
58+
.get<GetArguments>()
59+
.call()
60+
.getOrElse((l) => ModularArguments.empty());
5761
}
5862

5963
/// It acts as a Nested Browser that will be populated by the children of this route.
@@ -86,9 +90,11 @@ class RouterOutletState extends State<RouterOutlet> {
8690
void didChangeDependencies() {
8791
super.didChangeDependencies();
8892
final modal = (ModalRoute.of(context)?.settings as ModularPage);
89-
delegate ??= RouterOutletDelegate(modal.route.uri.toString(), injector.get<ModularRouterDelegate>(), navigatorKey);
93+
delegate ??= RouterOutletDelegate(modal.route.uri.toString(),
94+
injector.get<ModularRouterDelegate>(), navigatorKey);
9095
final router = Router.of(context);
91-
_backButtonDispatcher = router.backButtonDispatcher!.createChildBackButtonDispatcher();
96+
_backButtonDispatcher =
97+
router.backButtonDispatcher!.createChildBackButtonDispatcher();
9298
}
9399

94100
@override

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,9 @@ class ModularRouteInformationParser
5858
{dynamic arguments, void Function(dynamic)? popCallback}) async {
5959
var route = await selectRoute(path, arguments: arguments);
6060

61+
final modularArgs =
62+
getArguments().getOrElse((l) => ModularArguments.empty());
63+
6164
if (popCallback != null) {
6265
route = route.copyWith(popCallback: popCallback);
6366
}
@@ -78,6 +81,8 @@ class ModularRouteInformationParser
7881
book.routes.insert(0, child);
7982
}
8083

84+
setArguments(modularArgs);
85+
8186
for (var booksRoute in book.routes) {
8287
reportPush(booksRoute);
8388
}

flutter_modular/lib/src/presenter/widgets/widget_module.dart

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,12 @@ abstract class WidgetModule extends StatelessWidget implements BindContextImpl {
3636
final List<Module> imports = const [];
3737

3838
@override
39-
List<BindEntry> get instanciatedSingletons => _fakeModule.instanciatedSingletons;
39+
List<BindEntry> get instanciatedSingletons =>
40+
_fakeModule.instanciatedSingletons;
4041

4142
@override
42-
void instantiateSingletonBinds(List<BindEntry<Object>> singletons, Injector injector) {
43+
void instantiateSingletonBinds(
44+
List<BindEntry<Object>> singletons, Injector injector) {
4345
_fakeModule.instantiateSingletonBinds(singletons, injector);
4446
}
4547

@@ -66,7 +68,8 @@ abstract class WidgetModule extends StatelessWidget implements BindContextImpl {
6668
}
6769

6870
@override
69-
void changeBinds(List<BindContract<Object>> newBinds) => _fakeModule.changeBinds(newBinds);
71+
void changeBinds(List<BindContract<Object>> newBinds) =>
72+
_fakeModule.changeBinds(newBinds);
7073

7174
@override
7275
// ignore: invalid_use_of_visible_for_testing_member
@@ -84,13 +87,15 @@ class ModularProvider<T extends BindContext> extends StatefulWidget {
8487
final BindContext module;
8588
final Widget child;
8689

87-
const ModularProvider({Key? key, required this.module, required this.child}) : super(key: key);
90+
const ModularProvider({Key? key, required this.module, required this.child})
91+
: super(key: key);
8892

8993
@override
9094
_ModularProviderState createState() => _ModularProviderState<T>();
9195
}
9296

93-
class _ModularProviderState<T extends BindContext> extends State<ModularProvider> {
97+
class _ModularProviderState<T extends BindContext>
98+
extends State<ModularProvider> {
9499
@override
95100
void initState() {
96101
super.initState();

flutter_modular/pubspec.yaml

Lines changed: 1 addition & 1 deletion
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: 5.0.1
3+
version: 5.0.2
44
homepage: https://github.com/Flutterando/modular
55

66
environment:

flutter_modular/test/src/infra/services/bind_service_impl_test.dart

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,16 @@ void main() {
1414

1515
group('getBind', () {
1616
test('should get bind', () {
17-
when(() => injector.getBind<String>()).thenReturn(BindEntry(bind: Bind<String>((i) => ''), value: 'test'));
18-
expect(service.getBind<String>().map((r) => r.value).getOrElse((left) => ''), 'test');
17+
when(() => injector.getBind<String>())
18+
.thenReturn(BindEntry(bind: Bind<String>((i) => ''), value: 'test'));
19+
expect(
20+
service.getBind<String>().map((r) => r.value).getOrElse((left) => ''),
21+
'test');
1922
});
2023
test('should throw error not found bind', () {
2124
when(() => injector.getBind<String>()).thenThrow(BindNotFound('String'));
22-
expect(service.getBind<String>().fold(id, id), isA<BindNotFoundException>());
25+
expect(
26+
service.getBind<String>().fold(id, id), isA<BindNotFoundException>());
2327
});
2428
});
2529

@@ -33,7 +37,8 @@ void main() {
3337
group('releaseScopedBinds', () {
3438
test('should return true', () {
3539
when(() => injector.removeScopedBinds());
36-
expect(service.releaseScopedBinds().getOrElse((left) => throw left), unit);
40+
expect(
41+
service.releaseScopedBinds().getOrElse((left) => throw left), unit);
3742
});
3843
});
3944
}

0 commit comments

Comments
 (0)