SharedPreferences là gì?

SharedPreferences là một cách để lưu trữ dữ liệu dưới dạng key - value trong ứng dụng Android và iOS.

SharedPreferences trong Flutter sử dụng NSUserDefaults trên iOS và SharedPreferences trên Android, cung cấp một kho lưu trữ dữ liệu đơn giản.

Tại sao nên sử dụng SharedPreferences trong Flutter?

SharedPreferences là một cách dễ dàng để lưu trữ và truy xuất dữ liệu nhỏ trên thiết bị của người dùng. Dữ liệu này tồn tại ngay cả khi ứng dụng bị đóng và khởi động lại. SharedPreferences có thể được sử dụng để lưu trữ dữ liệu người dùng, cài đặt hoặc bất kỳ dữ liệu nào cần truy cập nhanh chóng và hiệu quả giữa các phiên ứng dụng.

SharedPreferences là một lựa chọn tuyệt vời để quản lý dữ liệu nhẹ vì nó cung cấp một hệ thống lưu trữ key - value đơn giản.

Tại sao không sử dụng SQLite để lưu trữ giá trị nhỏ?

SQLite là một cơ sở dữ liệu quan hệ mạnh mẽ, nhưng nó không phải là lựa chọn tốt nhất để lưu trữ dữ liệu nhỏ. Để sử dụng SQLite, bạn cần viết mã và các lớp hỗ trợ dài dòng.

SharedPreferences cho phép bạn đọc và viết cặp khóa-giá trị chỉ trong vài dòng mã. Tuy nhiên, hãy nhớ rằng SharedPreferences không phải là giải pháp để lưu trữ dữ liệu quan hệ phức tạp.

Sử dụng

Bước 1: cài đặt
chạy dòng lệnh sau

flutter pub add shared_preferences

Bước 2: Import shared_preferences.dart

import 'package:shared_preferences/shared_preferences.dart';

Bước 3: Sử dụng

Ghi dữ liệu
Các kiểu dữ liệu được hỗ trợ là int, double, bool, String and List<String>.

final SharedPreferences prefs = await SharedPreferences.getInstance();

// Lưu 1 số nguyên(int) vào key 'counter'
await prefs.setInt('counter', 10);
// Lưu giá trị boolean vào key 'repeat'
await prefs.setBool('repeat', true);
// Lưu 1 số thực vào key 'decimal'
await prefs.setDouble('decimal', 1.5);
// Lưu 1 chuỗi vào key 'action'
await prefs.setString('action', 'Start');
// Lưu 1 list String vào key 'items'
await prefs.setStringList('items', <String>['Earth', 'Moon', 'Sun']);

Đọc dữ liệu

// đọc dữ liệu từ key 'counter'. Nếu không tồn tại giá trị, trả về null
final int? counter = prefs.getInt('counter');

final bool? repeat = prefs.getBool('repeat');

final double? decimal = prefs.getDouble('decimal');

final String? action = prefs.getString('action');

final List<String>? items = prefs.getStringList('items');

Xóa dữ liệu

// xóa value của key 'counter'
await prefs.remove('counter');

Kiểm tra có còn tồn tại giá trị không

bool CheckValue = prefs.containsKey('counter');

Chi tiết tham khảo tại: https://pub.dev/packages/shared_preferences