KMP এর জন্য DataStore সেট আপ করুন

DataStore লাইব্রেরি SharedPreferences-এর কিছু ত্রুটি কাটিয়ে অসিঙ্ক্রোনাসভাবে, ধারাবাহিকভাবে এবং লেনদেনের মাধ্যমে ডেটা সংরক্ষণ করে। এই পৃষ্ঠাটি Kotlin Multiplatform (KMP) প্রকল্পে DataStore তৈরির উপর আলোকপাত করে। DataStore সম্পর্কে আরও তথ্যের জন্য, DataStore এবং অফিসিয়াল নমুনাগুলির জন্য প্রাথমিক ডকুমেন্টেশন দেখুন।

নির্ভরতা সেট আপ করুন

আপনার KMP প্রজেক্টে DataStore সেট আপ করতে, আপনার মডিউলের build.gradle.kts ফাইলে আর্টিফ্যাক্টের জন্য নির্ভরতা যোগ করুন:

commonMain.dependencies {
  // DataStore library
  implementation("androidx.datastore:datastore:1.1.7")
  // The Preferences DataStore library
  implementation("androidx.datastore:datastore-preferences:1.1.7")
}

ডেটাস্টোর ক্লাসগুলি সংজ্ঞায়িত করুন

আপনার শেয়ার করা KMP মডিউলের কমন সোর্সের ভিতরে DataStoreFactory ব্যবহার করে আপনি DataStore ক্লাসটি সংজ্ঞায়িত করতে পারেন। এই ক্লাসগুলিকে কমন সোর্সে স্থাপন করলে এগুলি সমস্ত টার্গেট প্ল্যাটফর্মে শেয়ার করা সম্ভব হয়। প্ল্যাটফর্ম-নির্দিষ্ট বাস্তবায়ন তৈরি করতে আপনি actual এবং expect ঘোষণা ব্যবহার করতে পারেন।

ডেটাস্টোর ইনস্ট্যান্স তৈরি করুন

প্রতিটি প্ল্যাটফর্মে ডেটাস্টোর অবজেক্ট কীভাবে ইনস্ট্যান্টিয়েট করবেন তা আপনাকে সংজ্ঞায়িত করতে হবে। ফাইল সিস্টেম API-এর পার্থক্যের কারণে API-এর এটিই একমাত্র অংশ যা নির্দিষ্ট প্ল্যাটফর্ম সোর্স সেটে থাকা প্রয়োজন।

সাধারণ

// shared/src/commonMain/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"

অ্যান্ড্রয়েড

অ্যান্ড্রয়েডে DataStore ইনস্ট্যান্স তৈরি করতে, আপনার পাথের সাথে একটি Context প্রয়োজন।

// shared/src/androidMain/kotlin/createDataStore.android.kt

fun createDataStore(context: Context): DataStore<Preferences> = createDataStore(
    producePath = { context.filesDir.resolve(dataStoreFileName).absolutePath }
)

আইওএস

iOS এ, আপনি NSDocumentDirectory থেকে পাথটি পুনরুদ্ধার করতে পারেন:

// shared/src/iosMain/kotlin/createDataStore.ios.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"
    }
)

JVM (ডেস্কটপ)

JVM (ডেস্কটপ) এ DataStore ইনস্ট্যান্স তৈরি করতে, Java অথবা Kotlin API ব্যবহার করে একটি পাথ প্রদান করুন:

// shared/src/jvmMain/kotlin/createDataStore.desktop.kt

fun createDataStore(): DataStore<Preferences> = createDataStore(
    producePath = {
      val file = File(System.getProperty("java.io.tmpdir"), dataStoreFileName)
      file.absolutePath
    }
)