Create management portal in Flutter #39

This commit is contained in:
Scott E. Graves 2025-03-04 12:57:59 -06:00
parent 4b3890809d
commit 717b461eaf
2 changed files with 69 additions and 1 deletions

View File

@ -4,6 +4,7 @@ import 'package:repertory/constants.dart' as constants;
import 'package:repertory/helpers.dart';
import 'package:repertory/models/mount.dart';
import 'package:repertory/models/mount_list.dart';
import 'package:repertory/widgets/add_mount_widget.dart';
import 'package:repertory/widgets/mount_list_widget.dart';
import 'package:repertory/widgets/mount_settings.dart';
@ -85,7 +86,40 @@ class _MyHomePageState extends State<MyHomePage> {
child: MountListWidget(),
),
floatingActionButton: FloatingActionButton(
onPressed: () {},
onPressed: () {
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: const Text('Add Mount'),
content: Consumer<MountList>(
builder: (context, mountList, widget) {
return AddMountWidget(
allowEncrypt:
!mountList.items.contains(
(item) => item.type == "encrypt",
),
);
},
),
actions: [
TextButton(
child: const Text('Cancel'),
onPressed: () {
Navigator.of(context).pop();
},
),
TextButton(
child: const Text('Add'),
onPressed: () {
Navigator.of(context).pop();
},
),
],
);
},
);
},
tooltip: 'Add',
child: const Icon(Icons.add),
),

View File

@ -0,0 +1,34 @@
import 'package:flutter/material.dart';
class AddMountWidget extends StatefulWidget {
final bool allowEncrypt;
const AddMountWidget({super.key, required this.allowEncrypt});
@override
State<AddMountWidget> createState() => _AddMountWidgetState();
}
class _AddMountWidgetState extends State<AddMountWidget> {
@override
Widget build(BuildContext context) {
var items = ["S3", "Sia"];
if (widget.allowEncrypt) {
items.insert(0, "Encrypt");
}
return Column(
mainAxisSize: MainAxisSize.min,
children: [
DropdownButton<String>(
value: "S3",
onChanged: (newValue) {},
items:
items.map<DropdownMenuItem<String>>((item) {
return DropdownMenuItem<String>(value: item, child: Text(item));
}).toList(),
),
TextField(decoration: InputDecoration(labelText: 'Name')),
],
);
}
}