Create management portal in Flutter #39

This commit is contained in:
2025-03-06 08:19:30 -06:00
parent 847bf68f85
commit 0318489b6c
7 changed files with 469 additions and 474 deletions

View File

@ -0,0 +1,78 @@
import 'package:flutter/material.dart';
import 'package:repertory/constants.dart';
import 'package:repertory/models/mount.dart';
import 'package:repertory/widgets/mount_settings.dart';
class AddMountScreen extends StatefulWidget {
final String title;
const AddMountScreen({super.key, required this.title});
@override
State<AddMountScreen> createState() => _AddMountScreenState();
}
class _AddMountScreenState extends State<AddMountScreen> {
Mount? _mount;
String _mountType = "";
bool _showAdvanced = false;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: Text(widget.title),
actions: [
Row(
children: [
const Text("Advanced"),
IconButton(
icon: Icon(_showAdvanced ? Icons.toggle_on : Icons.toggle_off),
onPressed: () => setState(() => _showAdvanced = !_showAdvanced),
),
],
),
],
),
body: Column(
mainAxisSize: MainAxisSize.min,
children: [
Row(
mainAxisSize: MainAxisSize.min,
children: [
const Text('Provider Type'),
const SizedBox(width: 15.0),
DropdownButton<String>(
value: _mountType,
onChanged: (newValue) {
setState(() {
_mountType = newValue ?? "";
if (_mountType.isNotEmpty) {}
});
},
items:
providerTypeList.map<DropdownMenuItem<String>>((item) {
return DropdownMenuItem<String>(
value: item,
child: Text(item),
);
}).toList(),
),
],
),
if (_mount != null)
MountSettingsWidget(mount: _mount!, showAdvanced: _showAdvanced),
],
),
);
}
@override
void setState(VoidCallback fn) {
if (!mounted) {
return;
}
super.setState(fn);
}
}

View File

@ -0,0 +1,50 @@
import 'package:flutter/material.dart';
import 'package:repertory/models/mount.dart';
import 'package:repertory/widgets/mount_settings.dart';
class EditMountScreen extends StatefulWidget {
final Mount mount;
final String title;
const EditMountScreen({super.key, required this.mount, required this.title});
@override
State<EditMountScreen> createState() => _EditMountScreenState();
}
class _EditMountScreenState extends State<EditMountScreen> {
bool _showAdvanced = false;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: Text(widget.title),
actions: [
Row(
children: [
const Text("Advanced"),
IconButton(
icon: Icon(_showAdvanced ? Icons.toggle_on : Icons.toggle_off),
onPressed: () => setState(() => _showAdvanced = !_showAdvanced),
),
],
),
],
),
body: MountSettingsWidget(
mount: widget.mount,
showAdvanced: _showAdvanced,
),
);
}
@override
void setState(VoidCallback fn) {
if (!mounted) {
return;
}
super.setState(fn);
}
}

View File

@ -0,0 +1,38 @@
import 'package:flutter/material.dart';
import 'package:repertory/widgets/mount_list_widget.dart';
class HomeScreen extends StatefulWidget {
final String title;
const HomeScreen({super.key, required this.title});
@override
State<HomeScreen> createState() => _HomeScreeState();
}
class _HomeScreeState extends State<HomeScreen> {
@override
Widget build(context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
leading: const Icon(Icons.storage),
title: Text(widget.title),
),
body: MountListWidget(),
floatingActionButton: FloatingActionButton(
onPressed: () => Navigator.pushNamed(context, '/add'),
tooltip: 'Add Mount',
child: const Icon(Icons.add),
),
);
}
@override
void setState(VoidCallback fn) {
if (!mounted) {
return;
}
super.setState(fn);
}
}