Committed by
邝文亮
efactor(auto_track): 优化页面路由和点击信息处理
- 更新 .gitignore 文件,添加新的忽略目录 - 修复点击信息处理中的手动 key 生成逻辑 - 优化异常日志的输出格式 - 重构页面路由观察者,支持自定义路由配置
Showing
4 changed files
with
27 additions
and
20 deletions
| @@ -31,7 +31,7 @@ class ClickInfo { | @@ -31,7 +31,7 @@ class ClickInfo { | ||
| 31 | clickInfo._texts = ElementUtil.findTexts(element); | 31 | clickInfo._texts = ElementUtil.findTexts(element); |
| 32 | Key? key = element.widget.key; | 32 | Key? key = element.widget.key; |
| 33 | if (key != null && key is ValueKey) { | 33 | if (key != null && key is ValueKey) { |
| 34 | - clickInfo._elementManualKey = (key).value; | 34 | + clickInfo._elementManualKey = '${(key).value}'; |
| 35 | } else { | 35 | } else { |
| 36 | clickInfo._elementManualKey = key?.toString() ?? md5.convert(utf8.encode('${clickInfo._elementType}${clickInfo._elementPath}')).toString(); | 36 | clickInfo._elementManualKey = key?.toString() ?? md5.convert(utf8.encode('${clickInfo._elementType}${clickInfo._elementPath}')).toString(); |
| 37 | } | 37 | } |
| @@ -8,7 +8,8 @@ import '../../utils/element_util.dart'; | @@ -8,7 +8,8 @@ import '../../utils/element_util.dart'; | ||
| 8 | import 'page_stack.dart'; | 8 | import 'page_stack.dart'; |
| 9 | 9 | ||
| 10 | class AutoTrackNavigationObserver extends NavigatorObserver { | 10 | class AutoTrackNavigationObserver extends NavigatorObserver { |
| 11 | - static List<NavigatorObserver> wrap(List<NavigatorObserver>? navigatorObservers) { | 11 | + static List<NavigatorObserver> wrap( |
| 12 | + List<NavigatorObserver>? navigatorObservers) { | ||
| 12 | if (navigatorObservers == null) { | 13 | if (navigatorObservers == null) { |
| 13 | return [AutoTrackNavigationObserver()]; | 14 | return [AutoTrackNavigationObserver()]; |
| 14 | } | 15 | } |
| @@ -32,7 +33,8 @@ class AutoTrackNavigationObserver extends NavigatorObserver { | @@ -32,7 +33,8 @@ class AutoTrackNavigationObserver extends NavigatorObserver { | ||
| 32 | return navigatorObservers; | 33 | return navigatorObservers; |
| 33 | } | 34 | } |
| 34 | 35 | ||
| 35 | - static List<NavigatorObserver> defaultNavigatorObservers() => [AutoTrackNavigationObserver()]; | 36 | + static List<NavigatorObserver> defaultNavigatorObservers() => |
| 37 | + [AutoTrackNavigationObserver()]; | ||
| 36 | 38 | ||
| 37 | @override | 39 | @override |
| 38 | void didPop(Route route, Route? previousRoute) { | 40 | void didPop(Route route, Route? previousRoute) { |
| @@ -86,32 +88,35 @@ class AutoTrackNavigationObserver extends NavigatorObserver { | @@ -86,32 +88,35 @@ class AutoTrackNavigationObserver extends NavigatorObserver { | ||
| 86 | 88 | ||
| 87 | void _findElement(Route route, Function(Element) callback) { | 89 | void _findElement(Route route, Function(Element) callback) { |
| 88 | SchedulerBinding.instance?.addPostFrameCallback((_) { | 90 | SchedulerBinding.instance?.addPostFrameCallback((_) { |
| 89 | - if (route is ModalRoute) { | ||
| 90 | - ModalRoute pageRoute = route; | ||
| 91 | - ElementUtil.walk(pageRoute.subtreeContext, (element, parent) { | ||
| 92 | - if (parent != null && parent.widget is Semantics) { | ||
| 93 | - callback(element); | ||
| 94 | - return false; | ||
| 95 | - } | ||
| 96 | - return true; | ||
| 97 | - }); | ||
| 98 | - } else if (AutoTrackConfigManager.instance.useCustomRoute) { | ||
| 99 | - List<AutoTrackPageConfig> pageConfigs = AutoTrackConfigManager.instance.pageConfigs; | 91 | + if (AutoTrackConfigManager.instance.useCustomRoute) { |
| 92 | + List<AutoTrackPageConfig> pageConfigs = | ||
| 93 | + AutoTrackConfigManager.instance.pageConfigs; | ||
| 100 | if (pageConfigs.isEmpty) { | 94 | if (pageConfigs.isEmpty) { |
| 101 | return; | 95 | return; |
| 102 | } | 96 | } |
| 103 | 97 | ||
| 104 | - Element? lastPageElement; | 98 | + Element? pageElement; |
| 105 | ElementUtil.walk(route.navigator?.context, (element, parent) { | 99 | ElementUtil.walk(route.navigator?.context, (element, parent) { |
| 106 | - if (pageConfigs.last.isPageWidget!(element.widget)) { | ||
| 107 | - lastPageElement = element; | 100 | + for (var config in pageConfigs) { |
| 101 | + if (config.isPageWidget!(element.widget)) { | ||
| 102 | + pageElement = element; | ||
| 108 | return false; | 103 | return false; |
| 109 | } | 104 | } |
| 105 | + } | ||
| 110 | return true; | 106 | return true; |
| 111 | }); | 107 | }); |
| 112 | - if (lastPageElement != null) { | ||
| 113 | - callback(lastPageElement!); | 108 | + if (pageElement != null) { |
| 109 | + callback(pageElement!); | ||
| 114 | } | 110 | } |
| 111 | + } else if (route is ModalRoute) { | ||
| 112 | + ModalRoute pageRoute = route; | ||
| 113 | + ElementUtil.walk(pageRoute.subtreeContext, (element, parent) { | ||
| 114 | + if (parent != null && parent.widget is Semantics) { | ||
| 115 | + callback(element); | ||
| 116 | + return false; | ||
| 117 | + } | ||
| 118 | + return true; | ||
| 119 | + }); | ||
| 115 | } | 120 | } |
| 116 | }); | 121 | }); |
| 117 | } | 122 | } |
| @@ -30,7 +30,7 @@ class AutoTrackLogger { | @@ -30,7 +30,7 @@ class AutoTrackLogger { | ||
| 30 | } else if (e is HttpException) { | 30 | } else if (e is HttpException) { |
| 31 | message = e.message; | 31 | message = e.message; |
| 32 | } | 32 | } |
| 33 | - _print(AutoTrackLoggerLevel.error, message); | 33 | + _print(AutoTrackLoggerLevel.error, '$e \n $message'); |
| 34 | } | 34 | } |
| 35 | 35 | ||
| 36 | void setHandler(AutoTrackLoggerHandler handler) { | 36 | void setHandler(AutoTrackLoggerHandler handler) { |
-
Please register or login to post a comment