การใช้งาน SharedPreferences ใน Flutter

การใช้งาน SharedPreferences ใน Flutter
การใช้งาน SharedPreferences ใน Flutter

การใช้งาน SharedPreferences ใน Flutter เพื่อเก็บข้อมูลในแคชเป็นวิธีที่ง่ายและมีประสิทธิภาพสำหรับการเก็บข้อมูลชั่วคราว แต่อาจไม่เหมาะสมสำหรับการเก็บข้อมูลการตอบสนองของ API โดยเฉพาะเมื่อมีข้อมูลมากหรือซับซ้อน คุณสามารถใช้ SharedPreferences เพื่อเก็บข้อมูลแคชและดึงข้อมูลนั้นเมื่อไม่มีการเชื่อมต่ออินเทอร์เน็ต ต่อไปนี้คือตัวอย่าง:

  1. เพิ่มแพ็คเกจ shared_preferences ลงในไฟล์ pubspec.yaml ของคุณ:
dependencies:
  flutter:
    sdk: flutter
  shared_preferences: ^2.0.8  # ใช้เวอร์ชันล่าสุด
  1. นำเข้าแพ็คเกจในไฟล์ Dart ของคุณ:
import 'package:shared_preferences/shared_preferences.dart';
  1. เพื่อเก็บข้อมูลในแคช บันทึกข้อมูลเมื่อคุณดึงมาจาก API:
import 'package:http/http.dart' as http;

Future<void> fetchAndCacheData(String apiUrl) async {
  try {
    final response = await http.get(Uri.parse(apiUrl));
    if (response.statusCode == 200) {
      final responseData = response.body;
      // บันทึกข้อมูลตอบสนองจาก API ไว้ใน SharedPreferences
      final prefs = await SharedPreferences.getInstance();
      prefs.setString('cachedData', responseData);
    } else {
      throw Exception('การดึงข้อมูลล้มเหลว');
    }
  } catch (e) {
    print('ข้อผิดพลาด: $e');
  }
}
  1. เพื่อดึงข้อมูลแคชเมื่อไม่มีการเชื่อมต่ออินเทอร์เน็ต คุณสามารถทำดังนี้:
Future<String?> getCachedData() async {
  final prefs = await SharedPreferences.getInstance();
  return prefs.getString('cachedData');
}
  1. เมื่อดึงข้อมูล คุณสามารถตรวจสอบว่ามีการเชื่อมต่ออินเทอร์เน็ตโดยใช้แพ็คเกจ connectivity และตัดสินใจว่าจะดึงจาก API หรือใช้ข้อมูลแคช:
import 'package:connectivity/connectivity.dart';

Future<void> fetchData() async {
  final connectivityResult = await Connectivity().checkConnectivity();
  
  if (connectivityResult == ConnectivityResult.none) {
    // ไม่มีการเชื่อมต่ออินเทอร์เน็ต ดึงข้อมูลจากแคช
    final cachedData = await getCachedData();
    if (cachedData != null) {
      // ใช้ข้อมูลแคช
      print('ใช้ข้อมูลแคช: $cachedData');
    } else {
      print('ไม่มีข้อมูลแคช');
    }
  } else {
    // มีการเชื่อมต่ออินเทอร์เน็ต ดึงข้อมูลจาก API
    final apiUrl = 'URL_API_ของคุณ_ที่นี่';
    await fetchAndCacheData(apiUrl);
  }
}

วิธีนี้ช่วยให้คุณสามารถเก็บข้อมูลใน SharedPreferences และดึงข้อมูลเมื่อไม่มีการเชื่อมต่ออินเทอร์เน็ต อย่างไรก็ตาม โปรดทราบว่า SharedPreferences อาจไม่เหมาะสมสำหรับกรณีการแคชที่ซับซ้อนหรือมีข้อมูลมาก สำหรับการแคชที่ซับซ้อนมากขึ้นคุณควรพิจารณาใช้แพ็คเกจแคชอื่นหรือวิธีการแคชที่มีประสิทธิภาพมากขึ้นแทน.

🧡⚡️คลิก zap บทความนี้


Write a comment
No comments yet.