数据采集自定义规则¶
View¶
自动采集¶
方法 1:通过 routes 采集¶
在 MaterialApp.navigatorObservers 添加 FTRouteObserver,并设置 MaterialApp.routes 需要跳转的页面,routes 中的 key 即为页面名称(view_name)。
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: HomeRoute(),
navigatorObservers: [
FTRouteObserver(),
],
routes: <String, WidgetBuilder>{
'logging': (BuildContext context) => Logging(),
'rum': (BuildContext context) => RUM(),
'tracing_custom': (BuildContext context) => CustomTracing(),
'tracing_auto': (BuildContext context) => AutoTracing(),
},
);
}
}
Navigator.pushNamed(context, "logging");
方法 2:通过 FTMaterialPageRoute 采集¶
在 MaterialApp.navigatorObservers 添加 FTRouteObserver,通过自定义 FTMaterialPageRoute 从控件的 runtimeType 中解析页面名称,其中 widget 类名即为页面名称(view_name)。
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: HomeRoute(),
navigatorObservers: [
FTRouteObserver(),
],
);
}
}
Navigator.of(context).push(
FTMaterialPageRoute(builder: (context) => new NoRouteNamePage()),
);
示例请参考 这里。
方法 3:通过 RouteSettings.name 采集¶
在 Route 类型页面中自定义 RouteSettings.name,FTRouteObserver 会优先获取该值。这个方法同样适用于 Dialog 类型页面,例如 showDialog()、showTimePicker() 等。
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: HomeRoute(),
navigatorObservers: [
FTRouteObserver(),
],
);
}
}
Navigator.of(context).push(
MaterialPageRoute(
builder: (context) => new NoRouteNamePage(),
settings: RouteSettings(name: "RouteSettingName"),
),
);
以上三种方法可以在一个项目中混合使用。
休眠和唤醒事件采集¶
低于 0.5.1-pre.1 版本,如果需要采集应用休眠和唤醒行为,需要添加如下代码:
class _HomeState extends State<HomeRoute> {
@override
void initState() {
FTLifeRecycleHandler().initObserver();
}
@override
void dispose() {
FTLifeRecycleHandler().removeObserver();
}
}
自动采集过滤¶
仅支持 0.5.0-pre.1 以上版本。
FTRouteObserver¶
MaterialApp(
navigatorObservers: [
FTRouteObserver(routeFilter: (Route? route, Route? previousRoute) {
if (filterConfig) {
return true;
}
return false;
}),
],
)
| 字段 | 类型 | 必须 | 说明 |
|---|---|---|---|
| routeFilter | RouteFilter | 否 | 页面方法回调,可以根据进入和上一个 route 具体情况进行判断,返回 true 代表过滤符合条件的数据 |
FTDialogRouteFilterObserver¶
针对 DialogRoute 类型页面进行过滤,例如 showDialog()、showTimePicker() 等。
MaterialApp(
navigatorObservers: [
FTDialogRouteFilterObserver(filterOnlyNoSettingName: true),
],
)
showAboutDialog(
context: context,
routeSettings: RouteSettings(name: "About"),
);
| 字段 | 类型 | 必须 | 说明 |
|---|---|---|---|
| filterOnlyNoSettingName | bool | 否 | 仅过滤 RouteSettings.name 为 null 的 Route 页面 |
Resource¶
自动采集过滤¶
可通过 FTRUMManager().setConfig(...) 中的 isInTakeUrl 回调过滤不需要采集的 Resource 数据。