Flutter Firebase Analytics:使用 onGenerateRoute 跟踪页面更改

Mic*_*sma 5 firebase flutter firebase-analytics

我为我的应用程序启用了 firebase 分析,我正在尝试让 firebase 调试视图显示我的页面更改。使用下面的代码,目前没有跟踪任何内容,我不明白为什么。我已经按照 firebase 文档来跟踪页面浏览量,但显然在使用 onGenerateRoute 时我遗漏了一些东西。

我的主要:

class MyApp extends StatelessWidget {
  static FirebaseAnalytics analytics = FirebaseAnalytics();
  static FirebaseAnalyticsObserver observer =
      FirebaseAnalyticsObserver(analytics: analytics);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        debugShowCheckedModeBanner: false,
        title: "localhour",
        onGenerateRoute: router.generateRoute,
        initialRoute: '/',
        navigatorObservers: <NavigatorObserver>[observer],
      ),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

我的 generateRoute 函数:

Route<dynamic> generateRoute(RouteSettings settings) {
  switch (settings.name) {
    case '/':
      return MaterialPageRoute(builder: (context) => RootPage());
      break;
    case '/login':
      return MaterialPageRoute(builder: (context) => LoginPage());
      break;
    case '/home':
      var user = settings.arguments;
      return MaterialPageRoute(
          builder: (context) => HomePage(
                user: user,
              ));
      break;
    case '/store':
      return MaterialPageRoute(builder: (context) => StorePage());
      break;
    case '/store-details':
      var argument = settings.arguments;
      return MaterialPageRoute(
          builder: (context) => StoreDetails(
                storeDetails: argument,
              ));
      break;
  }
}
Run Code Online (Sandbox Code Playgroud)

我之前使用过分析在以前的应用程序中自动跟踪页面更改,但在我的主要功能中使用了“路由”方法。有人可以解释为什么我没有使用上述方法得到任何反馈吗?是否必须明确命名屏幕?(我也试过,但没有成功)

Tyr*_*mes 7

嘿,如果您仍在寻找答案,那是因为您没有将名称推送到 MaterialPageRoute 中。

所以在你的 generateRoute 函数中:

  '/login':
      return MaterialPageRoute(
         builder: (context) => LoginPage(),
         settings: RouteSettings(name: settings.name));
      break;
Run Code Online (Sandbox Code Playgroud)

这会为您将名称推送到 Firebase Analytics。只需为 switch 中的每个 case 添加它。