ডেটাস্টোর (কোটলিন মাল্টিপ্ল্যাটফর্ম)

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

নির্ভরতা সেট আপ করা হচ্ছে

ডেটাস্টোর 1.1.0 এবং উচ্চতর সংস্করণে KMP সমর্থন করে।

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

  • androidx.datastore:datastore - DataStore লাইব্রেরি
  • androidx.datastore:datastore-preferences - The Preferences DataStore লাইব্রেরি

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

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

ডেটাস্টোর উদাহরণ তৈরি করুন

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

সাধারণ

// 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"

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

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

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

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

iOS

ডেটাস্টোর ইনস্ট্যান্স তৈরি করতে, আপনার ডাটাবেস পাথ সহ একটি ডাটাবেস ফ্যাক্টরি প্রয়োজন।

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