appearance.dart 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import 'package:app_flowy/user/infrastructure/repos/user_setting_repo.dart';
  2. import 'package:equatable/equatable.dart';
  3. import 'package:flowy_infra/theme.dart';
  4. import 'package:flowy_sdk/protobuf/flowy-user-data-model/user_setting.pb.dart';
  5. import 'package:flutter/material.dart';
  6. class AppearanceSettingModel extends ChangeNotifier with EquatableMixin {
  7. AppearanceSettings setting;
  8. AppTheme _theme;
  9. AppearanceSettingModel(this.setting) : _theme = AppTheme.fromName(name: setting.theme);
  10. AppTheme get theme => _theme;
  11. Future<void> save() async {
  12. await UserSettingReppsitory().setAppearanceSettings(setting);
  13. }
  14. @override
  15. List<Object> get props {
  16. return [setting.hashCode];
  17. }
  18. void swapTheme() {
  19. final themeType = (_theme.ty == ThemeType.light ? ThemeType.dark : ThemeType.light);
  20. if (_theme.ty != themeType) {
  21. _theme = AppTheme.fromType(themeType);
  22. setting.theme = themeTypeToString(themeType);
  23. notifyListeners();
  24. save();
  25. }
  26. }
  27. void setLanguage(String language) {
  28. // TODO: save the language settings
  29. }
  30. }