[dart] j

Viewer

  1. import 'dart:convert';
  2. import 'package:shared_preferences/shared_preferences.dart';
  3.  
  4. class ContactService {
  5.   //method untuk mengambil data dari local storage
  6.   getData() async {
  7.     //inisiasi class untuk menggunakan paket penyimpanan local storage
  8.     SharedPreferences prefs = await SharedPreferences.getInstance();
  9.  
  10.     //mengambil list/array contacts di local storage
  11.     List<String> itemStrings = prefs.getStringList('contacts') ?? [];
  12.  
  13.     //mapping data
  14.     return itemStrings
  15.         .map((item) => json.decode(item) as Map<String, dynamic>)
  16.         .toList();
  17.   }
  18.  
  19.   //method untuk menyimpan data ke local storage
  20.   saveData(
  21.     String name,
  22.     String gender,
  23.     String email,
  24.     String phone,
  25.     String address,
  26.     String hobby,
  27.   ) async {
  28.     //inisiasi class untuk menggunakan paket penyimpanan local storage
  29.     SharedPreferences prefs = await SharedPreferences.getInstance();
  30.  
  31.     //mengambil data dari localstorage dari list contacts
  32.     List<String> dataList = prefs.getStringList('contacts') ?? [];
  33.  
  34.     //membuat variabel objek dengan data yang diisi melalui form
  35.     Map<String, dynamic> newData = {
  36.       'id': DateTime.now().millisecondsSinceEpoch.toInt(),
  37.       'name': name,
  38.       'gender': gender,
  39.       'email': email,
  40.       'phone': phone,
  41.       'address': address,
  42.       'hobby': hobby,
  43.     };
  44.  
  45.     dataList.add(jsonEncode(newData)); // Menambahkan data baru ke dalam daftar
  46.     prefs.setStringList(
  47.       'contacts',
  48.       dataList,
  49.     ); // Menyimpan daftar data ke local storage
  50.   }
  51.  
  52.   //method untuk mengupdate data ke local storage
  53.   updateData(
  54.     String name,
  55.     String gender,
  56.     String email,
  57.     String phone,
  58.     String address,
  59.     String hobby,
  60.     int id,
  61.   ) async {
  62.     //inisialisasi untuk menggunakan paket
  63.     SharedPreferences prefs = await SharedPreferences.getInstance();
  64.  
  65.     //mengambil data dari localstorage
  66.     List<String> dataList = prefs.getStringList('contacts') ?? [];
  67.  
  68.     //membuat variabel objek dengan data yang diisi melalui form
  69.     Map<String, dynamic> newData = {
  70.       'name': name,
  71.       'gender': gender,
  72.       'email': email,
  73.       'phone': phone,
  74.       'address': address,
  75.       'hobby': hobby,
  76.     };
  77.  
  78.     // Cari data dengan primary key yang sesuai
  79.     int dataIndex = -1;
  80.     for (int i = 0; i < dataList.length; i++) {
  81.       Map<String, dynamic> data = jsonDecode(dataList[i]);
  82.       if (data['id'] == id) {
  83.         dataIndex = i;
  84.         break;
  85.       }
  86.     }
  87.  
  88.     if (dataIndex != -1) {
  89.       dataList[dataIndex] = jsonEncode(newData);
  90.       // Jika data ditemukan, perbarui data tersebut dengan newData
  91.     }
  92.  
  93.     prefs.setStringList(
  94.       'contacts',
  95.       dataList,
  96.     ); // Menyimpan daftar data ke local storage
  97.   }
  98.  
  99.   deleteData(int index) async {
  100.     //adalah metode yang digunakan untuk mendapatkan instance (instansiasi) objek SharedPreferences dalam Flutter.
  101.     SharedPreferences prefs = await SharedPreferences.getInstance();
  102.     //digunakan untuk mendapatkan nilai dari SharedPreferences dengan kunci 'data'
  103.     List<String> dataList = prefs.getStringList('contacts') ?? [];
  104.  
  105.     //menghilangkan data dari dataList berdasarkan index
  106.     dataList.removeAt(index);
  107.  
  108.     //set ulang local storage dengan data yang diperbarui
  109.     prefs.setStringList('contacts', dataList);
  110.   }
  111. }

Editor

You can edit this paste and save as new:


File Description
  • j
  • Paste Code
  • 10 Dec-2023
  • 3.33 Kb
You can Share it: