mirror of
https://github.com/krille-chan/fluffychat
synced 2024-10-05 16:32:51 +00:00
chore: Follow up nicer dropdownbuttons
This commit is contained in:
parent
216d3bd403
commit
2a4fd6927c
2 changed files with 66 additions and 48 deletions
|
@ -3,6 +3,8 @@ import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_gen/gen_l10n/l10n.dart';
|
import 'package:flutter_gen/gen_l10n/l10n.dart';
|
||||||
import 'package:matrix/matrix.dart';
|
import 'package:matrix/matrix.dart';
|
||||||
|
|
||||||
|
import 'package:fluffychat/config/app_config.dart';
|
||||||
|
|
||||||
class PermissionsListTile extends StatelessWidget {
|
class PermissionsListTile extends StatelessWidget {
|
||||||
final String permissionKey;
|
final String permissionKey;
|
||||||
final int permission;
|
final int permission;
|
||||||
|
@ -72,27 +74,34 @@ class PermissionsListTile extends StatelessWidget {
|
||||||
subtitle: Text(
|
subtitle: Text(
|
||||||
L10n.of(context)!.minimumPowerLevel(permission.toString()),
|
L10n.of(context)!.minimumPowerLevel(permission.toString()),
|
||||||
),
|
),
|
||||||
trailing: DropdownButton<int>(
|
trailing: Material(
|
||||||
onChanged: canEdit ? onChanged : null,
|
borderRadius: BorderRadius.circular(AppConfig.borderRadius / 2),
|
||||||
value: {0, 50, 100}.contains(permission) ? permission : null,
|
color: Theme.of(context).colorScheme.onInverseSurface,
|
||||||
items: [
|
child: DropdownButton<int>(
|
||||||
DropdownMenuItem(
|
padding: const EdgeInsets.symmetric(horizontal: 8.0),
|
||||||
value: 0,
|
borderRadius: BorderRadius.circular(AppConfig.borderRadius / 2),
|
||||||
child: Text(L10n.of(context)!.user),
|
underline: const SizedBox.shrink(),
|
||||||
),
|
onChanged: canEdit ? onChanged : null,
|
||||||
DropdownMenuItem(
|
value: {0, 50, 100}.contains(permission) ? permission : null,
|
||||||
value: 50,
|
items: [
|
||||||
child: Text(L10n.of(context)!.moderator),
|
DropdownMenuItem(
|
||||||
),
|
value: 0,
|
||||||
DropdownMenuItem(
|
child: Text(L10n.of(context)!.user),
|
||||||
value: 100,
|
),
|
||||||
child: Text(L10n.of(context)!.admin),
|
DropdownMenuItem(
|
||||||
),
|
value: 50,
|
||||||
DropdownMenuItem(
|
child: Text(L10n.of(context)!.moderator),
|
||||||
value: null,
|
),
|
||||||
child: Text(L10n.of(context)!.custom),
|
DropdownMenuItem(
|
||||||
),
|
value: 100,
|
||||||
],
|
child: Text(L10n.of(context)!.admin),
|
||||||
|
),
|
||||||
|
DropdownMenuItem(
|
||||||
|
value: null,
|
||||||
|
child: Text(L10n.of(context)!.custom),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -288,40 +288,49 @@ class UserBottomSheetView extends StatelessWidget {
|
||||||
.participantAction(UserBottomSheetAction.mention),
|
.participantAction(UserBottomSheetAction.mention),
|
||||||
),
|
),
|
||||||
if (user != null) ...[
|
if (user != null) ...[
|
||||||
Divider(height: 1, color: Theme.of(context).dividerColor),
|
Divider(color: Theme.of(context).dividerColor),
|
||||||
ListTile(
|
ListTile(
|
||||||
title: Text(
|
title: Text(
|
||||||
'${L10n.of(context)!.userRole} (${user.powerLevel})',
|
'${L10n.of(context)!.userRole} (${user.powerLevel})',
|
||||||
),
|
),
|
||||||
leading: const Icon(Icons.person_outlined),
|
leading: const Icon(Icons.person_outlined),
|
||||||
trailing: DropdownButton<int>(
|
trailing: Material(
|
||||||
onChanged: user.canChangePowerLevel
|
borderRadius:
|
||||||
? controller.setPowerLevel
|
BorderRadius.circular(AppConfig.borderRadius / 2),
|
||||||
: null,
|
color: Theme.of(context).colorScheme.onInverseSurface,
|
||||||
value: {0, 50, 100}.contains(user.powerLevel)
|
child: DropdownButton<int>(
|
||||||
? user.powerLevel
|
onChanged: user.canChangePowerLevel
|
||||||
: null,
|
? controller.setPowerLevel
|
||||||
items: [
|
: null,
|
||||||
DropdownMenuItem(
|
value: {0, 50, 100}.contains(user.powerLevel)
|
||||||
value: 0,
|
? user.powerLevel
|
||||||
child: Text(L10n.of(context)!.user),
|
: null,
|
||||||
),
|
padding: const EdgeInsets.symmetric(horizontal: 8.0),
|
||||||
DropdownMenuItem(
|
borderRadius:
|
||||||
value: 50,
|
BorderRadius.circular(AppConfig.borderRadius / 2),
|
||||||
child: Text(L10n.of(context)!.moderator),
|
underline: const SizedBox.shrink(),
|
||||||
),
|
items: [
|
||||||
DropdownMenuItem(
|
DropdownMenuItem(
|
||||||
value: 100,
|
value: 0,
|
||||||
child: Text(L10n.of(context)!.admin),
|
child: Text(L10n.of(context)!.user),
|
||||||
),
|
),
|
||||||
DropdownMenuItem(
|
DropdownMenuItem(
|
||||||
value: null,
|
value: 50,
|
||||||
child: Text(L10n.of(context)!.custom),
|
child: Text(L10n.of(context)!.moderator),
|
||||||
),
|
),
|
||||||
],
|
DropdownMenuItem(
|
||||||
|
value: 100,
|
||||||
|
child: Text(L10n.of(context)!.admin),
|
||||||
|
),
|
||||||
|
DropdownMenuItem(
|
||||||
|
value: null,
|
||||||
|
child: Text(L10n.of(context)!.custom),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Divider(height: 1, color: Theme.of(context).dividerColor),
|
Divider(color: Theme.of(context).dividerColor),
|
||||||
],
|
],
|
||||||
if (user != null && user.canKick)
|
if (user != null && user.canKick)
|
||||||
ListTile(
|
ListTile(
|
||||||
|
|
Loading…
Reference in a new issue