enum AppThemeMode { system, light, dark, ugly } enum AppLanguage { system, english, dutch } class AppSettings { final bool pinRequired; final AppThemeMode themeMode; final AppLanguage language; final int barGridRows; const AppSettings({ required this.pinRequired, required this.themeMode, this.language = AppLanguage.system, this.barGridRows = 3, }); AppSettings copyWith({ bool? pinRequired, AppThemeMode? themeMode, AppLanguage? language, int? barGridRows, }) { return AppSettings( pinRequired: pinRequired ?? this.pinRequired, themeMode: themeMode ?? this.themeMode, language: language ?? this.language, barGridRows: barGridRows ?? this.barGridRows, ); } static const AppSettings defaults = AppSettings( pinRequired: false, themeMode: AppThemeMode.system, ); @override bool operator ==(Object other) => identical(this, other) || other is AppSettings && pinRequired == other.pinRequired && themeMode == other.themeMode && language == other.language && barGridRows == other.barGridRows; @override int get hashCode => Object.hash(pinRequired, themeMode, language, barGridRows); }