DataStore (Kotlin मल्टीप्लैटफ़ॉर्म)

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"
    }
)