Jonny Borges

final fix to controllers is not removed

@@ -100,7 +100,7 @@ class HomeView extends GetView<HomeController> { @@ -100,7 +100,7 @@ class HomeView extends GetView<HomeController> {
100 color: Colors.black, 100 color: Colors.black,
101 ), 101 ),
102 ), 102 ),
103 - ) 103 + ),
104 ], 104 ],
105 ); 105 );
106 }, 106 },
@@ -9,7 +9,6 @@ abstract class GetInterface { @@ -9,7 +9,6 @@ abstract class GetInterface {
9 SmartManagement smartManagement = SmartManagement.full; 9 SmartManagement smartManagement = SmartManagement.full;
10 RouterDelegate? routerDelegate; 10 RouterDelegate? routerDelegate;
11 RouteInformationParser? routeInformationParser; 11 RouteInformationParser? routeInformationParser;
12 - String? reference;  
13 bool isLogEnable = true; 12 bool isLogEnable = true;
14 LogWriterCallback log = defaultLogWriterCallback; 13 LogWriterCallback log = defaultLogWriterCallback;
15 } 14 }
@@ -32,9 +32,9 @@ extension Inst on GetInterface { @@ -32,9 +32,9 @@ extension Inst on GetInterface {
32 GetInstance().lazyPut<S>(builder, tag: tag, fenix: fenix); 32 GetInstance().lazyPut<S>(builder, tag: tag, fenix: fenix);
33 } 33 }
34 34
35 - void printInstanceStack() {  
36 - GetInstance().printInstanceStack();  
37 - } 35 + // void printInstanceStack() {
  36 + // GetInstance().printInstanceStack();
  37 + // }
38 38
39 /// async version of `Get.put()`. 39 /// async version of `Get.put()`.
40 /// Awaits for the resolution of the Future from `builder()`parameter and 40 /// Awaits for the resolution of the Future from `builder()`parameter and
@@ -95,9 +95,14 @@ extension Inst on GetInterface { @@ -95,9 +95,14 @@ extension Inst on GetInterface {
95 /// - [clearFactory] clears the callbacks registered by `Get.lazyPut()` 95 /// - [clearFactory] clears the callbacks registered by `Get.lazyPut()`
96 /// - [clearRouteBindings] clears Instances associated with Routes when using 96 /// - [clearRouteBindings] clears Instances associated with Routes when using
97 /// [GetMaterialApp]. 97 /// [GetMaterialApp].
98 - bool reset({bool clearFactory = true, bool clearRouteBindings = true}) => 98 + bool reset(
  99 + {@deprecated bool clearFactory = true,
  100 + @deprecated bool clearRouteBindings = true}) =>
99 GetInstance().reset( 101 GetInstance().reset(
100 - clearFactory: clearFactory, clearRouteBindings: clearRouteBindings); 102 + // ignore: deprecated_member_use_from_same_package
  103 + clearFactory: clearFactory,
  104 + // ignore: deprecated_member_use_from_same_package
  105 + clearRouteBindings: clearRouteBindings);
101 106
102 /// Deletes the `Instance<S>`, cleaning the memory and closes any open 107 /// Deletes the `Instance<S>`, cleaning the memory and closes any open
103 /// controllers (`DisposableInterface`). 108 /// controllers (`DisposableInterface`).
1 import 'dart:async'; 1 import 'dart:async';
2 -import 'dart:collection';  
3 2
4 import '../../get_core/get_core.dart'; 3 import '../../get_core/get_core.dart';
5 - 4 +import '../../get_navigation/src/router_report.dart';
6 import 'lifecycle.dart'; 5 import 'lifecycle.dart';
7 6
8 class InstanceInfo { 7 class InstanceInfo {
@@ -38,20 +37,6 @@ class GetInstance { @@ -38,20 +37,6 @@ class GetInstance {
38 /// `Get.lazyPut()` 37 /// `Get.lazyPut()`
39 // static final Map<String, _Lazy> _factory = {}; 38 // static final Map<String, _Lazy> _factory = {};
40 39
41 - /// Holds a reference to `Get.reference` when the Instance was  
42 - /// created to manage the memory.  
43 - static final Map<String, String?> _routesKey = {};  
44 -  
45 - /// Stores the onClose() references of instances created with `Get.create()`  
46 - /// using the `Get.reference`.  
47 - /// Experimental feature to keep the lifecycle and memory management with  
48 - /// non-singleton instances.  
49 - static final Map<String?, HashSet<Function>> _routesByCreate = {};  
50 -  
51 - void printInstanceStack() {  
52 - Get.log(_routesKey.toString());  
53 - }  
54 -  
55 void injector<S>( 40 void injector<S>(
56 InjectorBuilderCallback<S> fn, { 41 InjectorBuilderCallback<S> fn, {
57 String? tag, 42 String? tag,
@@ -189,64 +174,6 @@ class GetInstance { @@ -189,64 +174,6 @@ class GetInstance {
189 ); 174 );
190 } 175 }
191 176
192 - /// Clears from memory registered Instances associated with [routeName] when  
193 - /// using `Get.smartManagement` as [SmartManagement.full] or  
194 - /// [SmartManagement.keepFactory]  
195 - /// Meant for internal usage of `GetPageRoute` and `GetDialogRoute`  
196 - void removeDependencyByRoute(String routeName) {  
197 - final keysToRemove = <String>[];  
198 - _routesKey.forEach((key, value) {  
199 - if (value == routeName) {  
200 - keysToRemove.add(key);  
201 - }  
202 - });  
203 -  
204 - /// Removes `Get.create()` instances registered in `routeName`.  
205 - if (_routesByCreate.containsKey(routeName)) {  
206 - for (final onClose in _routesByCreate[routeName]!) {  
207 - // assure the [DisposableInterface] instance holding a reference  
208 - // to onClose() wasn't disposed.  
209 - onClose();  
210 - }  
211 - _routesByCreate[routeName]!.clear();  
212 - _routesByCreate.remove(routeName);  
213 - }  
214 -  
215 - for (final element in keysToRemove) {  
216 - delete(key: element);  
217 - _routesKey.remove(element);  
218 - }  
219 -  
220 - keysToRemove.clear();  
221 - }  
222 -  
223 - void reloadDependencyByRoute(String routeName) {  
224 - final keysToRemove = <String>[];  
225 - _routesKey.forEach((key, value) {  
226 - if (value == routeName) {  
227 - keysToRemove.add(key);  
228 - }  
229 - });  
230 -  
231 - /// Removes `Get.create()` instances registered in `routeName`.  
232 - if (_routesByCreate.containsKey(routeName)) {  
233 - for (final onClose in _routesByCreate[routeName]!) {  
234 - // assure the [DisposableInterface] instance holding a reference  
235 - // to onClose() wasn't disposed.  
236 - onClose();  
237 - }  
238 - _routesByCreate[routeName]!.clear();  
239 - _routesByCreate.remove(routeName);  
240 - }  
241 -  
242 - for (final element in keysToRemove) {  
243 - reload(key: element, closeInstance: false);  
244 - //_routesKey.remove(element);  
245 - }  
246 -  
247 - keysToRemove.clear();  
248 - }  
249 -  
250 /// Initializes the dependencies for a Class Instance [S] (or tag), 177 /// Initializes the dependencies for a Class Instance [S] (or tag),
251 /// If its a Controller, it starts the lifecycle process. 178 /// If its a Controller, it starts the lifecycle process.
252 /// Optionally associating the current Route to the lifetime of the instance, 179 /// Optionally associating the current Route to the lifetime of the instance,
@@ -265,19 +192,13 @@ class GetInstance { @@ -265,19 +192,13 @@ class GetInstance {
265 if (_singl[key]!.isSingleton!) { 192 if (_singl[key]!.isSingleton!) {
266 _singl[key]!.isInit = true; 193 _singl[key]!.isInit = true;
267 if (Get.smartManagement != SmartManagement.onlyBuilder) { 194 if (Get.smartManagement != SmartManagement.onlyBuilder) {
268 - _registerRouteInstance<S>(tag: name); 195 + RouterReportManager.reportDependencyLinkedToRoute(_getKey(S, name));
269 } 196 }
270 } 197 }
271 } 198 }
272 return i; 199 return i;
273 } 200 }
274 201
275 - /// Links a Class instance [S] (or [tag]) to the current route.  
276 - /// Requires usage of `GetMaterialApp`.  
277 - void _registerRouteInstance<S>({String? tag}) {  
278 - _routesKey.putIfAbsent(_getKey(S, tag), () => Get.reference);  
279 - }  
280 -  
281 InstanceInfo getInstanceInfo<S>({String? tag}) { 202 InstanceInfo getInstanceInfo<S>({String? tag}) {
282 final build = _getDependency<S>(tag: tag); 203 final build = _getDependency<S>(tag: tag);
283 204
@@ -313,9 +234,7 @@ class GetInstance { @@ -313,9 +234,7 @@ class GetInstance {
313 Get.log('Instance "$S" with tag "$tag" has been initialized'); 234 Get.log('Instance "$S" with tag "$tag" has been initialized');
314 } 235 }
315 if (!_singl[key]!.isSingleton!) { 236 if (!_singl[key]!.isSingleton!) {
316 - _routesByCreate[Get.reference] ??= HashSet<Function>();  
317 - // _routesByCreate[Get.reference]!.add(i.onDelete as Function);  
318 - _routesByCreate[Get.reference]!.add(i.onDelete); 237 + RouterReportManager.appendRouteByCreate(i);
319 } 238 }
320 } 239 }
321 return i; 240 return i;
@@ -370,10 +289,13 @@ class GetInstance { @@ -370,10 +289,13 @@ class GetInstance {
370 /// [clearFactory] clears the callbacks registered by [lazyPut] 289 /// [clearFactory] clears the callbacks registered by [lazyPut]
371 /// [clearRouteBindings] clears Instances associated with routes. 290 /// [clearRouteBindings] clears Instances associated with routes.
372 /// 291 ///
373 - bool reset({bool clearFactory = true, bool clearRouteBindings = true}) { 292 + bool reset(
  293 + {@deprecated bool clearFactory = true,
  294 + @deprecated bool clearRouteBindings = true}) {
374 // if (clearFactory) _factory.clear(); 295 // if (clearFactory) _factory.clear();
375 - if (clearRouteBindings) _routesKey.clear();  
376 - _singl.clear(); 296 + deleteAll(force: true);
  297 + // if (clearRouteBindings) clearRouteKeys();
  298 + // _singl.clear();
377 return true; 299 return true;
378 } 300 }
379 301
1 import 'package:flutter/material.dart'; 1 import 'package:flutter/material.dart';
2 -import '../../../get_core/get_core.dart';  
3 -import '../../../get_instance/src/get_instance.dart'; 2 +import '../../../get.dart';
  3 +import '../router_report.dart';
4 4
5 class GetModalBottomSheetRoute<T> extends PopupRoute<T> { 5 class GetModalBottomSheetRoute<T> extends PopupRoute<T> {
6 GetModalBottomSheetRoute({ 6 GetModalBottomSheetRoute({
@@ -20,8 +20,9 @@ class GetModalBottomSheetRoute<T> extends PopupRoute<T> { @@ -20,8 +20,9 @@ class GetModalBottomSheetRoute<T> extends PopupRoute<T> {
20 RouteSettings? settings, 20 RouteSettings? settings,
21 this.enterBottomSheetDuration = const Duration(milliseconds: 250), 21 this.enterBottomSheetDuration = const Duration(milliseconds: 250),
22 this.exitBottomSheetDuration = const Duration(milliseconds: 200), 22 this.exitBottomSheetDuration = const Duration(milliseconds: 200),
23 - }) : name = "BOTTOMSHEET: ${builder.hashCode}",  
24 - super(settings: settings); 23 + }) : super(settings: settings) {
  24 + RouterReportManager.reportCurrentRoute(this);
  25 + }
25 final bool? isPersistent; 26 final bool? isPersistent;
26 final WidgetBuilder? builder; 27 final WidgetBuilder? builder;
27 final ThemeData? theme; 28 final ThemeData? theme;
@@ -33,7 +34,7 @@ class GetModalBottomSheetRoute<T> extends PopupRoute<T> { @@ -33,7 +34,7 @@ class GetModalBottomSheetRoute<T> extends PopupRoute<T> {
33 final Color? modalBarrierColor; 34 final Color? modalBarrierColor;
34 final bool isDismissible; 35 final bool isDismissible;
35 final bool enableDrag; 36 final bool enableDrag;
36 - final String name; 37 + // final String name;
37 final Duration enterBottomSheetDuration; 38 final Duration enterBottomSheetDuration;
38 final Duration exitBottomSheetDuration; 39 final Duration exitBottomSheetDuration;
39 // remove safearea from top 40 // remove safearea from top
@@ -55,10 +56,7 @@ class GetModalBottomSheetRoute<T> extends PopupRoute<T> { @@ -55,10 +56,7 @@ class GetModalBottomSheetRoute<T> extends PopupRoute<T> {
55 56
56 @override 57 @override
57 void dispose() { 58 void dispose() {
58 - if (Get.smartManagement != SmartManagement.onlyBuilder) {  
59 - WidgetsBinding.instance!.addPostFrameCallback(  
60 - (_) => GetInstance().removeDependencyByRoute(name));  
61 - } 59 + RouterReportManager.reportRouteDispose(this);
62 super.dispose(); 60 super.dispose();
63 } 61 }
64 62
1 import 'package:flutter/widgets.dart'; 1 import 'package:flutter/widgets.dart';
2 -import '../../../get_core/get_core.dart';  
3 -import '../../../get_instance/src/get_instance.dart'; 2 +import '../router_report.dart';
4 3
5 class GetDialogRoute<T> extends PopupRoute<T> { 4 class GetDialogRoute<T> extends PopupRoute<T> {
6 GetDialogRoute({ 5 GetDialogRoute({
@@ -12,13 +11,14 @@ class GetDialogRoute<T> extends PopupRoute<T> { @@ -12,13 +11,14 @@ class GetDialogRoute<T> extends PopupRoute<T> {
12 RouteTransitionsBuilder? transitionBuilder, 11 RouteTransitionsBuilder? transitionBuilder,
13 RouteSettings? settings, 12 RouteSettings? settings,
14 }) : widget = pageBuilder, 13 }) : widget = pageBuilder,
15 - name = "DIALOG: ${pageBuilder.hashCode}",  
16 _barrierDismissible = barrierDismissible, 14 _barrierDismissible = barrierDismissible,
17 _barrierLabel = barrierLabel, 15 _barrierLabel = barrierLabel,
18 _barrierColor = barrierColor, 16 _barrierColor = barrierColor,
19 _transitionDuration = transitionDuration, 17 _transitionDuration = transitionDuration,
20 _transitionBuilder = transitionBuilder, 18 _transitionBuilder = transitionBuilder,
21 - super(settings: settings); 19 + super(settings: settings) {
  20 + RouterReportManager.reportCurrentRoute(this);
  21 + }
22 22
23 final RoutePageBuilder widget; 23 final RoutePageBuilder widget;
24 24
@@ -26,14 +26,9 @@ class GetDialogRoute<T> extends PopupRoute<T> { @@ -26,14 +26,9 @@ class GetDialogRoute<T> extends PopupRoute<T> {
26 bool get barrierDismissible => _barrierDismissible; 26 bool get barrierDismissible => _barrierDismissible;
27 final bool _barrierDismissible; 27 final bool _barrierDismissible;
28 28
29 - final String name;  
30 -  
31 @override 29 @override
32 void dispose() { 30 void dispose() {
33 - if (Get.smartManagement != SmartManagement.onlyBuilder) {  
34 - WidgetsBinding.instance!.addPostFrameCallback(  
35 - (_) => GetInstance().removeDependencyByRoute(name));  
36 - } 31 + RouterReportManager.reportRouteDispose(this);
37 super.dispose(); 32 super.dispose();
38 } 33 }
39 34
@@ -235,7 +235,7 @@ class GetDelegate extends RouterDelegate<GetNavConfig> @@ -235,7 +235,7 @@ class GetDelegate extends RouterDelegate<GetNavConfig>
235 } 235 }
236 236
237 bool _canPopHistory() { 237 bool _canPopHistory() {
238 - return history.length > 0; 238 + return history.length > 1;
239 } 239 }
240 240
241 Future<bool> canPopHistory() { 241 Future<bool> canPopHistory() {
@@ -347,8 +347,8 @@ class GetDelegate extends RouterDelegate<GetNavConfig> @@ -347,8 +347,8 @@ class GetDelegate extends RouterDelegate<GetNavConfig>
347 dynamic arguments, 347 dynamic arguments,
348 Map<String, String>? parameters, 348 Map<String, String>? parameters,
349 }) async { 349 }) async {
350 - await popHistory();  
351 await toNamed(page, arguments: arguments, parameters: parameters); 350 await toNamed(page, arguments: arguments, parameters: parameters);
  351 + await _unsafeHistoryRemoveAt(history.length - 2);
352 } 352 }
353 353
354 /// Removes routes according to [PopMode] 354 /// Removes routes according to [PopMode]
  1 +import 'dart:collection';
  2 +
  3 +import 'package:flutter/widgets.dart';
  4 +
  5 +import '../../get.dart';
  6 +
  7 +class RouterReportManager<T> {
  8 + /// Holds a reference to `Get.reference` when the Instance was
  9 + /// created to manage the memory.
  10 + static final Map<String, Route?> _routesKey = {};
  11 +
  12 + /// Stores the onClose() references of instances created with `Get.create()`
  13 + /// using the `Get.reference`.
  14 + /// Experimental feature to keep the lifecycle and memory management with
  15 + /// non-singleton instances.
  16 + static final Map<Route?, HashSet<Function>> _routesByCreate = {};
  17 +
  18 + void printInstanceStack() {
  19 + Get.log(_routesKey.toString());
  20 + }
  21 +
  22 + static Route? _current;
  23 +
  24 + // ignore: use_setters_to_change_properties
  25 + static void reportCurrentRoute(Route newRoute) {
  26 + _current = newRoute;
  27 + }
  28 +
  29 + /// Links a Class instance [S] (or [tag]) to the current route.
  30 + /// Requires usage of `GetMaterialApp`.
  31 + static void reportDependencyLinkedToRoute(String depedencyKey) {
  32 + _routesKey.putIfAbsent(depedencyKey, () => _current);
  33 + }
  34 +
  35 + void clearRouteKeys() {
  36 + _routesKey.clear();
  37 + }
  38 +
  39 + static void appendRouteByCreate(GetLifeCycleBase i) {
  40 + _routesByCreate[_current] ??= HashSet<Function>();
  41 + // _routesByCreate[Get.reference]!.add(i.onDelete as Function);
  42 + _routesByCreate[_current]!.add(i.onDelete);
  43 + }
  44 +
  45 + static void reportRouteDispose(Route disposed) {
  46 + if (Get.smartManagement != SmartManagement.onlyBuilder) {
  47 + WidgetsBinding.instance!.addPostFrameCallback((_) {
  48 + ///TODO: Is necessary this comparator?
  49 + if (_current != disposed) {
  50 + _removeDependencyByRoute(disposed);
  51 + }
  52 + });
  53 + }
  54 + }
  55 +
  56 + static void reportRouteWillDispose(Route disposed) {
  57 + final keysToRemove = <String>[];
  58 + _routesKey.forEach((key, value) {
  59 + if (value == disposed) {
  60 + keysToRemove.add(key);
  61 + }
  62 + });
  63 +
  64 + /// Removes `Get.create()` instances registered in `routeName`.
  65 + if (_routesByCreate.containsKey(disposed)) {
  66 + for (final onClose in _routesByCreate[disposed]!) {
  67 + // assure the [DisposableInterface] instance holding a reference
  68 + // to onClose() wasn't disposed.
  69 + onClose();
  70 + }
  71 + _routesByCreate[disposed]!.clear();
  72 + _routesByCreate.remove(disposed);
  73 + }
  74 +
  75 + for (final element in keysToRemove) {
  76 + GetInstance().reload(key: element, closeInstance: false);
  77 + //_routesKey.remove(element);
  78 + }
  79 +
  80 + keysToRemove.clear();
  81 + }
  82 +
  83 + /// Clears from memory registered Instances associated with [routeName] when
  84 + /// using `Get.smartManagement` as [SmartManagement.full] or
  85 + /// [SmartManagement.keepFactory]
  86 + /// Meant for internal usage of `GetPageRoute` and `GetDialogRoute`
  87 + static void _removeDependencyByRoute(Route routeName) {
  88 + final keysToRemove = <String>[];
  89 + _routesKey.forEach((key, value) {
  90 + if (value == routeName) {
  91 + keysToRemove.add(key);
  92 + }
  93 + });
  94 +
  95 + /// Removes `Get.create()` instances registered in `routeName`.
  96 + if (_routesByCreate.containsKey(routeName)) {
  97 + for (final onClose in _routesByCreate[routeName]!) {
  98 + // assure the [DisposableInterface] instance holding a reference
  99 + // to onClose() wasn't disposed.
  100 + onClose();
  101 + }
  102 + _routesByCreate[routeName]!.clear();
  103 + _routesByCreate.remove(routeName);
  104 + }
  105 +
  106 + for (final element in keysToRemove) {
  107 + GetInstance().delete(key: element);
  108 + _routesKey.remove(element);
  109 + }
  110 +
  111 + keysToRemove.clear();
  112 + }
  113 +}
1 import 'package:flutter/material.dart'; 1 import 'package:flutter/material.dart';
2 2
3 import '../../../get.dart'; 3 import '../../../get.dart';
  4 +import '../router_report.dart';
4 import 'custom_transition.dart'; 5 import 'custom_transition.dart';
5 import 'get_transition_mixin.dart'; 6 import 'get_transition_mixin.dart';
6 import 'route_middleware.dart'; 7 import 'route_middleware.dart';
@@ -34,14 +35,15 @@ class GetPageRoute<T> extends PageRoute<T> with GetPageRouteTransitionMixin<T> { @@ -34,14 +35,15 @@ class GetPageRoute<T> extends PageRoute<T> with GetPageRouteTransitionMixin<T> {
34 this.maintainState = true, 35 this.maintainState = true,
35 bool fullscreenDialog = false, 36 bool fullscreenDialog = false,
36 this.middlewares, 37 this.middlewares,
37 - }) : reference = "$routeName: ${settings?.hashCode ?? page.hashCode}",  
38 - super(settings: settings, fullscreenDialog: fullscreenDialog); 38 + }) : super(settings: settings, fullscreenDialog: fullscreenDialog) {
  39 + RouterReportManager.reportCurrentRoute(this);
  40 + }
39 41
40 @override 42 @override
41 final Duration transitionDuration; 43 final Duration transitionDuration;
42 final GetPageBuilder? page; 44 final GetPageBuilder? page;
43 final String? routeName; 45 final String? routeName;
44 - final String reference; 46 + //final String reference;
45 final CustomTransition? customTransition; 47 final CustomTransition? customTransition;
46 final Bindings? binding; 48 final Bindings? binding;
47 final Map<String, String>? parameter; 49 final Map<String, String>? parameter;
@@ -73,13 +75,7 @@ class GetPageRoute<T> extends PageRoute<T> with GetPageRouteTransitionMixin<T> { @@ -73,13 +75,7 @@ class GetPageRoute<T> extends PageRoute<T> with GetPageRouteTransitionMixin<T> {
73 @override 75 @override
74 void dispose() { 76 void dispose() {
75 super.dispose(); 77 super.dispose();
76 - if (Get.smartManagement != SmartManagement.onlyBuilder) {  
77 - WidgetsBinding.instance!.addPostFrameCallback((_) {  
78 - if (Get.reference != reference) {  
79 - GetInstance().removeDependencyByRoute("$reference");  
80 - }  
81 - });  
82 - } 78 + RouterReportManager.reportRouteDispose(this);
83 79
84 // if (Get.smartManagement != SmartManagement.onlyBuilder) { 80 // if (Get.smartManagement != SmartManagement.onlyBuilder) {
85 // GetInstance().removeDependencyByRoute("$reference"); 81 // GetInstance().removeDependencyByRoute("$reference");
@@ -91,7 +87,6 @@ class GetPageRoute<T> extends PageRoute<T> with GetPageRouteTransitionMixin<T> { @@ -91,7 +87,6 @@ class GetPageRoute<T> extends PageRoute<T> with GetPageRouteTransitionMixin<T> {
91 87
92 @override 88 @override
93 Widget buildContent(BuildContext context) { 89 Widget buildContent(BuildContext context) {
94 - Get.reference = reference;  
95 final middlewareRunner = MiddlewareRunner(middlewares); 90 final middlewareRunner = MiddlewareRunner(middlewares);
96 final bindingsToBind = middlewareRunner.runOnBindingsStart(bindings); 91 final bindingsToBind = middlewareRunner.runOnBindingsStart(bindings);
97 92
@@ -4,6 +4,7 @@ import '../../../../get_core/get_core.dart'; @@ -4,6 +4,7 @@ import '../../../../get_core/get_core.dart';
4 import '../../../../instance_manager.dart'; 4 import '../../../../instance_manager.dart';
5 import '../../../get_navigation.dart'; 5 import '../../../get_navigation.dart';
6 import '../../dialog/dialog_route.dart'; 6 import '../../dialog/dialog_route.dart';
  7 +import '../../router_report.dart';
7 import '../../snackbar/snack_route.dart'; 8 import '../../snackbar/snack_route.dart';
8 import '../default_route.dart'; 9 import '../default_route.dart';
9 10
@@ -47,11 +48,11 @@ String? _extractRouteName(Route? route) { @@ -47,11 +48,11 @@ String? _extractRouteName(Route? route) {
47 } 48 }
48 49
49 if (route is GetDialogRoute) { 50 if (route is GetDialogRoute) {
50 - return route.name; 51 + return 'DIALOG ${route.hashCode}';
51 } 52 }
52 53
53 if (route is GetModalBottomSheetRoute) { 54 if (route is GetModalBottomSheetRoute) {
54 - return route.name; 55 + return 'BOTTOMSHEET ${route.hashCode}';
55 } 56 }
56 57
57 return null; 58 return null;
@@ -105,7 +106,7 @@ class GetObserver extends NavigatorObserver { @@ -105,7 +106,7 @@ class GetObserver extends NavigatorObserver {
105 Get.log("GOING TO ROUTE ${newRoute.name}"); 106 Get.log("GOING TO ROUTE ${newRoute.name}");
106 } 107 }
107 108
108 - Get.reference = newRoute.name; 109 + RouterReportManager.reportCurrentRoute(route);
109 _routeSend?.update((value) { 110 _routeSend?.update((value) {
110 // Only PageRoute is allowed to change current value 111 // Only PageRoute is allowed to change current value
111 if (route is PageRoute) { 112 if (route is PageRoute) {
@@ -142,8 +143,10 @@ class GetObserver extends NavigatorObserver { @@ -142,8 +143,10 @@ class GetObserver extends NavigatorObserver {
142 } else if (currentRoute.isGetPageRoute) { 143 } else if (currentRoute.isGetPageRoute) {
143 Get.log("CLOSE TO ROUTE ${currentRoute.name}"); 144 Get.log("CLOSE TO ROUTE ${currentRoute.name}");
144 } 145 }
  146 + if (previousRoute != null) {
  147 + RouterReportManager.reportCurrentRoute(previousRoute);
  148 + }
145 149
146 - Get.reference = newRoute.name;  
147 // Here we use a 'inverse didPush set', meaning that we use 150 // Here we use a 'inverse didPush set', meaning that we use
148 // previous route instead of 'route' because this is 151 // previous route instead of 'route' because this is
149 // a 'inverse push' 152 // a 'inverse push'
@@ -178,7 +181,10 @@ class GetObserver extends NavigatorObserver { @@ -178,7 +181,10 @@ class GetObserver extends NavigatorObserver {
178 Get.log("REPLACE ROUTE $oldName"); 181 Get.log("REPLACE ROUTE $oldName");
179 Get.log("NEW ROUTE $newName"); 182 Get.log("NEW ROUTE $newName");
180 183
181 - Get.reference = newName; 184 + if (oldRoute != null) {
  185 + RouterReportManager.reportCurrentRoute(oldRoute);
  186 + }
  187 +
182 _routeSend?.update((value) { 188 _routeSend?.update((value) {
183 // Only PageRoute is allowed to change current value 189 // Only PageRoute is allowed to change current value
184 if (newRoute is PageRoute) { 190 if (newRoute is PageRoute) {
@@ -196,7 +202,7 @@ class GetObserver extends NavigatorObserver { @@ -196,7 +202,7 @@ class GetObserver extends NavigatorObserver {
196 value.isDialog = currentRoute.isDialog ? false : value.isDialog; 202 value.isDialog = currentRoute.isDialog ? false : value.isDialog;
197 }); 203 });
198 if (oldRoute is GetPageRoute) { 204 if (oldRoute is GetPageRoute) {
199 - GetInstance().reloadDependencyByRoute(oldRoute.reference); 205 + RouterReportManager.reportRouteWillDispose(oldRoute);
200 } 206 }
201 207
202 routing?.call(_routeSend); 208 routing?.call(_routeSend);
@@ -222,7 +228,7 @@ class GetObserver extends NavigatorObserver { @@ -222,7 +228,7 @@ class GetObserver extends NavigatorObserver {
222 }); 228 });
223 229
224 if (route is GetPageRoute) { 230 if (route is GetPageRoute) {
225 - GetInstance().reloadDependencyByRoute(route.reference); 231 + RouterReportManager.reportRouteWillDispose(route);
226 } 232 }
227 routing?.call(_routeSend); 233 routing?.call(_routeSend);
228 } 234 }