67 lines
2.1 KiB
Dart
67 lines
2.1 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:get_it/get_it.dart';
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
|
|
final SharedPreferences _prefs = GetIt.instance.get<SharedPreferences>();
|
|
|
|
enum JapaneseFont {
|
|
none,
|
|
droidSansJapanese,
|
|
notoSansCJK,
|
|
notoSerifCJK,
|
|
}
|
|
|
|
extension Methods on JapaneseFont {
|
|
TextStyle get textStyle {
|
|
String? fontFamily;
|
|
switch (this) {
|
|
case JapaneseFont.droidSansJapanese:
|
|
fontFamily = 'Droid Sans Japanese';
|
|
break;
|
|
case JapaneseFont.notoSansCJK:
|
|
fontFamily = 'Noto Sans CJK';
|
|
break;
|
|
case JapaneseFont.notoSerifCJK:
|
|
fontFamily = 'Noto Serif CJK';
|
|
break;
|
|
case JapaneseFont.none:
|
|
}
|
|
return TextStyle(fontFamily: fontFamily);
|
|
}
|
|
|
|
String get name =>
|
|
{
|
|
JapaneseFont.none: 'Default',
|
|
JapaneseFont.droidSansJapanese: 'Droid Sans Japanese',
|
|
JapaneseFont.notoSansCJK: 'Noto Sans CJK',
|
|
JapaneseFont.notoSerifCJK: 'Noto Serif CJK',
|
|
}[this] ??
|
|
'';
|
|
}
|
|
|
|
const Map<String, dynamic> _defaults = {
|
|
'romajiEnabled': false,
|
|
'extensiveSearch': true,
|
|
'darkThemeEnabled': false,
|
|
'autoThemeEnabled': false,
|
|
'japaneseFont': JapaneseFont.droidSansJapanese,
|
|
};
|
|
|
|
bool _getSettingOrDefault(String settingName) =>
|
|
_prefs.getBool(settingName) ?? _defaults[settingName];
|
|
|
|
bool get romajiEnabled => _getSettingOrDefault('romajiEnabled');
|
|
bool get extensiveSearchEnabled => _getSettingOrDefault('extensiveSearch');
|
|
bool get darkThemeEnabled => _getSettingOrDefault('darkThemeEnabled');
|
|
bool get autoThemeEnabled => _getSettingOrDefault('autoThemeEnabled');
|
|
JapaneseFont get japaneseFont {
|
|
final int? i = _prefs.getInt('japaneseFont');
|
|
return (i != null) ? JapaneseFont.values[i] : _defaults['japaneseFont'];
|
|
}
|
|
|
|
set romajiEnabled(b) => _prefs.setBool('romajiEnabled', b);
|
|
set extensiveSearchEnabled(b) => _prefs.setBool('extensiveSearch', b);
|
|
set darkThemeEnabled(b) => _prefs.setBool('darkThemeEnabled', b);
|
|
set autoThemeEnabled(b) => _prefs.setBool('autoThemeEnabled', b);
|
|
set japaneseFont(JapaneseFont jf) => _prefs.setInt('japaneseFont', jf.index);
|