コンテンツにスキップ

データ収集カスタムルール

View

自動収集

方法 1:routes による収集

MaterialApp.navigatorObserversFTRouteObserver を追加し、MaterialApp.routes で遷移先のページを設定します。routeskey がページ名(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.navigatorObserversFTRouteObserver を追加し、カスタム 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.namenull の Route ページのみをフィルタリングします

Resource

自動収集フィルタリング

FTRUMManager().setConfig(...)isInTakeUrl コールバックを使用して、収集不要な Resource データをフィルタリングできます。

await FTRUMManager().setConfig(
  androidAppId: appAndroidId,
  iOSAppId: appIOSId,
  isInTakeUrl: (url) {
    return url.startsWith("https://url.rule");
  },
);

フィードバック

このページは役に立ちましたか?