データ収集カスタムルール¶
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 がこの値を優先的に取得します。この方法は showDialog()、showTimePicker() などの Dialog タイプのページにも適用できます。
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"),
),
);
上記 3 つの方法は 1 つのプロジェクト内で混在して使用できます。
スリープ・ウェイクアップイベントの収集¶
バージョン 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 データをフィルタリングできます。