use*_*730 5 android protocol-buffers kotlin
我正在尝试在原始数据存储中添加 userserData 对象的列表。
这是我的 protobuf 架构
syntax = "proto3";
option java_package = "com.wkt.distriware";
option java_multiple_files = true;
message LoginResponse {
message UserData {
string username = 1;
string userType = 2;
string token = 3;
bool isActive = 4;
}
repeated UserData usersData = 1;
}
Run Code Online (Sandbox Code Playgroud)
这是负责更新和获取 userData 的类。
class LoginResProtoDataStore(
context: Context
) {
private val dataStore = context.loginResponseDataStore
val userData: Flow<LoginResponse.UserData> = dataStore.data
.map { loginResponse ->
val userDataObject = LoginResponse.UserData.getDefaultInstance()
loginResponse.usersDataList.map { user ->
if(user.isActive) {
val userDataBuilder = userDataObject.toBuilder()
userDataBuilder.username = user.username
userDataBuilder.userType = user.userType
userDataBuilder.token = user.token
}
}
userDataObject
}
suspend fun updateUserData(user: User) {
dataStore.updateData { loginResponse ->
val userData = LoginResponse.UserData.newBuilder()
userData.username = user.username
userData.userType = user.userType
userData.token = user.token
loginResponse.toBuilder()
.addUsersData(userData).build()
}
}
}
Run Code Online (Sandbox Code Playgroud)
LoginResponse.UserData是从protobuf 模式生成的类。我想要做的是更新原始数据存储中的列表并观察使用 Kotlin Flow 作为实时数据。我可以看出用户数据正在保存在原始数据存储中,但问题是我不知道为什么每次更新原始数据存储时都不会触发观察者。
提前谢谢你:)
| 归档时间: |
|
| 查看次数: |
1519 次 |
| 最近记录: |