Spaces:
Build error
Build error
import 'package:auto_gpt_flutter_client/viewmodels/settings_viewmodel.dart'; | |
import 'package:auto_gpt_flutter_client/views/settings/api_base_url_field.dart'; | |
import 'package:flutter/material.dart'; | |
/// [SettingsView] displays a list of settings that the user can configure. | |
/// It uses [SettingsViewModel] for state management and logic. | |
class SettingsView extends StatelessWidget { | |
final SettingsViewModel viewModel; | |
/// Constructor for [SettingsView], requiring an instance of [SettingsViewModel]. | |
const SettingsView({Key? key, required this.viewModel}) : super(key: key); | |
Widget build(BuildContext context) { | |
return Scaffold( | |
appBar: AppBar( | |
backgroundColor: Colors.grey, | |
foregroundColor: Colors.black, | |
title: const Text('Settings'), | |
), | |
body: Column( | |
children: [ | |
// All settings in a scrollable list | |
Expanded( | |
child: ListView( | |
children: [ | |
// TODO: Add back dark mode toggle | |
// Dark Mode Toggle | |
// SwitchListTile( | |
// title: const Text('Dark Mode'), | |
// value: viewModel.isDarkModeEnabled, | |
// onChanged: viewModel.toggleDarkMode, | |
// ), | |
// const Divider(), | |
// Developer Mode Toggle | |
SwitchListTile( | |
title: const Text('Developer Mode'), | |
value: viewModel.isDeveloperModeEnabled, | |
onChanged: viewModel.toggleDeveloperMode, | |
), | |
const Divider(), | |
// Base URL Configuration | |
const ListTile( | |
title: Center(child: Text('Agent Base URL')), | |
), | |
ApiBaseUrlField(), | |
const Divider(), | |
// Continuous Mode Steps Configuration | |
ListTile( | |
title: const Center(child: Text('Continuous Mode Steps')), | |
// User can increment or decrement the number of steps using '+' and '-' buttons. | |
subtitle: Row( | |
mainAxisAlignment: | |
MainAxisAlignment.center, // Centers the Row's content | |
children: [ | |
IconButton( | |
icon: const Icon(Icons.remove), | |
onPressed: viewModel | |
.decrementContinuousModeSteps, // Decrement the number of steps. | |
), | |
Text('${viewModel.continuousModeSteps} Steps'), | |
IconButton( | |
icon: const Icon(Icons.add), | |
onPressed: viewModel | |
.incrementContinuousModeSteps, // Increment the number of steps. | |
), | |
], | |
), | |
), | |
const Divider(), | |
], | |
), | |
), | |
// Sign out button fixed at the bottom | |
Container( | |
width: double.infinity, | |
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), | |
child: ElevatedButton.icon( | |
icon: const Icon(Icons.logout, color: Colors.black), | |
label: | |
const Text('Sign Out', style: TextStyle(color: Colors.black)), | |
style: ElevatedButton.styleFrom( | |
backgroundColor: Colors.white, | |
), | |
onPressed: viewModel.signOut, | |
), | |
), | |
], | |
), | |
); | |
} | |
} | |