chore: Follow up nicer dropdownbuttons

This commit is contained in:
krille-chan 2024-04-15 10:12:37 +02:00
parent 216d3bd403
commit 2a4fd6927c
No known key found for this signature in database
2 changed files with 66 additions and 48 deletions

View file

@ -3,6 +3,8 @@ import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:matrix/matrix.dart';
import 'package:fluffychat/config/app_config.dart';
class PermissionsListTile extends StatelessWidget {
final String permissionKey;
final int permission;
@ -72,27 +74,34 @@ class PermissionsListTile extends StatelessWidget {
subtitle: Text(
L10n.of(context)!.minimumPowerLevel(permission.toString()),
),
trailing: DropdownButton<int>(
onChanged: canEdit ? onChanged : null,
value: {0, 50, 100}.contains(permission) ? permission : null,
items: [
DropdownMenuItem(
value: 0,
child: Text(L10n.of(context)!.user),
),
DropdownMenuItem(
value: 50,
child: Text(L10n.of(context)!.moderator),
),
DropdownMenuItem(
value: 100,
child: Text(L10n.of(context)!.admin),
),
DropdownMenuItem(
value: null,
child: Text(L10n.of(context)!.custom),
),
],
trailing: Material(
borderRadius: BorderRadius.circular(AppConfig.borderRadius / 2),
color: Theme.of(context).colorScheme.onInverseSurface,
child: DropdownButton<int>(
padding: const EdgeInsets.symmetric(horizontal: 8.0),
borderRadius: BorderRadius.circular(AppConfig.borderRadius / 2),
underline: const SizedBox.shrink(),
onChanged: canEdit ? onChanged : null,
value: {0, 50, 100}.contains(permission) ? permission : null,
items: [
DropdownMenuItem(
value: 0,
child: Text(L10n.of(context)!.user),
),
DropdownMenuItem(
value: 50,
child: Text(L10n.of(context)!.moderator),
),
DropdownMenuItem(
value: 100,
child: Text(L10n.of(context)!.admin),
),
DropdownMenuItem(
value: null,
child: Text(L10n.of(context)!.custom),
),
],
),
),
);
}

View file

@ -288,40 +288,49 @@ class UserBottomSheetView extends StatelessWidget {
.participantAction(UserBottomSheetAction.mention),
),
if (user != null) ...[
Divider(height: 1, color: Theme.of(context).dividerColor),
Divider(color: Theme.of(context).dividerColor),
ListTile(
title: Text(
'${L10n.of(context)!.userRole} (${user.powerLevel})',
),
leading: const Icon(Icons.person_outlined),
trailing: DropdownButton<int>(
onChanged: user.canChangePowerLevel
? controller.setPowerLevel
: null,
value: {0, 50, 100}.contains(user.powerLevel)
? user.powerLevel
: null,
items: [
DropdownMenuItem(
value: 0,
child: Text(L10n.of(context)!.user),
),
DropdownMenuItem(
value: 50,
child: Text(L10n.of(context)!.moderator),
),
DropdownMenuItem(
value: 100,
child: Text(L10n.of(context)!.admin),
),
DropdownMenuItem(
value: null,
child: Text(L10n.of(context)!.custom),
),
],
trailing: Material(
borderRadius:
BorderRadius.circular(AppConfig.borderRadius / 2),
color: Theme.of(context).colorScheme.onInverseSurface,
child: DropdownButton<int>(
onChanged: user.canChangePowerLevel
? controller.setPowerLevel
: null,
value: {0, 50, 100}.contains(user.powerLevel)
? user.powerLevel
: null,
padding: const EdgeInsets.symmetric(horizontal: 8.0),
borderRadius:
BorderRadius.circular(AppConfig.borderRadius / 2),
underline: const SizedBox.shrink(),
items: [
DropdownMenuItem(
value: 0,
child: Text(L10n.of(context)!.user),
),
DropdownMenuItem(
value: 50,
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)
ListTile(