Files
retail/lib/features/settings/data/datasources/settings_local_datasource.dart
Phuoc Nguyen b94c158004 runable
2025-10-10 16:38:07 +07:00

42 lines
1.2 KiB
Dart

import 'package:hive_ce/hive.dart';
import '../models/app_settings_model.dart';
import '../../../../core/constants/storage_constants.dart';
import '../../../../core/constants/app_constants.dart';
/// Settings local data source using Hive
abstract class SettingsLocalDataSource {
Future<AppSettingsModel> getSettings();
Future<void> updateSettings(AppSettingsModel settings);
}
class SettingsLocalDataSourceImpl implements SettingsLocalDataSource {
final Box<AppSettingsModel> box;
SettingsLocalDataSourceImpl(this.box);
@override
Future<AppSettingsModel> getSettings() async {
var settings = box.get(StorageConstants.settingsKey);
// Return default settings if not found
if (settings == null) {
settings = AppSettingsModel(
themeModeString: 'system',
language: AppConstants.defaultLanguage,
currency: AppConstants.defaultCurrency,
taxRate: AppConstants.defaultTaxRate,
storeName: AppConstants.appName,
enableSync: true,
);
await box.put(StorageConstants.settingsKey, settings);
}
return settings;
}
@override
Future<void> updateSettings(AppSettingsModel settings) async {
await box.put(StorageConstants.settingsKey, settings);
}
}