cashumit/lib/utils/store_logo_utils.dart

53 lines
1.9 KiB
Dart

import 'package:shared_preferences/shared_preferences.dart';
import 'package:path_provider/path_provider.dart';
import 'dart:io';
import 'package:flutter/services.dart' show rootBundle;
/// Fungsi untuk menyimpan path logo toko ke shared preferences
Future<void> saveStoreLogoPath(String logoPath) async {
final prefs = await SharedPreferences.getInstance();
await prefs.setString('store_logo_path', logoPath);
}
/// Fungsi untuk menghapus path logo toko dari shared preferences
Future<void> removeStoreLogoPath() async {
final prefs = await SharedPreferences.getInstance();
await prefs.remove('store_logo_path');
}
/// Fungsi untuk mengambil path logo toko dari shared preferences
Future<String?> getStoreLogoPath() async {
final prefs = await SharedPreferences.getInstance();
return prefs.getString('store_logo_path');
}
/// Fungsi untuk menyalin logo dari asset ke direktori dokumen aplikasi
/// dan menyimpan path-nya ke shared preferences
Future<void> copyAndSaveStoreLogoFromAsset(String assetPath) async {
try {
// Dapatkan direktori dokumen aplikasi
final dir = await getApplicationDocumentsDirectory();
final logoDir = Directory('${dir.path}/logos');
// Buat direktori jika belum ada
if (!await logoDir.exists()) {
await logoDir.create(recursive: true);
}
// Path file logo di direktori dokumen
final logoFile = File('${logoDir.path}/store_logo.png');
// Baca data dari asset
final data = await rootBundle.load(assetPath);
// Tulis data ke file di direktori dokumen
await logoFile.writeAsBytes(data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes));
// Simpan path ke shared preferences
await saveStoreLogoPath(logoFile.path);
} catch (e) {
print('Error copying logo from asset: $e');
// Jika gagal, hapus path yang mungkin tersimpan
await removeStoreLogoPath();
}
}