我已经使用swiftui创建了一个基本的firebase登录应用程序(使用本教程:
https://www.youtube.com/watch?v=FhLEwqyVSjE
).一切正常。
在我看来。我添加了一个文本字段来更改用户的显示名称。为此,我在SessionStore中添加了一个changeDisplayName func。斯威夫特有这样的逻辑:
let changeRequest = Auth.auth().currentUser?.createProfileChangeRequest()
changeRequest?.displayName = displayName
changeRequest?.commitChanges { (error) in
// ...
}
func由我的ContentView中的一个按钮调用。更改显示名也可以,但在我重新启动应用程序之前,我的ContentView仍保留旧的显示名,因为只有在那时ContentView才会调用
session.listen()
并从SessionStore获取新的displayName。
为了解决这个问题,我打电话
session.unbind()
然后
一场听着
在我的ContentView中,每当我的ContentView调用会话存储中的changeDisplayName func且不返回错误时。这是可行的,每次更改我的ContentView时,它都会重新加载新的显示名。
这是一个良好的做法,还是我错过了一个更干净的解决方案?