import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_highlight/flutter_highlight.dart'; import 'package:flutter_highlight/theme_map.dart'; import 'package:git_touch/models/code.dart'; import 'package:git_touch/scaffolds/simple.dart'; import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/picker.dart'; import 'package:provider/provider.dart'; class CodeSettingsScreen extends StatelessWidget { final String code; final String language; CodeSettingsScreen(this.code, this.language); @override Widget build(BuildContext context) { var codeProvider = Provider.of<CodeModel>(context); return SimpleScaffold( title: AppBarTitle('Code theme'), bodyBuilder: () { return Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: <Widget>[ PickerGroup( items: [ PickerGroupItem( title: 'Syntax Highlighting', value: codeProvider.theme, items: CodeModel.themes.map((v) => PickerItem(v, text: v)), onChange: (value) { Provider.of<CodeModel>(context).setTheme(value); }, ), PickerGroupItem( title: 'Font Size', value: codeProvider.fontSize.toString(), items: CodeModel.fontSizes .map((v) => PickerItem(v.toString(), text: v.toString())), onChange: (value) { Provider.of<CodeModel>(context) .setFontSize(int.tryParse(value) ?? 16); }, ), PickerGroupItem( title: 'Font Family', value: codeProvider.fontFamily, items: CodeModel.fontFamilies.map((v) => PickerItem(v, text: v)), onChange: (String value) { Provider.of<CodeModel>(context).setFontFamily(value); }, ), ], ), SingleChildScrollView( scrollDirection: Axis.horizontal, child: HighlightView( code, language: language, theme: themeMap[codeProvider.theme], textStyle: TextStyle( fontSize: codeProvider.fontSize.toDouble(), fontFamily: codeProvider.fontFamilyUsed, ), padding: const EdgeInsets.all(10), ), ) ], ); }, ); } }