我了解无法按照此处所述将支持字段“添加”为扩展名。现在我在 jetpack 数据存储的文档中找到了这段代码,并不太明白发生了什么。在我看来,settingsDataStore 是 Context 的扩展字段,但这不应该是可能的......:
val Context.settingsDataStore: DataStore<Settings> by dataStore(
fileName = "settings.pb",
serializer = SettingsSerializer)
稍后这个“settingsDataStore”可以这样访问:
val exampleCounterFlow: Flow<Int> = context.settingsDataStore.data
.map { settings ->
// The exampleCounter property is generated from the proto schema.
settings.exampleCounter
}
有人可以向我解释这里发生了什么吗?这是如何运作的?“dataStore()”是否以某种方式隐含地提供了 getter 和 setter?但实际的“settingsDataStore”到底在哪里?它不能真正引用上下文中的字段......?