Committed by
GitHub
Merge pull request #481 from stefandevo/master
Abstraction of logging
Showing
8 changed files
with
49 additions
and
40 deletions
| @@ -10,6 +10,8 @@ void main() { | @@ -10,6 +10,8 @@ void main() { | ||
| 10 | GetMaterialApp( | 10 | GetMaterialApp( |
| 11 | debugShowCheckedModeBanner: false, | 11 | debugShowCheckedModeBanner: false, |
| 12 | initialRoute: '/', | 12 | initialRoute: '/', |
| 13 | + enableLog: true, | ||
| 14 | + // logWriterCallback: localLogWriter, | ||
| 13 | getPages: [ | 15 | getPages: [ |
| 14 | GetPage(name: '/', page: () => HomePage(), binding: HomeBinding()), | 16 | GetPage(name: '/', page: () => HomePage(), binding: HomeBinding()), |
| 15 | GetPage(name: '/country', page: () => CountryPage()), | 17 | GetPage(name: '/country', page: () => CountryPage()), |
| @@ -18,3 +20,8 @@ void main() { | @@ -18,3 +20,8 @@ void main() { | ||
| 18 | ), | 20 | ), |
| 19 | ); | 21 | ); |
| 20 | } | 22 | } |
| 23 | + | ||
| 24 | +// Sample of abstract logging function | ||
| 25 | +void localLogWriter(String text, {bool isError = false}) { | ||
| 26 | + print('** ' + text + ' [' + isError.toString() + ']'); | ||
| 27 | +} |
| @@ -3,7 +3,7 @@ description: A new Flutter project. | @@ -3,7 +3,7 @@ description: A new Flutter project. | ||
| 3 | 3 | ||
| 4 | # The following line prevents the package from being accidentally published to | 4 | # The following line prevents the package from being accidentally published to |
| 5 | # pub.dev using `pub publish`. This is preferred for private packages. | 5 | # pub.dev using `pub publish`. This is preferred for private packages. |
| 6 | -publish_to: 'none' # Remove this line if you wish to publish to pub.dev | 6 | +publish_to: "none" # Remove this line if you wish to publish to pub.dev |
| 7 | 7 | ||
| 8 | # The following defines the version and build number for your application. | 8 | # The following defines the version and build number for your application. |
| 9 | # A version number is three numbers separated by dots, like 1.2.43 | 9 | # A version number is three numbers separated by dots, like 1.2.43 |
| @@ -24,10 +24,10 @@ dependencies: | @@ -24,10 +24,10 @@ dependencies: | ||
| 24 | flutter: | 24 | flutter: |
| 25 | sdk: flutter | 25 | sdk: flutter |
| 26 | 26 | ||
| 27 | - | ||
| 28 | # The following adds the Cupertino Icons font to your application. | 27 | # The following adds the Cupertino Icons font to your application. |
| 29 | # Use with the CupertinoIcons class for iOS style icons. | 28 | # Use with the CupertinoIcons class for iOS style icons. |
| 30 | - get: ^3.2.2 | 29 | + get: |
| 30 | + path: ../ | ||
| 31 | dio: ^3.0.9 | 31 | dio: ^3.0.9 |
| 32 | 32 | ||
| 33 | dev_dependencies: | 33 | dev_dependencies: |
| @@ -39,23 +39,18 @@ dev_dependencies: | @@ -39,23 +39,18 @@ dev_dependencies: | ||
| 39 | 39 | ||
| 40 | # The following section is specific to Flutter. | 40 | # The following section is specific to Flutter. |
| 41 | flutter: | 41 | flutter: |
| 42 | - | ||
| 43 | # The following line ensures that the Material Icons font is | 42 | # The following line ensures that the Material Icons font is |
| 44 | # included with your application, so that you can use the icons in | 43 | # included with your application, so that you can use the icons in |
| 45 | # the material Icons class. | 44 | # the material Icons class. |
| 46 | uses-material-design: true | 45 | uses-material-design: true |
| 47 | - | ||
| 48 | # To add assets to your application, add an assets section, like this: | 46 | # To add assets to your application, add an assets section, like this: |
| 49 | # assets: | 47 | # assets: |
| 50 | # - images/a_dot_burr.jpeg | 48 | # - images/a_dot_burr.jpeg |
| 51 | # - images/a_dot_ham.jpeg | 49 | # - images/a_dot_ham.jpeg |
| 52 | - | ||
| 53 | # An image asset can refer to one or more resolution-specific "variants", see | 50 | # An image asset can refer to one or more resolution-specific "variants", see |
| 54 | # https://flutter.dev/assets-and-images/#resolution-aware. | 51 | # https://flutter.dev/assets-and-images/#resolution-aware. |
| 55 | - | ||
| 56 | # For details regarding adding assets from package dependencies, see | 52 | # For details regarding adding assets from package dependencies, see |
| 57 | # https://flutter.dev/assets-and-images/#from-packages | 53 | # https://flutter.dev/assets-and-images/#from-packages |
| 58 | - | ||
| 59 | # To add custom fonts to your application, add a fonts section here, | 54 | # To add custom fonts to your application, add a fonts section here, |
| 60 | # in this "flutter" section. Each entry in this list should have a | 55 | # in this "flutter" section. Each entry in this list should have a |
| 61 | # "family" key with the font family name, and a "fonts" key with a | 56 | # "family" key with the font family name, and a "fonts" key with a |
lib/src/core/log.dart
0 → 100644
| 1 | +import 'package:get/src/core/log.dart'; | ||
| 1 | import 'package:get/src/navigation/root/smart_management.dart'; | 2 | import 'package:get/src/navigation/root/smart_management.dart'; |
| 2 | import 'package:get/src/state_manager/rx/rx_interface.dart'; | 3 | import 'package:get/src/state_manager/rx/rx_interface.dart'; |
| 3 | 4 | ||
| 4 | class GetConfig { | 5 | class GetConfig { |
| 5 | static SmartManagement smartManagement = SmartManagement.full; | 6 | static SmartManagement smartManagement = SmartManagement.full; |
| 6 | static bool isLogEnable = true; | 7 | static bool isLogEnable = true; |
| 8 | + static LogWriterCallback log = defaultLogWriterCallback; | ||
| 7 | static String currentRoute; | 9 | static String currentRoute; |
| 8 | } | 10 | } |
| 9 | 11 | ||
| @@ -124,7 +126,7 @@ class GetInstance { | @@ -124,7 +126,7 @@ class GetInstance { | ||
| 124 | 126 | ||
| 125 | if (i is DisposableInterface) { | 127 | if (i is DisposableInterface) { |
| 126 | i.onStart(); | 128 | i.onStart(); |
| 127 | - if (GetConfig.isLogEnable) print('[GETX] $key has been initialized'); | 129 | + GetConfig.log('[GETX] $key has been initialized'); |
| 128 | } | 130 | } |
| 129 | } | 131 | } |
| 130 | 132 | ||
| @@ -169,8 +171,7 @@ class GetInstance { | @@ -169,8 +171,7 @@ class GetInstance { | ||
| 169 | if (!_factory.containsKey(key)) | 171 | if (!_factory.containsKey(key)) |
| 170 | throw " $S not found. You need call put<$S>($S()) before"; | 172 | throw " $S not found. You need call put<$S>($S()) before"; |
| 171 | 173 | ||
| 172 | - if (GetConfig.isLogEnable) | ||
| 173 | - print('[GETX] $S instance was created at that time'); | 174 | + GetConfig.log('[GETX] $S instance was created at that time'); |
| 174 | S _value = put<S>(_factory[key].builder() as S); | 175 | S _value = put<S>(_factory[key].builder() as S); |
| 175 | 176 | ||
| 176 | initDependencies<S>(name: tag); | 177 | initDependencies<S>(name: tag); |
| @@ -205,14 +206,15 @@ class GetInstance { | @@ -205,14 +206,15 @@ class GetInstance { | ||
| 205 | } | 206 | } |
| 206 | 207 | ||
| 207 | if (!_singl.containsKey(newKey)) { | 208 | if (!_singl.containsKey(newKey)) { |
| 208 | - print('Instance $newKey not found'); | 209 | + GetConfig.log('Instance $newKey not found', isError: true); |
| 209 | return false; | 210 | return false; |
| 210 | } | 211 | } |
| 211 | 212 | ||
| 212 | FcBuilder builder = _singl[newKey] as FcBuilder; | 213 | FcBuilder builder = _singl[newKey] as FcBuilder; |
| 213 | if (builder.permanent && !force) { | 214 | if (builder.permanent && !force) { |
| 214 | - print( | ||
| 215 | - '[GETX] [$newKey] has been marked as permanent, SmartManagement is not authorized to delete it.'); | 215 | + GetConfig.log( |
| 216 | + '[GETX] [$newKey] has been marked as permanent, SmartManagement is not authorized to delete it.', | ||
| 217 | + isError: true); | ||
| 216 | return false; | 218 | return false; |
| 217 | } | 219 | } |
| 218 | final i = builder.dependency; | 220 | final i = builder.dependency; |
| @@ -222,14 +224,14 @@ class GetInstance { | @@ -222,14 +224,14 @@ class GetInstance { | ||
| 222 | } | 224 | } |
| 223 | if (i is DisposableInterface) { | 225 | if (i is DisposableInterface) { |
| 224 | await i.onClose(); | 226 | await i.onClose(); |
| 225 | - if (GetConfig.isLogEnable) print('[GETX] onClose of $newKey called'); | 227 | + GetConfig.log('[GETX] onClose of $newKey called'); |
| 226 | } | 228 | } |
| 227 | 229 | ||
| 228 | _singl.removeWhere((oldKey, value) => (oldKey == newKey)); | 230 | _singl.removeWhere((oldKey, value) => (oldKey == newKey)); |
| 229 | if (_singl.containsKey(newKey)) { | 231 | if (_singl.containsKey(newKey)) { |
| 230 | - print('[GETX] error on remove object $newKey'); | 232 | + GetConfig.log('[GETX] error on remove object $newKey', isError: true); |
| 231 | } else { | 233 | } else { |
| 232 | - if (GetConfig.isLogEnable) print('[GETX] $newKey deleted from memory'); | 234 | + GetConfig.log('[GETX] $newKey deleted from memory'); |
| 233 | } | 235 | } |
| 234 | // _routesKey?.remove(key); | 236 | // _routesKey?.remove(key); |
| 235 | return true; | 237 | return true; |
| @@ -3,6 +3,7 @@ import 'package:flutter/scheduler.dart'; | @@ -3,6 +3,7 @@ import 'package:flutter/scheduler.dart'; | ||
| 3 | import 'package:get/src/core/get_interface.dart'; | 3 | import 'package:get/src/core/get_interface.dart'; |
| 4 | import 'package:get/instance_manager.dart'; | 4 | import 'package:get/instance_manager.dart'; |
| 5 | import 'package:get/route_manager.dart'; | 5 | import 'package:get/route_manager.dart'; |
| 6 | +import 'package:get/src/core/log.dart'; | ||
| 6 | import 'root/parse_route.dart'; | 7 | import 'root/parse_route.dart'; |
| 7 | import 'routes/bindings_interface.dart'; | 8 | import 'routes/bindings_interface.dart'; |
| 8 | 9 | ||
| @@ -763,6 +764,7 @@ extension GetNavigation on GetInterface { | @@ -763,6 +764,7 @@ extension GetNavigation on GetInterface { | ||
| 763 | /// change default config of Get | 764 | /// change default config of Get |
| 764 | void config( | 765 | void config( |
| 765 | {bool enableLog, | 766 | {bool enableLog, |
| 767 | + LogWriterCallback logWriterCallback, | ||
| 766 | bool defaultPopGesture, | 768 | bool defaultPopGesture, |
| 767 | bool defaultOpaqueRoute, | 769 | bool defaultOpaqueRoute, |
| 768 | Duration defaultDurationTransition, | 770 | Duration defaultDurationTransition, |
| @@ -771,6 +773,9 @@ extension GetNavigation on GetInterface { | @@ -771,6 +773,9 @@ extension GetNavigation on GetInterface { | ||
| 771 | if (enableLog != null) { | 773 | if (enableLog != null) { |
| 772 | GetConfig.isLogEnable = enableLog; | 774 | GetConfig.isLogEnable = enableLog; |
| 773 | } | 775 | } |
| 776 | + if (logWriterCallback != null) { | ||
| 777 | + GetConfig.log = logWriterCallback; | ||
| 778 | + } | ||
| 774 | if (defaultPopGesture != null) { | 779 | if (defaultPopGesture != null) { |
| 775 | this.defaultPopGesture = defaultPopGesture; | 780 | this.defaultPopGesture = defaultPopGesture; |
| 776 | } | 781 | } |
| 1 | import 'package:flutter/foundation.dart'; | 1 | import 'package:flutter/foundation.dart'; |
| 2 | import 'package:flutter/material.dart'; | 2 | import 'package:flutter/material.dart'; |
| 3 | import 'package:get/get.dart'; | 3 | import 'package:get/get.dart'; |
| 4 | +import 'package:get/src/core/log.dart'; | ||
| 4 | import 'package:get/src/instance/get_instance.dart'; | 5 | import 'package:get/src/instance/get_instance.dart'; |
| 5 | import 'package:get/src/navigation/routes/get_route.dart'; | 6 | import 'package:get/src/navigation/routes/get_route.dart'; |
| 6 | import 'root_controller.dart'; | 7 | import 'root_controller.dart'; |
| @@ -51,6 +52,7 @@ class GetMaterialApp extends StatelessWidget { | @@ -51,6 +52,7 @@ class GetMaterialApp extends StatelessWidget { | ||
| 51 | this.getPages, | 52 | this.getPages, |
| 52 | this.opaqueRoute, | 53 | this.opaqueRoute, |
| 53 | this.enableLog, | 54 | this.enableLog, |
| 55 | + this.logWriterCallback, | ||
| 54 | this.popGesture, | 56 | this.popGesture, |
| 55 | this.transitionDuration, | 57 | this.transitionDuration, |
| 56 | this.defaultGlobalState, | 58 | this.defaultGlobalState, |
| @@ -103,6 +105,7 @@ class GetMaterialApp extends StatelessWidget { | @@ -103,6 +105,7 @@ class GetMaterialApp extends StatelessWidget { | ||
| 103 | final VoidCallback onInit; | 105 | final VoidCallback onInit; |
| 104 | final VoidCallback onDispose; | 106 | final VoidCallback onDispose; |
| 105 | final bool enableLog; | 107 | final bool enableLog; |
| 108 | + final LogWriterCallback logWriterCallback; | ||
| 106 | final bool popGesture; | 109 | final bool popGesture; |
| 107 | final SmartManagement smartManagement; | 110 | final SmartManagement smartManagement; |
| 108 | final Bindings initialBinding; | 111 | final Bindings initialBinding; |
| @@ -201,6 +204,7 @@ class GetMaterialApp extends StatelessWidget { | @@ -201,6 +204,7 @@ class GetMaterialApp extends StatelessWidget { | ||
| 201 | 204 | ||
| 202 | Get.config( | 205 | Get.config( |
| 203 | enableLog: enableLog ?? GetConfig.isLogEnable, | 206 | enableLog: enableLog ?? GetConfig.isLogEnable, |
| 207 | + logWriterCallback: logWriterCallback, | ||
| 204 | defaultTransition: defaultTransition ?? Get.defaultTransition, | 208 | defaultTransition: defaultTransition ?? Get.defaultTransition, |
| 205 | defaultOpaqueRoute: opaqueRoute ?? Get.isOpaqueRouteDefault, | 209 | defaultOpaqueRoute: opaqueRoute ?? Get.isOpaqueRouteDefault, |
| 206 | defaultPopGesture: popGesture ?? Get.isPopGestureEnable, | 210 | defaultPopGesture: popGesture ?? Get.isPopGestureEnable, |
| @@ -49,17 +49,13 @@ class GetObserver extends NavigatorObserver { | @@ -49,17 +49,13 @@ class GetObserver extends NavigatorObserver { | ||
| 49 | @override | 49 | @override |
| 50 | void didPush(Route<dynamic> route, Route<dynamic> previousRoute) { | 50 | void didPush(Route<dynamic> route, Route<dynamic> previousRoute) { |
| 51 | if ('${route?.settings?.name}' == 'snackbar') { | 51 | if ('${route?.settings?.name}' == 'snackbar') { |
| 52 | - if (GetConfig.isLogEnable) | ||
| 53 | - print("[GETX] OPEN SNACKBAR ${route?.settings?.name}"); | 52 | + GetConfig.log("[GETX] OPEN SNACKBAR ${route?.settings?.name}"); |
| 54 | } else if ('${route?.settings?.name}' == 'bottomsheet') { | 53 | } else if ('${route?.settings?.name}' == 'bottomsheet') { |
| 55 | - if (GetConfig.isLogEnable) | ||
| 56 | - print("[GETX] OPEN BOTTOMSHEET ${route?.settings?.name}"); | 54 | + GetConfig.log("[GETX] OPEN BOTTOMSHEET ${route?.settings?.name}"); |
| 57 | } else if ('${route?.settings?.name}' == 'dialog') { | 55 | } else if ('${route?.settings?.name}' == 'dialog') { |
| 58 | - if (GetConfig.isLogEnable) | ||
| 59 | - print("[GETX] OPEN DIALOG ${route?.settings?.name}"); | 56 | + GetConfig.log("[GETX] OPEN DIALOG ${route?.settings?.name}"); |
| 60 | } else { | 57 | } else { |
| 61 | - if (GetConfig.isLogEnable) | ||
| 62 | - print("[GETX] GOING TO ROUTE ${route?.settings?.name}"); | 58 | + GetConfig.log("[GETX] GOING TO ROUTE ${route?.settings?.name}"); |
| 63 | } | 59 | } |
| 64 | 60 | ||
| 65 | _routeSend.update((value) { | 61 | _routeSend.update((value) { |
| @@ -81,17 +77,13 @@ class GetObserver extends NavigatorObserver { | @@ -81,17 +77,13 @@ class GetObserver extends NavigatorObserver { | ||
| 81 | super.didPop(route, previousRoute); | 77 | super.didPop(route, previousRoute); |
| 82 | 78 | ||
| 83 | if ('${route?.settings?.name}' == 'snackbar') { | 79 | if ('${route?.settings?.name}' == 'snackbar') { |
| 84 | - if (GetConfig.isLogEnable) | ||
| 85 | - print("[GETX] CLOSE SNACKBAR ${route?.settings?.name}"); | 80 | + GetConfig.log("[GETX] CLOSE SNACKBAR ${route?.settings?.name}"); |
| 86 | } else if ('${route?.settings?.name}' == 'bottomsheet') { | 81 | } else if ('${route?.settings?.name}' == 'bottomsheet') { |
| 87 | - if (GetConfig.isLogEnable) | ||
| 88 | - print("[GETX] CLOSE BOTTOMSHEET ${route?.settings?.name}"); | 82 | + GetConfig.log("[GETX] CLOSE BOTTOMSHEET ${route?.settings?.name}"); |
| 89 | } else if ('${route?.settings?.name}' == 'dialog') { | 83 | } else if ('${route?.settings?.name}' == 'dialog') { |
| 90 | - if (GetConfig.isLogEnable) | ||
| 91 | - print("[GETX] CLOSE DIALOG ${route?.settings?.name}"); | 84 | + GetConfig.log("[GETX] CLOSE DIALOG ${route?.settings?.name}"); |
| 92 | } else { | 85 | } else { |
| 93 | - if (GetConfig.isLogEnable) | ||
| 94 | - print("[GETX] BACK ROUTE ${route?.settings?.name}"); | 86 | + GetConfig.log("[GETX] BACK ROUTE ${route?.settings?.name}"); |
| 95 | } | 87 | } |
| 96 | 88 | ||
| 97 | _routeSend.update((value) { | 89 | _routeSend.update((value) { |
| @@ -112,10 +104,8 @@ class GetObserver extends NavigatorObserver { | @@ -112,10 +104,8 @@ class GetObserver extends NavigatorObserver { | ||
| 112 | @override | 104 | @override |
| 113 | void didReplace({Route newRoute, Route oldRoute}) { | 105 | void didReplace({Route newRoute, Route oldRoute}) { |
| 114 | super.didReplace(newRoute: newRoute, oldRoute: oldRoute); | 106 | super.didReplace(newRoute: newRoute, oldRoute: oldRoute); |
| 115 | - if (GetConfig.isLogEnable) | ||
| 116 | - print("[GETX] REPLACE ROUTE ${oldRoute?.settings?.name}"); | ||
| 117 | - if (GetConfig.isLogEnable) | ||
| 118 | - print("[GETX] NEW ROUTE ${newRoute?.settings?.name}"); | 107 | + GetConfig.log("[GETX] REPLACE ROUTE ${oldRoute?.settings?.name}"); |
| 108 | + GetConfig.log("[GETX] NEW ROUTE ${newRoute?.settings?.name}"); | ||
| 119 | 109 | ||
| 120 | _routeSend.update((value) { | 110 | _routeSend.update((value) { |
| 121 | if (newRoute is PageRoute) value.current = '${newRoute?.settings?.name}'; | 111 | if (newRoute is PageRoute) value.current = '${newRoute?.settings?.name}'; |
| @@ -134,8 +124,7 @@ class GetObserver extends NavigatorObserver { | @@ -134,8 +124,7 @@ class GetObserver extends NavigatorObserver { | ||
| 134 | @override | 124 | @override |
| 135 | void didRemove(Route route, Route previousRoute) { | 125 | void didRemove(Route route, Route previousRoute) { |
| 136 | super.didRemove(route, previousRoute); | 126 | super.didRemove(route, previousRoute); |
| 137 | - if (GetConfig.isLogEnable) | ||
| 138 | - print("[GETX] REMOVING ROUTE ${route?.settings?.name}"); | 127 | + GetConfig.log("[GETX] REMOVING ROUTE ${route?.settings?.name}"); |
| 139 | 128 | ||
| 140 | _routeSend.update((value) { | 129 | _routeSend.update((value) { |
| 141 | value.route = previousRoute; | 130 | value.route = previousRoute; |
| @@ -100,7 +100,7 @@ class Worker { | @@ -100,7 +100,7 @@ class Worker { | ||
| 100 | final String type; | 100 | final String type; |
| 101 | 101 | ||
| 102 | void _message() { | 102 | void _message() { |
| 103 | - if (GetConfig.isLogEnable) print('[Getx] Worker $type disposed'); | 103 | + GetConfig.log('[Getx] Worker $type disposed'); |
| 104 | } | 104 | } |
| 105 | 105 | ||
| 106 | void dispose() { | 106 | void dispose() { |
-
Please register or login to post a comment