Last Updated on December 26, 2023 by APPKEY-YOGI
Flutter adalah framework pengembangan UI open-source yang dikembangkan oleh Google. Salah satu konsep penting dalam pengembangan Flutter adalah penggunaan key-value pairs, atau disebut key-value untuk mengidentifikasi dan memanipulasi elemen-elemen dalam UI Flutter. Dalam tutorial kali ini, kita akan membahas apa itu Flutter Key Value dan cara menyimpannya. Yuk simak!
Image by Freepik
Table of Contents
Apa itu Flutter Key Value?
Flutter key value adalah cara untuk menyimpan dan mengakses data di dalam Flutter. Dalam Flutter, key value dapat digunakan dalam beberapa konteks, seperti:
Map
Map adalah struktur data yang menggunakan pasangan key dan value untuk menyimpan dan mengakses data. Dalam Flutter, Map sering digunakan untuk menyimpan properti widget atau konfigurasi lainnya.
Berikut adalah contoh penggunaannya.
Map<String, dynamic> user = { 'name': 'John Doe', 'age': 25, 'email': 'john.doe@example.com', };
Global Key
Global key digunakan untuk mengidentifikasi widget tertentu dalam widget tree. Global key memungkinkan akses langsung ke widget tertentu untuk keperluan manipulasi atau pembaruan.
GlobalKey<FormState> formKey = GlobalKey<FormState>();
Penggunaan Key Value dalam Flutter
Berikut adalah beberapa contoh penggunaan Key Value dalam Flutter.
Menggunakan Map untuk Widget Properties
Map dapat digunakan untuk menyimpan properti-properti widget. Berikut adalah contoh penggunaan Map untuk mengkonfigurasi properti suatu widget.
Map<String, dynamic> buttonConfig = { 'text': 'Klik Saya', 'color': Colors.blue, 'onPressed': () { print('Tombol diklik!'); }, }; ElevatedButton( onPressed: buttonConfig['onPressed'], style: ElevatedButton.styleFrom( primary: buttonConfig['color'], ), child: Text(buttonConfig['text']), );
Menggunakan Global Key untuk Akses Langsung ke Widget
Global key dapat digunakan untuk mengakses widget tertentu dalam widget tree. Berikut adalah contoh penggunaan global key untuk mengakses dan memanipulasi suatu widget.
GlobalKey<FormState> formKey = GlobalKey<FormState>(); Form( key: formKey, child: Column( children: [ TextFormField( // Konfigurasi field input ), ElevatedButton( onPressed: () { if (formKey.currentState!.validate()) { // Lakukan sesuatu setelah form divalidasi } }, child: Text('Submit'), ), ], ), );
Cara Menyimpan Flutter Key Value
Di dalam Flutter, ada beberapa cara untuk menyimpan key value dan itu tergantung pada kebutuhan dan konteks penggunaannya. Berikut adalah beberapa cara umum yang sering digunakan untuk menyimpannya.
Image by Freepik
Menggunakan SharedPreferences
SharedPreferences adalah cara yang umum digunakan untuk menyimpan dan mengambil nilai dengan menggunakan key value di dalam Flutter. SharedPreferences dapat digunakan untuk menyimpan data primitif, seperti string, integer, boolean, dll.
import 'package:shared_preferences/shared_preferences.dart'; void saveData() async { SharedPreferences prefs = await SharedPreferences.getInstance(); prefs.setString('username', 'john_doe'); prefs.setInt('user_age', 25); prefs.setBool('is_logged_in', true); } void readData() async { SharedPreferences prefs = await SharedPreferences.getInstance(); String username = prefs.getString('username') ?? ''; int userAge = prefs.getInt('user_age') ?? 0; bool isLoggedIn = prefs.getBool('is_logged_in') ?? false; print('Username: $username, Age: $userAge, Logged In: $isLoggedIn'); }
Menggunakan Package Database (Contoh: sqflite)
Jika kalian perlu menyimpan data yang lebih kompleks atau persisten, seperti database lokal, kalian dapat menggunakan paket database seperti sqflite. Berikut adalah contoh penggunaan sqflite untuk menyimpan dan membaca data dari database SQLite lokal.
import 'package:sqflite/sqflite.dart'; import 'package:path/path.dart'; class DatabaseHelper { static Database? _database; Future<Database> get database async { if (_database != null) return _database!; _database = await initDatabase(); return _database!; } Future<Database> initDatabase() async { String path = join(await getDatabasesPath(), 'my_database.db'); return await openDatabase(path, version: 1, onCreate: (db, version) { // Buat tabel dan skema database di sini }); } Future<void> saveData(String key, String value) async { final db = await database; await db.insert('my_table', {'key': key, 'value': value}, conflictAlgorithm: ConflictAlgorithm.replace); } Future<String?> readData(String key) async { final db = await database; List<Map<String, dynamic>> results = await db.query('my_table', columns: ['value'], where: 'key = ?', whereArgs: [key]); return results.isNotEmpty ? results.first['value'] : null; } }
Menggunakan State Management
Jika data yang perlu disimpan bersifat transient dan hanya digunakan dalam suatu widget atau subtree widget, kalian dapat menggunakan state management, seperti Provider, GetX, atau Riverpod.
Contoh menggunakan Provider
import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class MyData extends ChangeNotifier { String _name = 'John Doe'; String get name => _name; void setName(String newName) { _name = newName; notifyListeners(); } } void main() { runApp( ChangeNotifierProvider( create: (context) => MyData(), child: MyApp(), ), ); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( body: Center( child: Consumer<MyData>( builder: (context, myData, child) { return Text(myData.name); }, ), ), ), ); } }
Metode penyimpanan key-value bisa dipilih sesuai dengan kebutuhan aplikasi kalian. Jika kalian hanya perlu menyimpan konfigurasi sederhana, SharedPreferences mungkin menjadi pilihan yang baik. Jika kalian bekerja dengan data yang lebih kompleks, pertimbangkan penggunaan paket database seperti sqflite. Jika data bersifat transient, pertimbangkan state management seperti Provider.
Kelebihan dan Kekurangan Flutter Key Value
Kelebihan dan kekurangan dari penggunaan flutter key value tergantung pada konteks penggunaannya. Di bawah ini adalah beberapa kelebihan dan kekurangan umum dari penggunaan flutter key value.
Kelebihan
Berikut adalah beberapa kelebihan dari Key Value.
Sederhana dan Mudah Dimengerti
Konsep key value sederhana dan mudah dimengerti. Ini membuatnya mudah digunakan dan diimplementasikan, terutama untuk penyimpanan konfigurasi atau data sederhana.
Cepat diakses dan Dicari
Dengan menggunakan key sebagai indeks, data dapat diakses secara cepat dan efisien. Pencarian data dengan menggunakan key memiliki kompleksitas waktu yang rendah.
Fleksibilitas
Key value sangat fleksibel dan dapat digunakan dalam berbagai konteks. Mereka dapat digunakan untuk menyimpan data konfigurasi, mengidentifikasi widget dalam UI Flutter, atau sebagai struktur data dasar untuk menyimpan informasi.
Kemudahan Integrasi
Kelebihan lainnya adalah kemudahan integrasi dengan banyak framework dan library. Banyak library dan API eksternal menyediakan data dalam format key value, membuatnya mudah untuk berintegrasi dengan sistem lain.
Kekurangan
Berikut adalah kekurangan dari Key Value.
Keterbatasan dalam Struktur Data
Flutter key value cenderung kurang cocok untuk menyimpan data yang kompleks atau berkaitan erat. Jika data kalian memiliki struktur yang kompleks, mungkin lebih baik menggunakan struktur data yang lebih canggih, seperti objek atau bahkan struktur database relasional.
Keterbatasan dalam Pencarian
Meskipun pencarian berdasarkan key adalah operasi yang cepat, pencarian berdasarkan nilai (value) bisa menjadi lebih lambat jika data sangat besar. Key value biasanya tidak menyediakan indeks terhadap nilai, sehingga pencarian nilai membutuhkan iterasi melalui seluruh dataset.
Kesulitan Pemeliharaan
Dalam skala besar, manajemen banyak key value dapat menjadi sulit dan tidak efisien. Pengaturan key yang baik dan dokumentasi yang memadai diperlukan untuk mencegah kekacauan dan kebingungan.
Keterbatasan Pada Jenis Data
Flutter key value umumnya cocok untuk data sederhana seperti string, angka, atau boolean. Jika kalian perlu menyimpan tipe data yang lebih kompleks (seperti list, map bersarang, dll.), mungkin lebih baik menggunakan struktur data yang lebih kaya seperti database atau koleksi objek.
Kesimpulan
Flutter Key-Value merupakan konsep penting dalam pengembangan aplikasi Flutter yang memungkinkan penyimpanan dan akses data dengan menggunakan pasangan key dan value. Key value sering digunakan dalam menggunakan map untuk widget properties dan menggunakan global key untuk akses langsung ke widget.
Cara menyimpan flutter key value ada tiga yaitu menggunakan SharedPreferences, menggunakan package database dan menggunakan state management. Kelebihan dari key value adalah sederhana dan mudah dimengerti, cepat diakses dan dicari, fleksibilitas dan kemudahan integrasi. Kekurangannya adalah keterbatasan struktur data, keterbatasan dalam pencarian, kesulitan pemeliharaan dan keterbatasan dalam jenis data.
Temukan lebih banyak artikel seri belajar Dart maupun bahasa pemrograman lainnya hanya di CODEKEY. Klik https://codekey.id/ sekarang juga untuk langsung belajar gratis. Sampai bertemu lagi!
Jasa Pembuatan Aplikasi, Website dan Internet Marketing | PT APPKEY
PT APPKEY adalah perusahaan IT yang khusus membuat aplikasi Android, iOS dan mengembangkan sistem website. Kami juga memiliki pengetahuan dan wawasan dalam menjalankan pemasaran online sehingga diharapkan dapat membantu menyelesaikan permasalahan Anda.