git-touch-android-ios-app/lib/models/code.dart

83 lines
2.0 KiB
Dart
Raw Normal View History

import 'package:fimber/fimber.dart';
2019-09-15 11:36:09 +02:00
import 'package:flutter/foundation.dart';
import 'package:flutter_highlight/theme_map.dart';
2019-09-15 12:27:46 +02:00
import 'package:git_touch/utils/utils.dart';
2019-09-15 11:36:09 +02:00
import 'package:shared_preferences/shared_preferences.dart';
class CodeModel with ChangeNotifier {
static const _kTheme = 'code-theme';
static const _kFontSize = 'code-font-size';
static const _kFontFamily = 'code-font-family';
static var themes = themeMap.keys.toList();
static const fontSizes = [12, 13, 14, 15, 16, 17, 18, 19, 20];
2019-09-15 12:27:46 +02:00
static const fontFamilies = [
'System',
'Fira Code',
'Inconsolata',
'PT Mono',
'Source Code Pro',
'Ubuntu Mono'
];
2019-09-15 11:36:09 +02:00
String _theme = 'github';
2019-09-19 16:01:30 +02:00
int _fontSize = 16;
2019-09-15 11:36:09 +02:00
String _fontFamily = 'System';
String get theme => _theme;
int get fontSize => _fontSize;
String get fontFamily => _fontFamily;
2019-09-15 12:27:46 +02:00
String get fontFamilyUsed =>
2019-10-02 10:09:54 +02:00
_fontFamily == 'System' ? CommonStyle.monospace : _fontFamily;
2019-09-15 11:36:09 +02:00
2019-11-05 08:09:54 +01:00
Future<void> init() async {
2019-09-15 11:36:09 +02:00
var prefs = await SharedPreferences.getInstance();
var vh = prefs.getString(_kTheme);
var vs = prefs.getInt(_kFontSize);
var vf = prefs.getString(_kFontFamily);
Fimber.d('read code: $vh, $vs, $vf');
2019-09-15 11:36:09 +02:00
if (themeMap.keys.contains(vh)) {
_theme = vh;
}
if (fontSizes.contains(vs)) {
_fontSize = vs;
}
if (fontFamilies.contains(vf)) {
_fontFamily = vf;
}
notifyListeners();
}
setTheme(String v) async {
var prefs = await SharedPreferences.getInstance();
await prefs.setString(_kTheme, v);
Fimber.d('write code theme: $v');
2019-09-15 11:36:09 +02:00
_theme = v;
notifyListeners();
}
setFontSize(int v) async {
var prefs = await SharedPreferences.getInstance();
await prefs.setInt(_kFontSize, v);
Fimber.d('write code font size: $v');
2019-09-15 11:36:09 +02:00
_fontSize = v;
notifyListeners();
}
setFontFamily(String v) async {
var prefs = await SharedPreferences.getInstance();
await prefs.setString(_kFontFamily, v);
Fimber.d('write code font family: $v');
2019-09-15 11:36:09 +02:00
_fontFamily = v;
notifyListeners();
}
}