DataStore লাইব্রেরি শেয়ারডপ্রেফারেন্সের কিছু ত্রুটি কাটিয়ে অসিঙ্ক্রোনাসভাবে, ধারাবাহিকভাবে এবং লেনদেনগতভাবে ডেটা সঞ্চয় করে। এই পৃষ্ঠাটি কোটলিন মাল্টিপ্ল্যাটফর্ম (KMP) প্রকল্পগুলিতে ডেটাস্টোর তৈরির উপর দৃষ্টি নিবদ্ধ করে৷ 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
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
}
)