如何在原始数据存储中添加对象列表并在视图模型中观察

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 作为实时数据。我可以看出用户数据正在保存在原始数据存储中,但问题是我不知道为什么每次更新原始数据存储时都不会触发观察者。

提前谢谢你:)