import 'package:capstone_project/providers/settings.dart'; import 'package:capstone_project/widgets/app_shell.dart'; import 'package:capstone_project/widgets/panel_layout.dart'; import 'package:file_picker/file_picker.dart'; import 'package:go_router/go_router.dart'; import 'package:path_provider/path_provider.dart'; import 'package:shadcn_flutter/shadcn_flutter.dart'; class SettingsPage extends StatefulWidget { static GoRoute route = GoRoute( path: "/settings", builder: (context, state) => SettingsPage(), ); @override State createState() => _SettingsPageState(); } class _SettingsPageState extends State { @override Widget build(BuildContext context) { final settings = SettingsProvider.of(context); final apiKey = settings.openRouterApiKey; final storagePath = settings.applicationStorageLocation; final fields = [ PanelField( section: 'API', label: const Text('OpenRouter key'), child: TextField( placeholder: const Text('sk-or-...'), initialValue: apiKey.isEmpty ? '' : '${apiKey.substring(0, apiKey.length >= 8 ? 8 : apiKey.length)}xxxxxx', onChanged: (value) => settings.setOpenRouterApiKey(value), ), ), PanelField( section: 'Application Data', label: const Text('Storage path'), child: Row( children: [ Expanded( child: Text( storagePath.isEmpty ? 'Default' : storagePath, style: TextStyle( fontSize: 11, color: Theme.of(context).colorScheme.mutedForeground, ), overflow: TextOverflow.ellipsis, ), ), const Gap(8), Button.outline( onPressed: () { FilePicker.platform.getDirectoryPath().then((path) { if (path != null) { settings.setApplicationStorageLocation(path); setState(() {}); } }); }, child: const Text('Browse'), ), const Gap(4), IconButton.destructive( icon: const Icon(LucideIcons.refreshCcw), onPressed: () async { final dir = await getApplicationDocumentsDirectory(); settings.setApplicationStorageLocation(dir.path); setState(() {}); }, ), ], ), ), ]; return AugorShell( titleTag: 'Settings', statusLeft: const StatusText('Augor ยท Settings'), child: SingleChildScrollView( child: PanelList(fields: fields), ), ); } }