स्पंदन का उपयोग करके स्थानीय भंडारण को कैसे बचाया जाए?


98

एंड्रॉइड में, अगर मेरे पास ऐसी जानकारी है जिसे मैं उन सत्रों में बनाए रखना चाहता हूं, जो मुझे पता है कि मैं SharedPreferences का उपयोग कर सकता हूं या एक SQLite डेटाबेस बना सकता हूं या यहां तक ​​कि डिवाइस पर एक फ़ाइल भी लिख सकता हूं और बाद में इसे पढ़ सकता हूं।

क्या फ़्लटर का उपयोग करके इस तरह से डेटा को सहेजने और पुनर्स्थापित करने का कोई तरीका है? या मुझे सेवाओं के उदाहरण में Android और iOS के लिए डिवाइस-विशिष्ट कोड लिखना होगा ?

जवाबों:


118

कुछ विकल्प हैं:


मैंने SQLite तक पहुँचने के लिए एक स्पंदन सेवा लिखी, github.com/ripple182/FlutterSQLiteSample
ripple182

अगर मैं कमरे का उपयोग करता हूं तो क्या यह सकारात्मक है? अगर मैं कमरे का उपयोग करता हूं तो आईओएस के साथ क्या होगा?
MNFS

1
: यह साझा प्राथमिकताएं लिए बेहतर काम करने लगता है pub.dev/packages/shared_preferences
yster


53

यदि आप ऐसी स्थिति में हैं जहां आप एक छोटे से मूल्य को बचाना चाहते हैं जिसे आप बाद में संदर्भित करना चाहते हैं। उसके बाद आपको अपने डेटा को शेअर-वैल्यूफायर का उपयोग करते हुए की-वैल्यू डेटा के रूप में संग्रहित करना चाहिए

लेकिन अगर आप बड़े डेटा को स्टोर करना चाहते हैं तो आपको SQLITE के साथ जाना चाहिए

हालाँकि आप हमेशा फायरबेस डेटाबेस का उपयोग कर सकते हैं जो ऑफ़लाइन उपलब्ध है

चूंकि हम स्थानीय भंडारण के बारे में बात कर रहे हैं आप डिस्क पर फ़ाइलों को हमेशा पढ़ और लिख सकते हैं

अन्य समाधान:


कैसे तय करें कि कब स्क्वीफलाइट या फायरबेस का उपयोग किया जाए?
स्टिकओवरफ्लो

1
sqfliteइसे केवल फोन में स्टोर करता है। firebaseएक केंद्रीय डेटाबेस में सिंक हो जाता है जहां आप अपने बैकएंड में प्रश्नों का प्रदर्शन कर सकते हैं। firebaseउपकरणों के बीच आसान सिंक्रनाइज़ेशन भी करता है।
फेउ

कृपया ध्यान दें कि फायरबेस की फायरस्टार डिफॉल्ट 10MB है और इसे 1MB से कम और अधिकतम 100MB पर सेट किया जा सकता है। शुद्ध ऑफ़लाइन पहुँच की अनुशंसा नहीं की जाती है। यदि आप इसे केवल स्थानीय भंडारण विकल्प के रूप में उपयोग करने की योजना बनाते हैं और डेटा बड़ा है, तो आपको पुनर्विचार करने की आवश्यकता हो सकती है। firebase.google.com/docs/reference/android/com/google/firebase/...
लैंडर

यह पसंदीदा उत्तर होना चाहिए, क्योंकि यह केवल बताता है कि विभिन्न परिदृश्यों में कहां देखना है।
janpeterka

12

आप फ़्लटर के आधिकारिक प्लगइन्स से साझा प्राथमिकताओं का उपयोग कर सकते हैं । https://github.com/flutter/plugins/tree/master/packages/shared_preferences

यह Android के लिए साझा प्राथमिकताएं, iOS के लिए NSUserDefaults का उपयोग करता है।


1
क्या यह बड़े डेटाबेस के लिए आदर्श है?
temp_

1
@ टैम्प_ आईओएस के बारे में ज्यादा नहीं जानता। Android पर साझा प्राथमिकताएं, हालांकि, बड़े डेटाबेस के लिए निश्चित रूप से अनुकूल नहीं हैं। वे फ़ाइल सिस्टम के लिए सादे xml फ़ाइलों के रूप में लिखे जाते हैं, और अनुरोध किए जाने पर फ़ाइल सिस्टम से पढ़ते हैं। वे मुख्य रूप से एप्लिकेशन वरीयताओं और इसी तरह की चीजों को संग्रहीत करने के लिए उपयोग किया जाता है।
माले

: यह साझा प्राथमिकताएं लिए बेहतर काम करने लगता है pub.dev/packages/shared_preferences
yster

7

एक देर से जवाब लेकिन मुझे उम्मीद है कि यह किसी को भी यहाँ आने में मदद करेगा।

मैं श्रेणियों को बचाने के लिए और उनके संबंधित सर्वोत्तम तरीके प्रदान करूंगा ...

  1. साझा प्राथमिकताएँ भंडारण पर सरल मान संग्रहीत करते समय इसका उपयोग करें। रंग थीम, ऐप भाषा, अंतिम स्क्रॉल स्थिति (ऐप्स पढ़ने में) .. ये सरल सेटिंग्स हैं जो आप तब पुनरारंभ करना चाहेंगे जब ऐप पुनरारंभ हो जाएगा .. आप, हालांकि, इसका उपयोग कर सकते हैं बड़ी चीज़ों को सूचीबद्ध करने के लिए (सूचियाँ, मानचित्र, चित्र) लेकिन इसके लिए क्रमांकन और विचलन की आवश्यकता होगी .. इस deserialization और क्रमांकन पर अधिक जानने के लिए यहाँ जाएँ
  2. फ़ाइलें यह बहुत मदद करता है जब आपके पास डेटा होता है जो आपके द्वारा अधिक परिभाषित किया जाता है उदाहरण के लिए लॉग फ़ाइलें, छवि फ़ाइलें और शायद आप सीएसवी फ़ाइलों को निर्यात करना चाहते हैं .. मैंने सुना है कि इस प्रकार की दृढ़ता को स्टोरेज क्लीनर द्वारा धोया जा सकता है जब डिस्क बाहर निकलती है space .. यकीन नहीं हो रहा है जैसा कि मैंने कभी नहीं देखा है .. यह भी लगभग कुछ भी स्टोर कर सकता है लेकिन क्रमांकन और deserialization की मदद से ..
  3. डेटाबेस में सेव करना यह डेटा में काफी मददगार है जो थोड़ा जटिल है। और मुझे लगता है कि यह डिस्क क्लीनर द्वारा धोया नहीं जाता है क्योंकि यह AppData (Android के लिए) में संग्रहीत है । इसमें आपका डेटा SQLite डेटाबेस में संग्रहीत किया जाता है। इसका प्लगइन SQFLite है । यहां आपके द्वारा डाले जा सकने वाले डेटा के प्रकार सब कुछ हैं जो एक डेटाबेस द्वारा दर्शाए जा सकते हैं।

5

यदि आपको एपीआई टोकन या लॉगिन डेटा (पासवर्ड नहीं!) जैसे सरल मूल्यों को संग्रहीत करने की आवश्यकता है, तो यहां वही है जो मैंने उपयोग किया है:

import 'package:shared_preferences/shared_preferences.dart';

asyncFunc() async { // Async func to handle Futures easier; or use Future.then
  SharedPreferences prefs = await SharedPreferences.getInstance();
}
...

// Set
prefs.setString('apiToken', token);

// Get
String token = prefs.getString('apiToken');

// Remove
prefs.remove('apiToken');

shared_preferencesअपने pubspec.yaml में निर्भरता जोड़ना न भूलें (रिक्ति को संरक्षित करें):

dependencies:

  shared_preferences: any

5

कुछ विकल्प हैं:

मूर: डार्ट के लिए दृढ़ता पुस्तकालय

फ़ाइल पढ़ें और लिखें

स्पंदन के लिए साझा प्राथमिकताएँ प्लगइन

स्पंदन के लिए SQlite



0

मुझे लगता है कि यदि आप स्थानीय भंडारण में बड़ी मात्रा में डेटा संग्रहीत करने जा रहे हैं, तो आप sqflite पुस्तकालय का उपयोग कर सकते हैं। यह सेटअप करना बहुत आसान है और मैंने व्यक्तिगत रूप से कुछ परीक्षण परियोजना के लिए उपयोग किया है और यह ठीक काम करता है।

https://github.com/tekartik/sqflite यह एक ट्यूटोरियल - https://proandroiddev.com/flutter-bookshelf-app-part-2-personal-notes-and-database-integration-a3bba84c57

यदि आप क्लाउड में डेटा स्टोर करना चाहते हैं तो आप फायरबेस का उपयोग कर सकते हैं। यह Google द्वारा प्रदान की गई ठोस सेवा है।

https://firebase.google.com/docs/flutter/setup

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.