69 lines
1.7 KiB
Dart
69 lines
1.7 KiB
Dart
import 'package:equatable/equatable.dart';
|
|
import 'package:flutter/material.dart';
|
|
import '../../../../core/constants/app_constants.dart';
|
|
|
|
/// App settings domain entity
|
|
class AppSettings extends Equatable {
|
|
final ThemeMode themeMode;
|
|
final String language;
|
|
final String currency;
|
|
final double taxRate;
|
|
final String storeName;
|
|
final bool enableSync;
|
|
final DateTime? lastSyncAt;
|
|
|
|
const AppSettings({
|
|
required this.themeMode,
|
|
required this.language,
|
|
required this.currency,
|
|
required this.taxRate,
|
|
required this.storeName,
|
|
required this.enableSync,
|
|
this.lastSyncAt,
|
|
});
|
|
|
|
AppSettings copyWith({
|
|
ThemeMode? themeMode,
|
|
String? language,
|
|
String? currency,
|
|
double? taxRate,
|
|
String? storeName,
|
|
bool? enableSync,
|
|
DateTime? lastSyncAt,
|
|
}) {
|
|
return AppSettings(
|
|
themeMode: themeMode ?? this.themeMode,
|
|
language: language ?? this.language,
|
|
currency: currency ?? this.currency,
|
|
taxRate: taxRate ?? this.taxRate,
|
|
storeName: storeName ?? this.storeName,
|
|
enableSync: enableSync ?? this.enableSync,
|
|
lastSyncAt: lastSyncAt ?? this.lastSyncAt,
|
|
);
|
|
}
|
|
|
|
/// Create default settings
|
|
factory AppSettings.defaultSettings() {
|
|
return const AppSettings(
|
|
themeMode: ThemeMode.system,
|
|
language: AppConstants.defaultLanguage,
|
|
currency: AppConstants.defaultCurrency,
|
|
taxRate: AppConstants.defaultTaxRate,
|
|
storeName: AppConstants.appName,
|
|
enableSync: true,
|
|
lastSyncAt: null,
|
|
);
|
|
}
|
|
|
|
@override
|
|
List<Object?> get props => [
|
|
themeMode,
|
|
language,
|
|
currency,
|
|
taxRate,
|
|
storeName,
|
|
enableSync,
|
|
lastSyncAt,
|
|
];
|
|
}
|