【问题标题】:Tracking screen views in Flutter with Firebase Analytics使用 Firebase Analytics 在 Flutter 中跟踪屏幕视图
【发布时间】:2019-04-08 11:59:11
【问题描述】:

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

查看 Flutter 生命周期,不清楚在哪里跟踪屏幕视图是有意义的。

对于StatelessWidget,我认为build() 可能是有道理的,因为我猜每个屏幕视图只调用一次。

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

【问题讨论】:

  • 你是对的,对于StatelessWidget,它应该是build() 方法,对于StatefulWidget,您可以使用initState(),但是在这两种情况下,数据都可以从外部更改并传递给它们所以这不是 100% 准确的,具体取决于您的实施方式。
  • @CopsOnRoad 谢谢,这就是我的想法,所以听起来这里并没有一个很好的解决方案:(
  • 先生,您是一名 Google 员工,您可以直接访问 Flutter 团队,您应该留下一个消息,以便为您和我们自己解答这个问题。谢谢你先生:)
  • @CopsOnRoad 哈,我不在 Flutter 团队工作,但我可以问他们。我更喜欢在 SO 上提问和回答,以便其他人可以看到答案 :) 也就是说,我会看看我是否可以让团队中的一个加入。

标签: flutter firebase-analytics


【解决方案1】:

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

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

这意味着最好的选择可能是将 Analytics 绑定到 PageRoute 转换,以便在执行页面路由时一致地调用它。这在docs 中得到了证明。这将错过标签栏中的跟踪屏幕和其他类型的 UI 导航,但正如文档中所说,处理此问题的一种方法是实现 RouteAware 并将其订阅到 FirebaseAnalyticsObserver (example tabs implementation)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-13
    • 2017-03-23
    • 1970-01-01
    • 2021-10-29
    • 2018-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多