diff --git a/lib/screens/settings_editors.dart b/lib/screens/settings_editors.dart new file mode 100644 index 00000000..74a3c798 --- /dev/null +++ b/lib/screens/settings_editors.dart @@ -0,0 +1,46 @@ +import 'package:flutter/material.dart'; +import 'package:gitjournal/settings.dart'; +import 'package:gitjournal/screens/settings_widgets.dart'; + +class SettingsEditorsScreen extends StatefulWidget { + @override + SettingsEditorsScreenState createState() => SettingsEditorsScreenState(); +} + +class SettingsEditorsScreenState extends State { + @override + Widget build(BuildContext context) { + var settings = Settings.instance; + + var body = Column(children: [ + ListPreference( + title: "Default Editor", + currentOption: settings.defaultEditor.toPublicString(), + options: + SettingsEditorType.options.map((f) => f.toPublicString()).toList(), + onChange: (String publicStr) { + var val = SettingsEditorType.fromPublicString(publicStr); + Settings.instance.defaultEditor = val; + Settings.instance.save(); + setState(() {}); + }, + ), + ]); + + return Scaffold( + appBar: AppBar( + title: const Text('Editor Settings'), + leading: IconButton( + icon: const Icon(Icons.arrow_back), + onPressed: () { + Navigator.of(context).pop(); + }, + ), + ), + body: Padding( + padding: const EdgeInsets.all(16.0), + child: body, + ), + ); + } +} diff --git a/lib/screens/settings_screen.dart b/lib/screens/settings_screen.dart index 8ee0896a..749902f0 100644 --- a/lib/screens/settings_screen.dart +++ b/lib/screens/settings_screen.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:gitjournal/core/notes_folder_fs.dart'; +import 'package:gitjournal/screens/settings_editors.dart'; import 'package:gitjournal/settings.dart'; import 'package:gitjournal/state_container.dart'; import 'package:gitjournal/utils.dart'; @@ -168,17 +169,14 @@ class SettingsListState extends State { enabled: remoteGitConfigured, ), const SizedBox(height: 16.0), - SettingsHeader("Editor Settings"), - ListPreference( - title: "Default Editor", - currentOption: settings.defaultEditor.toPublicString(), - options: - SettingsEditorType.options.map((f) => f.toPublicString()).toList(), - onChange: (String publicStr) { - var val = SettingsEditorType.fromPublicString(publicStr); - Settings.instance.defaultEditor = val; - Settings.instance.save(); - setState(() {}); + ListTile( + title: const Text("Editor Settings"), + subtitle: const Text("Configure how different editors work"), + onTap: () { + var route = MaterialPageRoute( + builder: (context) => SettingsEditorsScreen(), + ); + Navigator.of(context).push(route); }, ), SettingsHeader("Storage"),