1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- import 'package:app_flowy/user/infrastructure/repos/user_setting_repo.dart';
- import 'package:equatable/equatable.dart';
- import 'package:flowy_infra/theme.dart';
- import 'package:flowy_infra/language.dart';
- import 'package:flowy_sdk/protobuf/flowy-user-data-model/user_setting.pb.dart';
- import 'package:flutter/material.dart';
- class AppearanceSettingModel extends ChangeNotifier with EquatableMixin {
- AppearanceSettings setting;
- AppTheme _theme;
- AppLanguage _language;
- AppearanceSettingModel(this.setting)
- : _theme = AppTheme.fromName(name: setting.theme),
- _language = AppLanguage.fromName(name: setting.language);
- AppTheme get theme => _theme;
- AppLanguage get language => _language;
- Future<void> save() async {
- await UserSettingReppsitory().setAppearanceSettings(setting);
- }
- @override
- List<Object> get props {
- return [setting.hashCode];
- }
- void swapTheme() {
- final themeType = (_theme.ty == ThemeType.light ? ThemeType.dark : ThemeType.light);
- if (_theme.ty != themeType) {
- _theme = AppTheme.fromType(themeType);
- setting.theme = themeTypeToString(themeType);
- notifyListeners();
- save();
- }
- }
- void setLanguage(Language language) {
- String langaugeString = stringFromLanguageName(language);
- if (setting.language != langaugeString) {
- _language = AppLanguage.fromLanguage(language: language);
- setting.language = langaugeString;
- notifyListeners();
- save();
- }
- }
- }
|