Aplikasi sering perlu menyimpan data secara tempatan pada peranti — keutamaan pengguna, data cache, kandungan luar talian. Flutter menawarkan beberapa pilihan — shared_preferences (key-value), SQLite (hubungan), dan lain-lain — setiap satu sesuai untuk keperluan yang berbeza.
Pilihan storan tempatan
SHARED_PREFERENCES → simple KEY-VALUE storage (settings, flags, small data):
→ store primitives (strings, ints, bools) — like a simple persistent map
→ for: user preferences, tokens, simple flags (NOT large/structured data)
SQLITE (sqflite) → a full relational DATABASE on the device:
→ tables, SQL queries — for STRUCTURED, larger data; complex queries; relationships
HIVE / ISAR → fast NoSQL local databases (key-value/object stores) — popular, fast,
Dart-native (no SQL); good for structured local data
FILE storage → read/write files directly (path_provider for directories)
SECURE storage → flutter_secure_storage for SENSITIVE data (tokens, credentials) —
encrypted (keychain/keystore)
Contoh shared_preferences
final prefs = await SharedPreferences.getInstance();
await prefs.setString('username', 'Ann'); // store
final name = prefs.getString('username'); // retrieve
await prefs.setBool('darkMode', true);
Memilih pilihan yang betul
Simple settings/flags → shared_preferences (easy key-value)
Structured/large data, queries → SQLite (sqflite) or Hive/Isar
Sensitive data (tokens, passwords) → flutter_secure_storage (ENCRYPTED — don't put
secrets in shared_preferences, which is NOT secure)
Files → file storage (path_provider)
→ Match the storage to the data's size, structure, and sensitivity.
Mengapa ia penting
Memahami cara menyimpan data secara tempatan adalah berharga kerana aplikasi lazimnya perlu menyimpan data pada peranti — keutamaan pengguna, data cache, kandungan luar talian, token pengesahan — jadi ia adalah pengetahuan praktikal yang berguna untuk membina aplikasi sebenar.
Penyimpanan tempatan ialah keperluan yang hampir sejagat (mengingati tetapan, caching untuk kegunaan luar talian, menyimpan data sesi), dan Flutter menawarkan beberapa pilihan yang sesuai untuk keperluan yang berbeza.
Memahami pilihan — shared_preferences (storan key-value mudah untuk tetapan, flag, dan data kecil), SQLite/sqflite (pangkalan data hubungan penuh untuk data berstruktur dan lebih besar dengan query dan hubungan), Hive/Isar (pangkalan data NoSQL Dart-native yang pantas dan popular untuk data tempatan berstruktur), storan fail, dan storan selamat (flutter_secure_storage untuk data sensitif) — dan bila menggunakan setiap satu ialah pengetahuan utama.
Memilih pilihan yang betul penting: shared_preferences untuk tetapan mudah, SQLite atau Hive/Isar untuk data berstruktur/besar, storan fail untuk fail, dan yang penting storan selamat untuk data sensitif seperti token dan kredential (yang mesti disulitkan melalui keychain/keystore platform — satu titik keselamatan penting, kerana shared_preferences tidak selamat dan tidak sepatutnya menyimpan rahsia, satu kesilapan yang lazim).
Memadankan storan kepada saiz, struktur, dan sensitiviti data mencerminkan keputusan yang baik dan mengelakkan masalah (seperti menggunakan alat yang salah untuk tugas itu atau menyimpan kredential secara tidak selamat).
Memandangkan aplikasi lazimnya memerlukan penyimpanan tempatan (tetapan, caching, data luar talian, token) dan Flutter menawarkan beberapa pilihan untuk keperluan berbeza, dan memandangkan memahaminya dan memilih dengan sesuai (terutamanya menggunakan storan selamat untuk data sensitif) adalah berharga untuk membina aplikasi sebenar dengan betul, memahami penyimpanan data tempatan dalam Flutter ialah pengetahuan yang berharga dan relevan secara praktikal — satu keperluan lazim dalam aplikasi sebenar, penting untuk kedua-dua fungsi (menyimpan data yang betul dengan cara yang betul) dan keselamatan (melindungi data sensitif dengan storan selamat), dan satu kemahiran berguna untuk membina aplikasi yang mengingati state dan berfungsi secara luar talian.
