52 lines
1.5 KiB
Dart
52 lines
1.5 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
|
import '../../domain/entities/app_settings.dart';
|
|
import '../../../../core/constants/app_constants.dart';
|
|
|
|
part 'settings_provider.g.dart';
|
|
|
|
/// Provider for app settings
|
|
@riverpod
|
|
class Settings extends _$Settings {
|
|
@override
|
|
Future<AppSettings> build() async {
|
|
// TODO: Implement with repository
|
|
// Return default settings for now
|
|
return const AppSettings(
|
|
themeMode: ThemeMode.system,
|
|
language: AppConstants.defaultLanguage,
|
|
currency: AppConstants.defaultCurrency,
|
|
taxRate: AppConstants.defaultTaxRate,
|
|
storeName: AppConstants.appName,
|
|
enableSync: true,
|
|
);
|
|
}
|
|
|
|
Future<void> updateTheme(ThemeMode mode) async {
|
|
final current = state.value;
|
|
if (current != null) {
|
|
final updated = current.copyWith(themeMode: mode);
|
|
state = AsyncValue.data(updated);
|
|
// TODO: Persist to repository
|
|
}
|
|
}
|
|
|
|
Future<void> updateLanguage(String language) async {
|
|
final current = state.value;
|
|
if (current != null) {
|
|
final updated = current.copyWith(language: language);
|
|
state = AsyncValue.data(updated);
|
|
// TODO: Persist to repository
|
|
}
|
|
}
|
|
|
|
Future<void> updateLastSyncTime() async {
|
|
final current = state.value;
|
|
if (current != null) {
|
|
final updated = current.copyWith(lastSyncAt: DateTime.now());
|
|
state = AsyncValue.data(updated);
|
|
// TODO: Persist to repository
|
|
}
|
|
}
|
|
}
|