我应该公开事件以及如何使用 Jetpack Compose 正确地跟踪事件

问题描述 投票:0回答:0

我现在正在使用 Compose。经过不长但足够的时间潜入,我有一些问题:

  • (1) 关于单向架构,我总是尽量遵循使用StateFlow的模式。但是我不知道什么时候应该公开状态和事件,使其模块化,或者用 ViewModel 完全关闭它。
  • 我的导师说我们都不做。他发现获取数据部分在组件内部秘密完成是可以接受的,并且他将始终公开该事件。思考了一会儿,我很高兴得到这个答案,因为有了准确的命名约定,我可以理解组件正在处理什么数据。另一方面,事件必须是暴露的,这样我们就可以集中在一个地方,更便于管理。直到最近,当我有一个附加 Firebase 事件跟踪的任务时。
// A small demonstration of my current approach:

@Composable
fun LoginForm(
    onUsernameChange: (String) -> Unit,
    onPasswordChange: (String) -> Unit,
) { 
    val viewModel: FormViewModel = hiltViewModel()
    val uiState by viewModel.uiState.collectAsState()
    ...
}
  • (2) 没有Firebase Tracking,我的回调可以像
    viewModel::setUserName
    一样简单。但是不,现在对于每个事件,我都必须用箭头函数包装并在顶部添加一个额外的 Firebase。
var firebaseUsernameTyped = remember { false }
...
LoginForm(onUsernameChange = {
    viewModel.setUserName(it)
    if (!firebaseUsernameTyped) {
        Firebase.analytics.logEvent("....", null)
        firebaseUsernameTyped = true
    }
},
    ...
)
  • 我最上面的屏幕组件现在变得太大而无法阅读。
  • 更多上下文:我更喜欢在良好的代码约定和高效的方式之间取得平衡,因为我不想总是对我的代码保持完美主义。我正在从头开始使用 Compose 东西,但我还没有看到很多关于这些的说明。

谢谢你们!!!

android firebase android-jetpack-compose firebase-analytics
© www.soinside.com 2019 - 2024. All rights reserved.