diff --git a/fonts/FiraCode-Bold.ttf b/fonts/FiraCode-Bold.ttf new file mode 100644 index 0000000..45b1a3c Binary files /dev/null and b/fonts/FiraCode-Bold.ttf differ diff --git a/fonts/FiraCode-Regular.ttf b/fonts/FiraCode-Regular.ttf new file mode 100644 index 0000000..3196d96 Binary files /dev/null and b/fonts/FiraCode-Regular.ttf differ diff --git a/fonts/Inconsolata-Bold.ttf b/fonts/Inconsolata-Bold.ttf new file mode 100644 index 0000000..fd19ca2 Binary files /dev/null and b/fonts/Inconsolata-Bold.ttf differ diff --git a/fonts/Inconsolata-Regular.ttf b/fonts/Inconsolata-Regular.ttf new file mode 100644 index 0000000..18a0708 Binary files /dev/null and b/fonts/Inconsolata-Regular.ttf differ diff --git a/fonts/PTMono-Regular.ttf b/fonts/PTMono-Regular.ttf new file mode 100644 index 0000000..13a8004 Binary files /dev/null and b/fonts/PTMono-Regular.ttf differ diff --git a/fonts/SourceCodePro-Bold.ttf b/fonts/SourceCodePro-Bold.ttf new file mode 100644 index 0000000..c790e04 Binary files /dev/null and b/fonts/SourceCodePro-Bold.ttf differ diff --git a/fonts/SourceCodePro-BoldItalic.ttf b/fonts/SourceCodePro-BoldItalic.ttf new file mode 100644 index 0000000..0878199 Binary files /dev/null and b/fonts/SourceCodePro-BoldItalic.ttf differ diff --git a/fonts/SourceCodePro-Regular.ttf b/fonts/SourceCodePro-Regular.ttf new file mode 100644 index 0000000..3563e73 Binary files /dev/null and b/fonts/SourceCodePro-Regular.ttf differ diff --git a/fonts/SourceCodePro-RegularItalic.ttf b/fonts/SourceCodePro-RegularItalic.ttf new file mode 100644 index 0000000..91a2a44 Binary files /dev/null and b/fonts/SourceCodePro-RegularItalic.ttf differ diff --git a/fonts/UbuntuMono-Bold.ttf b/fonts/UbuntuMono-Bold.ttf new file mode 100644 index 0000000..0ac7e58 Binary files /dev/null and b/fonts/UbuntuMono-Bold.ttf differ diff --git a/fonts/UbuntuMono-BoldItalic.ttf b/fonts/UbuntuMono-BoldItalic.ttf new file mode 100644 index 0000000..0054c9a Binary files /dev/null and b/fonts/UbuntuMono-BoldItalic.ttf differ diff --git a/fonts/UbuntuMono-Regular.ttf b/fonts/UbuntuMono-Regular.ttf new file mode 100644 index 0000000..c8add8e Binary files /dev/null and b/fonts/UbuntuMono-Regular.ttf differ diff --git a/fonts/UbuntuMono-RegularItalic.ttf b/fonts/UbuntuMono-RegularItalic.ttf new file mode 100644 index 0000000..20e04f3 Binary files /dev/null and b/fonts/UbuntuMono-RegularItalic.ttf differ diff --git a/lib/models/code.dart b/lib/models/code.dart index 558a59d..6f8dd74 100644 --- a/lib/models/code.dart +++ b/lib/models/code.dart @@ -1,5 +1,6 @@ import 'package:flutter/foundation.dart'; import 'package:flutter_highlight/theme_map.dart'; +import 'package:git_touch/utils/utils.dart'; import 'package:shared_preferences/shared_preferences.dart'; class CodeModel with ChangeNotifier { @@ -9,7 +10,14 @@ class CodeModel with ChangeNotifier { static var themes = themeMap.keys.toList(); static const fontSizes = [12, 13, 14, 15, 16, 17, 18, 19, 20]; - static const fontFamilies = ['System']; + static const fontFamilies = [ + 'System', + 'Fira Code', + 'Inconsolata', + 'PT Mono', + 'Source Code Pro', + 'Ubuntu Mono' + ]; String _theme = 'github'; int _fontSize = 14; @@ -18,6 +26,8 @@ class CodeModel with ChangeNotifier { String get theme => _theme; int get fontSize => _fontSize; String get fontFamily => _fontFamily; + String get fontFamilyUsed => + _fontFamily == 'System' ? monospaceFont : _fontFamily; init() async { var prefs = await SharedPreferences.getInstance(); diff --git a/lib/screens/code_settings.dart b/lib/screens/code_settings.dart index 7f8e07b..c49f700 100644 --- a/lib/screens/code_settings.dart +++ b/lib/screens/code_settings.dart @@ -79,7 +79,22 @@ class CodeSettingsScreen extends StatelessWidget { text: Text('Font Family'), rightWidget: Text(codeProvider.fontFamily.toString()), onTap: () { - // TODO: + Provider.of(context).showPicker( + context, + children: + CodeModel.fontFamilies.map((k) => Text(k)).toList(), + initialItem: CodeModel.fontFamilies + .indexOf(codeProvider.fontFamily), + onSelectedItemChanged: (int value) { + if (_themeDebounce?.isActive ?? false) + _themeDebounce.cancel(); + _themeDebounce = + Timer(const Duration(milliseconds: 500), () { + Provider.of(context) + .setFontFamily(CodeModel.fontFamilies[value]); + }); + }, + ); }, ), ], @@ -92,7 +107,7 @@ class CodeSettingsScreen extends StatelessWidget { theme: themeMap[codeProvider.theme], textStyle: TextStyle( fontSize: codeProvider.fontSize.toDouble(), - fontFamily: monospaceFont, + fontFamily: codeProvider.fontFamilyUsed, ), padding: const EdgeInsets.all(10), ), diff --git a/lib/screens/object.dart b/lib/screens/object.dart index bf47c94..fe1cdbd 100644 --- a/lib/screens/object.dart +++ b/lib/screens/object.dart @@ -135,7 +135,7 @@ class ObjectScreen extends StatelessWidget { padding: EdgeInsets.all(10), textStyle: TextStyle( fontSize: codeProvider.fontSize.toDouble(), - fontFamily: monospaceFont), + fontFamily: codeProvider.fontFamilyUsed), ), ); } diff --git a/pubspec.yaml b/pubspec.yaml index 196898b..ef143cd 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -58,3 +58,37 @@ flutter: uses-material-design: true assets: - images/ + fonts: + - family: Fira Code + fonts: + - asset: fonts/FiraCode-Regular.ttf + - asset: fonts/FiraCode-Bold.ttf + weight: 700 + - family: Inconsolata + fonts: + - asset: fonts/Inconsolata-Regular.ttf + - asset: fonts/Inconsolata-Bold.ttf + weight: 700 + - family: PT Mono + fonts: + - asset: fonts/PTMono-Regular.ttf + - family: Source Code Pro + fonts: + - asset: fonts/SourceCodePro-Regular.ttf + - asset: fonts/SourceCodePro-RegularItalic.ttf + style: italic + - asset: fonts/SourceCodePro-Bold.ttf + weight: 700 + - asset: fonts/SourceCodePro-BoldItalic.ttf + style: italic + weight: 700 + - family: Ubuntu Mono + fonts: + - asset: fonts/UbuntuMono-Regular.ttf + - asset: fonts/UbuntuMono-RegularItalic.ttf + style: italic + - asset: fonts/UbuntuMono-Bold.ttf + weight: 700 + - asset: fonts/UbuntuMono-BoldItalic.ttf + style: italic + weight: 700