在Flutter中使用分析程序包手动记录屏幕视图的最佳位置是什么(在我的情况下,我正在使用Firebase Analytics,例如track screens)?
看看Flutter的生命周期,尚不清楚在何处跟踪屏幕视图。
对于search.php
,我认为StatelessWidget
可能是有道理的,因为我猜每个屏幕视图只能调用一次。
build()
呢?在这种情况下,StatefulWidget
不会有用,因为它可以被多次调用。其他候选者是build()
,initState()
或构造函数,它们似乎都只被调用一次,尽管我猜测随着重新构建层次结构中的小部件,每个屏幕视图它们都可能被调用一次以上。
答案 0 :(得分:1)
答案是:这取决于。对于StatelessWidget
,在build()
中有一个Analytics事件可能是合适的,但前提是父窗口小部件不经常重建。对于StatefulWidget
,这同样适用,但是由于状态变化(这种情况发生的可能性更大),您还必须考虑进行重建。
实际上,最安全的方法不是在小部件生命周期的任何部分中调用Analytics事件,而是在可能触发屏幕的UI事件上调用,例如,打开编辑屏幕的编辑按钮。但是,这种方法的问题在于,屏幕可能会从应用程序中的多个位置打开(这意味着您必须在所有这些位置重复进行Google Analytics(分析)调用)。
这意味着最好的选择可能是将Analytics(分析)与PageRoute
转换相关联,以便在执行页面路由时始终调用该转换。 docs中对此进行了演示。这会错过选项卡栏和其他类型的UI导航中的跟踪屏幕,但是正如文档所说,处理此问题的一种方法是实现RouteAware
并将其订阅到FirebaseAnalyticsObserver
(example tabs implementation )。