import 'package:flutter/material.dart'; import 'package:simplecloudnotifier/models/keytoken.dart'; class EditKeyTokenPermissionsDialog extends StatefulWidget { final KeyTokenPreview keytoken; final void Function(String) onUpdatePermissions; const EditKeyTokenPermissionsDialog({ required this.keytoken, required this.onUpdatePermissions, Key? key, }) : super(key: key); @override _EditKeyTokenPermissionsDialogState createState() => _EditKeyTokenPermissionsDialogState(); } class _EditKeyTokenPermissionsDialogState extends State { Set selectedPermissions = new Set(); @override void initState() { super.initState(); for (var p in widget.keytoken.permissions.split(';')) { if (p.isNotEmpty) selectedPermissions.add(p); } } @override Widget build(BuildContext context) { return AlertDialog( title: const Text('Permissions'), content: Container( width: 0, height: 400, child: ListView.builder( shrinkWrap: true, itemBuilder: (builder, index) { final txt = (['Admin', 'Read messages', 'Send messages', 'Read userdata'])[index]; final prm = (['A', 'CR', 'CS', 'UR'])[index]; return ListTile( contentPadding: EdgeInsets.fromLTRB(8, 0, 8, 0), visualDensity: VisualDensity(horizontal: 0, vertical: -4), title: Text(txt), leading: Icon( selectedPermissions.contains(prm) ? Icons.check_box : Icons.check_box_outline_blank, color: Theme.of(context).primaryColor, ), onTap: () { setState(() { if (selectedPermissions.contains(prm)) { selectedPermissions.remove(prm); } else { selectedPermissions.add(prm); } }); }, ); }, itemCount: 4, ), ), actions: [ TextButton( onPressed: () => Navigator.of(context).pop(), child: Text('Cancel'), ), TextButton( style: TextButton.styleFrom(textStyle: Theme.of(context).textTheme.labelLarge), child: const Text('Update'), onPressed: () { widget.onUpdatePermissions(selectedPermissions.join(';')); Navigator.of(context).pop(); }, ), ], ); } }