mirror of
https://github.com/lifegpc/eh_downloader_flutter.git
synced 2026-07-08 01:30:28 +08:00
Update create user dialog
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import 'package:eh_downloader_flutter/globals.dart';
|
||||
import '../globals.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import '../api/file.dart';
|
||||
|
||||
@@ -30,10 +30,12 @@ class UserCard extends StatelessWidget {
|
||||
style: TextStyle(color: cs.secondary))
|
||||
],
|
||||
)),
|
||||
IconButton(
|
||||
onPressed: () {},
|
||||
tooltip: i18n.edit,
|
||||
icon: const Icon(Icons.edit)),
|
||||
!user.isAdmin || (user.isAdmin && auth.isRoot == true)
|
||||
? IconButton(
|
||||
onPressed: () {},
|
||||
tooltip: i18n.edit,
|
||||
icon: const Icon(Icons.edit))
|
||||
: Container(),
|
||||
!user.isAdmin ||
|
||||
(user.isAdmin && auth.isRoot == true && user.id != 0)
|
||||
? IconButton(
|
||||
|
||||
78
lib/components/user_permissions_chips.dart
Normal file
78
lib/components/user_permissions_chips.dart
Normal file
@@ -0,0 +1,78 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||
import '../api/user.dart';
|
||||
|
||||
class UserPermissionsChips extends StatefulWidget {
|
||||
const UserPermissionsChips({super.key, this.permissions, this.onChanged});
|
||||
final UserPermissions? permissions;
|
||||
final ValueChanged<UserPermissions>? onChanged;
|
||||
|
||||
@override
|
||||
State<StatefulWidget> createState() => _UserPermissionsChips();
|
||||
}
|
||||
|
||||
class _UserPermissionsChips extends State<UserPermissionsChips> {
|
||||
late UserPermissions _permissions;
|
||||
@override
|
||||
void initState() {
|
||||
_permissions = widget.permissions ?? UserPermissions(0);
|
||||
super.initState();
|
||||
}
|
||||
|
||||
void _onChanged() {
|
||||
if (widget.onChanged != null) {
|
||||
widget.onChanged!(_permissions);
|
||||
}
|
||||
}
|
||||
|
||||
Widget _buildChips(BuildContext context) {
|
||||
final i18n = AppLocalizations.of(context)!;
|
||||
var list = <FilterChip>[
|
||||
FilterChip(
|
||||
label: Text(i18n.allPermissions),
|
||||
selected: _permissions.isAll,
|
||||
onSelected: (bool value) {
|
||||
setState(() {
|
||||
if (value) {
|
||||
_permissions.code = userPermissionAll;
|
||||
} else {
|
||||
_permissions.code = 0;
|
||||
}
|
||||
});
|
||||
_onChanged();
|
||||
},
|
||||
)
|
||||
];
|
||||
for (var flag in UserPermission.values) {
|
||||
list.add(FilterChip(
|
||||
label: Text(flag.localText(context)),
|
||||
selected: _permissions.has(flag),
|
||||
onSelected: (bool value) {
|
||||
setState(() {
|
||||
if (value) {
|
||||
_permissions.add(flag);
|
||||
} else {
|
||||
_permissions.remove(flag);
|
||||
}
|
||||
});
|
||||
_onChanged();
|
||||
},
|
||||
));
|
||||
}
|
||||
return Wrap(spacing: 5.0, children: list);
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final i18n = AppLocalizations.of(context)!;
|
||||
return Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(bottom: 8),
|
||||
child: Row(mainAxisAlignment: MainAxisAlignment.start, children: [
|
||||
const Icon(Icons.person),
|
||||
Text(i18n.userPermissions, style: const TextStyle(fontSize: 20)),
|
||||
])),
|
||||
_buildChips(context),
|
||||
]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user