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: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),
),
],
),
), ),
); );
} }

View file

@ -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(