import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; /// Widget untuk dialog konfigurasi informasi toko class StoreInfoConfigDialog extends StatefulWidget { const StoreInfoConfigDialog({super.key}); @override State createState() => _StoreInfoConfigDialogState(); } class _StoreInfoConfigDialogState extends State { final _formKey = GlobalKey(); // Inisialisasi controller dengan nilai default final TextEditingController _storeNameController = TextEditingController(); final TextEditingController _storeAddressController = TextEditingController(); final TextEditingController _adminNameController = TextEditingController(); final TextEditingController _adminPhoneController = TextEditingController(); @override void initState() { super.initState(); _loadStoreInfo(); } /// Memuat informasi toko dari shared preferences Future _loadStoreInfo() async { final prefs = await SharedPreferences.getInstance(); // Set nilai teks controller setelah mendapatkan data setState(() { _storeNameController.text = prefs.getString('store_name') ?? 'TOKO SEMBAKO MURAH'; _storeAddressController.text = prefs.getString('store_address') ?? 'Jl. Merdeka No. 123'; _adminNameController.text = prefs.getString('admin_name') ?? 'Budi Santoso'; _adminPhoneController.text = prefs.getString('admin_phone') ?? '08123456789'; }); } /// Menyimpan informasi toko ke shared preferences Future _saveStoreInfo() async { if (_formKey.currentState!.validate()) { final prefs = await SharedPreferences.getInstance(); await prefs.setString('store_name', _storeNameController.text); await prefs.setString('store_address', _storeAddressController.text); await prefs.setString('admin_name', _adminNameController.text); await prefs.setString('admin_phone', _adminPhoneController.text); if (mounted) { Navigator.of(context).pop(true); // Kembali dengan nilai true jika berhasil disimpan } } } @override void dispose() { _storeNameController.dispose(); _storeAddressController.dispose(); _adminNameController.dispose(); _adminPhoneController.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return AlertDialog( title: const Text('Konfigurasi Info Toko'), content: Form( key: _formKey, child: SingleChildScrollView( child: Column( mainAxisSize: MainAxisSize.min, children: [ TextFormField( controller: _storeNameController, decoration: const InputDecoration( labelText: 'Nama Toko', border: OutlineInputBorder(), ), validator: (value) { if (value == null || value.isEmpty) { return 'Mohon masukkan nama toko'; } return null; }, ), const SizedBox(height: 16), TextFormField( controller: _storeAddressController, decoration: const InputDecoration( labelText: 'Alamat Toko', border: OutlineInputBorder(), ), validator: (value) { if (value == null || value.isEmpty) { return 'Mohon masukkan alamat toko'; } return null; }, ), const SizedBox(height: 16), TextFormField( controller: _adminNameController, decoration: const InputDecoration( labelText: 'Nama Admin', border: OutlineInputBorder(), ), validator: (value) { if (value == null || value.isEmpty) { return 'Mohon masukkan nama admin'; } return null; }, ), const SizedBox(height: 16), TextFormField( controller: _adminPhoneController, decoration: const InputDecoration( labelText: 'No. Telp Admin', border: OutlineInputBorder(), ), validator: (value) { if (value == null || value.isEmpty) { return 'Mohon masukkan no. telp admin'; } return null; }, ), ], ), ), ), actions: [ TextButton( onPressed: () => Navigator.of(context).pop(false), // Kembali dengan nilai false jika dibatalkan child: const Text('Batal'), ), ElevatedButton( onPressed: _saveStoreInfo, child: const Text('Simpan'), ), ], ); } }