Committed by
邝文亮
efactor(auto_track): 优化页面路由和点击信息处理
- 更新 .gitignore 文件,添加新的忽略目录 - 修复点击信息处理中的手动 key 生成逻辑 - 优化异常日志的输出格式 - 重构页面路由观察者,支持自定义路由配置
Showing
4 changed files
with
28 additions
and
21 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; | ||
108 | - return false; | 100 | + for (var config in pageConfigs) { |
101 | + if (config.isPageWidget!(element.widget)) { | ||
102 | + pageElement = element; | ||
103 | + return false; | ||
104 | + } | ||
109 | } | 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