part of 'preference_cubit.dart'; class PreferenceState extends Equatable { const PreferenceState({ required this.preferences, }); PreferenceState.init() : preferences = >{...Preference.allPreferences}; final Set> preferences; PreferenceState copyWith({ Set>? preferences, }) { return PreferenceState( preferences: preferences ?? this.preferences, ); } PreferenceState copyWithPreference>( T preference, ) { return PreferenceState( preferences: >{ ...preferences.toList() ..remove(preference) ..insert(Preference.allPreferences.indexOf(preference), preference), }, ); } bool isOn(T preference) { return preferences .whereType() .singleWhere( (BooleanPreference e) => e.runtimeType == preference.runtimeType, ) .val; } bool _isOn() { return preferences .whereType() .singleWhere( (BooleanPreference e) => e.runtimeType == T, ) .val; } bool get notificationEnabled => _isOn(); bool get complexStoryTileEnabled => _isOn(); bool get eyeCandyEnabled => _isOn(); bool get readerEnabled => _isOn(); bool get markReadStoriesEnabled => _isOn(); bool get metadataEnabled => _isOn(); bool get urlEnabled => _isOn(); bool get tapAnywhereToCollapseEnabled => _isOn(); bool get swipeGestureEnabled => _isOn(); bool get autoScrollEnabled => _isOn(); bool get customTabEnabled => _isOn(); bool get material3Enabled => _isOn(); double get textScaleFactor => preferences.singleWhereType().val; MaterialColor get appColor { return materialColors.elementAt( preferences.singleWhereType().val, ) as MaterialColor; } List get tabs { final String result = preferences.singleWhereType().val.toString(); final List tabIndexes = List.generate( result.length, (int index) => result.codeUnitAt(index) - 48, ); final List tabs = tabIndexes .map((int index) => StoryType.values.elementAt(index)) .toList(); if (tabs.length < StoryType.values.length) { tabs.insert(0, StoryType.values.first); } return tabs; } StoryMarkingMode get storyMarkingMode => StoryMarkingMode.values .elementAt(preferences.singleWhereType().val); FetchMode get fetchMode => FetchMode.values .elementAt(preferences.singleWhereType().val); CommentsOrder get order => CommentsOrder.values .elementAt(preferences.singleWhereType().val); FontSize get fontSize => FontSize.values .elementAt(preferences.singleWhereType().val); Font get font => Font.values.elementAt(preferences.singleWhereType().val); @override List get props => [ ...preferences.map((Preference e) => e.val), ]; }