DataStore लाइब्रेरी, डेटा को एसिंक्रोनस तरीके से, लगातार, और शेयर किए गए डेटा की कमियों को दूर करने के लिए, लेन-देन के तौर पर इनका इस्तेमाल किया जा सकता है. यह यह पेज, Kotlin Multiplatform (KMP) प्रोजेक्ट में DataStore बनाने पर फ़ोकस करता है. DataStore के बारे में ज़्यादा जानकारी के लिए, इसे देखें DataStore के लिए मुख्य दस्तावेज़ और आधिकारिक सैंपल.
डिपेंडेंसी सेट अप करना
DataStore, KMP के 1.1.0 और इसके बाद के वर्शन पर काम करता है.
अपने KMP प्रोजेक्ट में DataStore सेट अप करने के लिए, आर्टफ़ैक्ट के लिए डिपेंडेंसी जोड़ें
build.gradle.kts
फ़ाइल में अपने मॉड्यूल के लिए:
androidx.datastore:datastore
- DataStore लाइब्रेरीandroidx.datastore:datastore-preferences
- प्राथमिकताओं की DataStore लाइब्रेरी
DataStore क्लास तय करें
DataStore
क्लास को कॉमन के अंदर DataStoreFactory
से तय किया जा सकता है
सोर्स के तौर पर मिला है. इन क्लास को कॉमन सोर्स में शामिल करना
को टारगेट किए गए सभी प्लैटफ़ॉर्म पर शेयर किया जा सकता है. इस्तेमाल करने के लिए
actual
और expect
एलान करना होगा
प्लैटफ़ॉर्म के हिसाब से सुविधाएं लागू करना.
DataStore इंस्टेंस बनाएं
आपको हर प्लैटफ़ॉर्म पर DataStore ऑब्जेक्ट को इंस्टैंशिएट करने का तरीका तय करना होगा. एपीआई का सिर्फ़ यही एक हिस्सा है, जिसका किसी खास प्लैटफ़ॉर्म में होना ज़रूरी है सोर्स सेट शामिल हैं.
सामान्य
// shared/src/androidMain/kotlin/createDataStore.kt
/**
* Gets the singleton DataStore instance, creating it if necessary.
*/
fun createDataStore(producePath: () -> String): DataStore<Preferences> =
PreferenceDataStoreFactory.createWithPath(
produceFile = { producePath().toPath() }
)
internal const val dataStoreFileName = "dice.preferences_pb"
Android
DataStore
इंस्टेंस बनाने के लिए, आपको एक Context
की साथ में
फ़ाइल पाथ.
// shared/src/androidMain/kotlin/createDataStore.android.kt
fun createDataStore(context: Context): DataStore<Preferences> = createDataStore(
producePath = { context.filesDir.resolve(dataStoreFileName).absolutePath }
)
iOS
DataStore इंस्टेंस बनाने के लिए, आपको डेटाबेस पाथ.
// shared/src/iosMain/kotlin/createDataStore.kt
fun createDataStore(): DataStore<Preferences> = createDataStore(
producePath = {
val documentDirectory: NSURL? = NSFileManager.defaultManager.URLForDirectory(
directory = NSDocumentDirectory,
inDomain = NSUserDomainMask,
appropriateForURL = null,
create = false,
error = null,
)
requireNotNull(documentDirectory).path + "/$dataStoreFileName"
}
)