From a957126d908b412fdb4d5b139c98d56a8cd4667e Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Sat, 1 Mar 2025 17:41:19 -0600 Subject: [PATCH] settings ui --- web/repertory/lib/constants.dart | 2 +- web/repertory/lib/main.dart | 17 ++++++++- web/repertory/lib/widgets/mount_setting.dart | 0 .../lib/widgets/mount_setting_list.dart | 0 web/repertory/lib/widgets/mount_settings.dart | 38 +++++++++++++++++++ web/repertory/lib/widgets/mount_widget.dart | 4 +- web/repertory/pubspec.lock | 8 ++++ web/repertory/pubspec.yaml | 1 + 8 files changed, 66 insertions(+), 4 deletions(-) delete mode 100644 web/repertory/lib/widgets/mount_setting.dart delete mode 100644 web/repertory/lib/widgets/mount_setting_list.dart create mode 100644 web/repertory/lib/widgets/mount_settings.dart diff --git a/web/repertory/lib/constants.dart b/web/repertory/lib/constants.dart index 0d910933..3d57834a 100644 --- a/web/repertory/lib/constants.dart +++ b/web/repertory/lib/constants.dart @@ -1 +1 @@ -const String app_title = "Repertory Management Portal"; +const String appTitle = "Repertory Management Portal"; diff --git a/web/repertory/lib/main.dart b/web/repertory/lib/main.dart index 59cc720b..1cf7bf39 100644 --- a/web/repertory/lib/main.dart +++ b/web/repertory/lib/main.dart @@ -4,6 +4,7 @@ import 'package:provider/provider.dart'; import 'package:repertory/constants.dart' as constants; import 'package:repertory/models/mount_list.dart'; import 'package:repertory/widgets/mount_list_widget.dart'; +import 'package:repertory/widgets/mount_settings.dart'; void main() { runApp(const MyApp()); @@ -15,11 +16,23 @@ class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( - title: constants.app_title, + title: constants.appTitle, theme: ThemeData( colorScheme: ColorScheme.fromSeed(seedColor: Colors.blue), ), - home: const MyHomePage(title: constants.app_title), + initialRoute: '/', + routes: {'/': (context) => const MyHomePage(title: constants.appTitle)}, + onGenerateRoute: (settings) { + if (settings.name == '/settings') { + // final args = settings.arguments as ScreenArguments; + return MaterialPageRoute( + builder: (context) { + return MountSettingsWidget(title: constants.appTitle); + }, + ); + } + return null; + }, ); } } diff --git a/web/repertory/lib/widgets/mount_setting.dart b/web/repertory/lib/widgets/mount_setting.dart deleted file mode 100644 index e69de29b..00000000 diff --git a/web/repertory/lib/widgets/mount_setting_list.dart b/web/repertory/lib/widgets/mount_setting_list.dart deleted file mode 100644 index e69de29b..00000000 diff --git a/web/repertory/lib/widgets/mount_settings.dart b/web/repertory/lib/widgets/mount_settings.dart new file mode 100644 index 00000000..143472f2 --- /dev/null +++ b/web/repertory/lib/widgets/mount_settings.dart @@ -0,0 +1,38 @@ +import 'package:flutter/material.dart'; +import 'package:settings_ui/settings_ui.dart'; + +class MountSettingsWidget extends StatelessWidget { + final String title; + const MountSettingsWidget({super.key, required this.title}); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + backgroundColor: Theme.of(context).colorScheme.inversePrimary, + title: Text(title), + ), + body: SettingsList( + shrinkWrap: false, + sections: [ + SettingsSection( + title: Text('Common'), + tiles: [ + SettingsTile.navigation( + leading: Icon(Icons.language), + title: Text('Language'), + value: Text('English'), + ), + SettingsTile.switchTile( + onToggle: (value) {}, + initialValue: true, + leading: Icon(Icons.format_paint), + title: Text('Enable custom theme'), + ), + ], + ), + ], + ), + ); + } +} diff --git a/web/repertory/lib/widgets/mount_widget.dart b/web/repertory/lib/widgets/mount_widget.dart index 8832b11b..7deaa3fb 100644 --- a/web/repertory/lib/widgets/mount_widget.dart +++ b/web/repertory/lib/widgets/mount_widget.dart @@ -34,7 +34,9 @@ class _MountWidgetState extends State { isThreeLine: isActive, leading: IconButton( icon: Icon(Icons.settings, color: textColor), - onPressed: () {}, + onPressed: () { + Navigator.pushNamed(context, '/settings'); + }, ), subtitle: isActive diff --git a/web/repertory/pubspec.lock b/web/repertory/pubspec.lock index e85e2535..a9ee6483 100644 --- a/web/repertory/pubspec.lock +++ b/web/repertory/pubspec.lock @@ -171,6 +171,14 @@ packages: url: "https://pub.dev" source: hosted version: "6.1.2" + settings_ui: + dependency: "direct main" + description: + name: settings_ui + sha256: d9838037cb554b24b4218b2d07666fbada3478882edefae375ee892b6c820ef3 + url: "https://pub.dev" + source: hosted + version: "2.0.2" sky_engine: dependency: transitive description: flutter diff --git a/web/repertory/pubspec.yaml b/web/repertory/pubspec.yaml index 85fd0eea..373238a1 100644 --- a/web/repertory/pubspec.yaml +++ b/web/repertory/pubspec.yaml @@ -37,6 +37,7 @@ dependencies: collection: ^1.19.1 http: ^1.3.0 provider: ^6.1.2 + settings_ui: ^2.0.2 dev_dependencies: flutter_test: