2022-01-28 18:34:21 +08:00
|
|
|
import 'package:app_flowy/user/infrastructure/repos/user_setting_repo.dart';
|
|
|
|
import 'package:equatable/equatable.dart';
|
|
|
|
import 'package:flowy_infra/theme.dart';
|
2022-01-28 21:10:13 +05:30
|
|
|
import 'package:flowy_infra/language.dart';
|
2022-01-28 18:34:21 +08:00
|
|
|
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;
|
2022-01-28 21:10:13 +05:30
|
|
|
AppLanguage _language;
|
|
|
|
|
|
|
|
AppearanceSettingModel(this.setting)
|
|
|
|
: _theme = AppTheme.fromName(name: setting.theme),
|
2022-01-28 22:09:15 +05:30
|
|
|
_language = languageFromString(setting.language);
|
2022-01-28 18:34:21 +08:00
|
|
|
|
|
|
|
AppTheme get theme => _theme;
|
2022-01-28 21:10:13 +05:30
|
|
|
AppLanguage get language => _language;
|
2022-01-28 18:34:21 +08:00
|
|
|
|
|
|
|
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();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-01-28 22:09:15 +05:30
|
|
|
void setLanguage(AppLanguage language) {
|
|
|
|
String languageString = stringFromLanguageName(language);
|
2022-01-28 21:10:13 +05:30
|
|
|
|
2022-01-28 22:09:15 +05:30
|
|
|
if (setting.language != languageString) {
|
|
|
|
_language = language;
|
|
|
|
print('language changed to $languageString');
|
|
|
|
setting.language = languageString;
|
2022-01-28 18:48:09 +08:00
|
|
|
notifyListeners();
|
|
|
|
save();
|
|
|
|
}
|
2022-01-28 18:34:21 +08:00
|
|
|
}
|
|
|
|
}
|