diff --git a/flutter_modular/CHANGELOG.md b/flutter_modular/CHANGELOG.md index 69be5973..fa8a1bc1 100644 --- a/flutter_modular/CHANGELOG.md +++ b/flutter_modular/CHANGELOG.md @@ -1,3 +1,5 @@ +## [5.0.2] - 2022-04-22 +- Fix: Parse params in RouteOutlet ## [5.0.1] - 2022-04-22 - Fix: Inject.get should return instance. diff --git a/flutter_modular/lib/flutter_modular.dart b/flutter_modular/lib/flutter_modular.dart index 525a44ae..a878a96d 100644 --- a/flutter_modular/lib/flutter_modular.dart +++ b/flutter_modular/lib/flutter_modular.dart @@ -12,7 +12,8 @@ import 'src/presenter/navigation/modular_router_delegate.dart'; import 'src/presenter/navigation/router_outlet_delegate.dart'; export 'package:flutter_modular_annotations/flutter_modular_annotations.dart'; -export 'package:modular_core/modular_core.dart' show ModularRoute, Disposable, ReassembleMixin; +export 'package:modular_core/modular_core.dart' + show ModularRoute, Disposable, ReassembleMixin; export 'src/presenter/guards/route_guard.dart'; export 'src/presenter/models/bind.dart'; @@ -53,7 +54,10 @@ void cleanGlobals() { extension InjectorExtends on Injector { /// get arguments - ModularArguments get args => injector.get().call().getOrElse((l) => ModularArguments.empty()); + ModularArguments get args => injector + .get() + .call() + .getOrElse((l) => ModularArguments.empty()); } /// It acts as a Nested Browser that will be populated by the children of this route. @@ -86,9 +90,11 @@ class RouterOutletState extends State { void didChangeDependencies() { super.didChangeDependencies(); final modal = (ModalRoute.of(context)?.settings as ModularPage); - delegate ??= RouterOutletDelegate(modal.route.uri.toString(), injector.get(), navigatorKey); + delegate ??= RouterOutletDelegate(modal.route.uri.toString(), + injector.get(), navigatorKey); final router = Router.of(context); - _backButtonDispatcher = router.backButtonDispatcher!.createChildBackButtonDispatcher(); + _backButtonDispatcher = + router.backButtonDispatcher!.createChildBackButtonDispatcher(); } @override diff --git a/flutter_modular/lib/src/presenter/navigation/modular_route_information_parser.dart b/flutter_modular/lib/src/presenter/navigation/modular_route_information_parser.dart index f24d68b3..9a491905 100644 --- a/flutter_modular/lib/src/presenter/navigation/modular_route_information_parser.dart +++ b/flutter_modular/lib/src/presenter/navigation/modular_route_information_parser.dart @@ -58,6 +58,9 @@ class ModularRouteInformationParser {dynamic arguments, void Function(dynamic)? popCallback}) async { var route = await selectRoute(path, arguments: arguments); + final modularArgs = + getArguments().getOrElse((l) => ModularArguments.empty()); + if (popCallback != null) { route = route.copyWith(popCallback: popCallback); } @@ -78,6 +81,8 @@ class ModularRouteInformationParser book.routes.insert(0, child); } + setArguments(modularArgs); + for (var booksRoute in book.routes) { reportPush(booksRoute); } diff --git a/flutter_modular/lib/src/presenter/widgets/widget_module.dart b/flutter_modular/lib/src/presenter/widgets/widget_module.dart index c5c82f30..2c6b011d 100644 --- a/flutter_modular/lib/src/presenter/widgets/widget_module.dart +++ b/flutter_modular/lib/src/presenter/widgets/widget_module.dart @@ -36,10 +36,12 @@ abstract class WidgetModule extends StatelessWidget implements BindContextImpl { final List imports = const []; @override - List get instanciatedSingletons => _fakeModule.instanciatedSingletons; + List get instanciatedSingletons => + _fakeModule.instanciatedSingletons; @override - void instantiateSingletonBinds(List> singletons, Injector injector) { + void instantiateSingletonBinds( + List> singletons, Injector injector) { _fakeModule.instantiateSingletonBinds(singletons, injector); } @@ -66,7 +68,8 @@ abstract class WidgetModule extends StatelessWidget implements BindContextImpl { } @override - void changeBinds(List> newBinds) => _fakeModule.changeBinds(newBinds); + void changeBinds(List> newBinds) => + _fakeModule.changeBinds(newBinds); @override // ignore: invalid_use_of_visible_for_testing_member @@ -84,13 +87,15 @@ class ModularProvider extends StatefulWidget { final BindContext module; final Widget child; - const ModularProvider({Key? key, required this.module, required this.child}) : super(key: key); + const ModularProvider({Key? key, required this.module, required this.child}) + : super(key: key); @override _ModularProviderState createState() => _ModularProviderState(); } -class _ModularProviderState extends State { +class _ModularProviderState + extends State { @override void initState() { super.initState(); diff --git a/flutter_modular/pubspec.yaml b/flutter_modular/pubspec.yaml index 69ee4d8b..b4dd063d 100644 --- a/flutter_modular/pubspec.yaml +++ b/flutter_modular/pubspec.yaml @@ -1,6 +1,6 @@ name: flutter_modular description: Smart project structure with dependency injection and route management -version: 5.0.1 +version: 5.0.2 homepage: https://github.com/Flutterando/modular environment: diff --git a/flutter_modular/test/src/infra/services/bind_service_impl_test.dart b/flutter_modular/test/src/infra/services/bind_service_impl_test.dart index e45f67d8..44c58d76 100644 --- a/flutter_modular/test/src/infra/services/bind_service_impl_test.dart +++ b/flutter_modular/test/src/infra/services/bind_service_impl_test.dart @@ -14,12 +14,16 @@ void main() { group('getBind', () { test('should get bind', () { - when(() => injector.getBind()).thenReturn(BindEntry(bind: Bind((i) => ''), value: 'test')); - expect(service.getBind().map((r) => r.value).getOrElse((left) => ''), 'test'); + when(() => injector.getBind()) + .thenReturn(BindEntry(bind: Bind((i) => ''), value: 'test')); + expect( + service.getBind().map((r) => r.value).getOrElse((left) => ''), + 'test'); }); test('should throw error not found bind', () { when(() => injector.getBind()).thenThrow(BindNotFound('String')); - expect(service.getBind().fold(id, id), isA()); + expect( + service.getBind().fold(id, id), isA()); }); }); @@ -33,7 +37,8 @@ void main() { group('releaseScopedBinds', () { test('should return true', () { when(() => injector.removeScopedBinds()); - expect(service.releaseScopedBinds().getOrElse((left) => throw left), unit); + expect( + service.releaseScopedBinds().getOrElse((left) => throw left), unit); }); }); }