使用 Firebase Analytics 在 Flutter 中跟踪屏幕浏览量

Tracking screen views in Flutter with Firebase Analytics

使用分析包在 Flutter 中手动记录屏幕视图的最佳位置是什么(在我的例子中,我使用的是 Firebase Analytics,例如 track screens)?

查看 Flutter 生命周期,不清楚在何处跟踪屏幕浏览量是有意义的。

对于 StatelessWidget,我认为 build() 可能有意义,因为我猜每次屏幕浏览只调用一次。

不过 StatefulWidget 呢?在这种情况下 build() 将没有用,因为它可以被调用多次。其他候选者是 initState()createState() 或构造函数,它们似乎都只被调用一次,尽管我猜测它们可能在每个屏幕视图中都被调用多次,因为层次结构中的小部件被重新构建.

答案是:视情况而定。对于 StatelessWidget,在 build() 中有一个 Analytics 事件可能是合适的,但前提是父窗口小部件不经常重建。对于 StatefulWidget 同样适​​用,但您还必须考虑由于状态变化而导致的重建(很可能经常发生)。

实际上,最安全的方法是不要在小部件生命周期的任何部分调用 Analytics 事件,而是调用可能触发屏幕的 UI 事件,例如,打开编辑画面。但是,该方法的问题在于可能会从应用程序内的多个位置打开屏幕(这意味着您必须在所有这些位置重复调用 Analytics)。

这意味着最好的选择可能是将 Analytics 绑定到 PageRoute 转换,以便在执行页面路由时一致地调用它。这在 docs. This will miss tracking screens within a tab bar and other types of UI navigation but as the docs also say, one way to handle this is to implement RouteAware and subscribing it to FirebaseAnalyticsObserver (example tabs implementation).

中得到了证明。