Refactor: Reduce .of(context) calls theme

Signed commit
This commit is contained in:
Thomas Klein Langenhorst 2024-08-04 14:09:36 +02:00
commit 5d2aaef3ca
No known key found for this signature in database
GPG key ID: CA868C3CB279DA5B
69 changed files with 525 additions and 501 deletions

View file

@ -23,6 +23,8 @@ class ChatDetailsView extends StatelessWidget {
@override
Widget build(BuildContext context) {
final theme = Theme.of(context);
final room = Matrix.of(context).client.getRoomById(controller.roomId!);
if (room == null) {
return Scaffold(
@ -45,7 +47,7 @@ class ChatDetailsView extends StatelessWidget {
final actualMembersCount = (room.summary.mInvitedMemberCount ?? 0) +
(room.summary.mJoinedMemberCount ?? 0);
final canRequestMoreMembers = members.length < actualMembersCount;
final iconColor = Theme.of(context).textTheme.bodyLarge!.color;
final iconColor = theme.textTheme.bodyLarge!.color;
final displayname = room.getLocalizedDisplayname(
MatrixLocals(L10n.of(context)!),
);
@ -53,7 +55,7 @@ class ChatDetailsView extends StatelessWidget {
appBar: AppBar(
leading: controller.widget.embeddedCloseButton ??
const Center(child: BackButton()),
elevation: Theme.of(context).appBarTheme.elevation,
elevation: theme.appBarTheme.elevation,
actions: <Widget>[
if (room.canonicalAlias.isNotEmpty)
IconButton(
@ -68,7 +70,7 @@ class ChatDetailsView extends StatelessWidget {
ChatSettingsPopupMenu(room, false),
],
title: Text(L10n.of(context)!.chatDetails),
backgroundColor: Theme.of(context).appBarTheme.backgroundColor,
backgroundColor: theme.appBarTheme.backgroundColor,
),
body: MaxWidthBody(
child: ListView.builder(
@ -143,9 +145,8 @@ class ChatDetailsView extends StatelessWidget {
size: 16,
),
style: TextButton.styleFrom(
foregroundColor: Theme.of(context)
.colorScheme
.onSurface,
foregroundColor:
theme.colorScheme.onSurface,
),
label: Text(
room.isDirectChat
@ -167,9 +168,8 @@ class ChatDetailsView extends StatelessWidget {
size: 14,
),
style: TextButton.styleFrom(
foregroundColor: Theme.of(context)
.colorScheme
.secondary,
foregroundColor:
theme.colorScheme.secondary,
),
label: Text(
L10n.of(context)!.countParticipants(
@ -185,13 +185,13 @@ class ChatDetailsView extends StatelessWidget {
),
],
),
Divider(color: Theme.of(context).dividerColor),
Divider(color: theme.dividerColor),
if (!room.canChangeStateEvent(EventTypes.RoomTopic))
ListTile(
title: Text(
L10n.of(context)!.chatDescription,
style: TextStyle(
color: Theme.of(context).colorScheme.secondary,
color: theme.colorScheme.secondary,
fontWeight: FontWeight.bold,
),
),
@ -204,12 +204,10 @@ class ChatDetailsView extends StatelessWidget {
label: Text(L10n.of(context)!.setChatDescription),
icon: const Icon(Icons.edit_outlined),
style: TextButton.styleFrom(
backgroundColor: Theme.of(context)
.colorScheme
.secondaryContainer,
foregroundColor: Theme.of(context)
.colorScheme
.onSecondaryContainer,
backgroundColor:
theme.colorScheme.secondaryContainer,
foregroundColor:
theme.colorScheme.onSecondaryContainer,
),
),
),
@ -231,21 +229,19 @@ class ChatDetailsView extends StatelessWidget {
fontStyle: room.topic.isEmpty
? FontStyle.italic
: FontStyle.normal,
color:
Theme.of(context).textTheme.bodyMedium!.color,
color: theme.textTheme.bodyMedium!.color,
decorationColor:
Theme.of(context).textTheme.bodyMedium!.color,
theme.textTheme.bodyMedium!.color,
),
onOpen: (url) =>
UrlLauncher(context, url.url).launchUrl(),
),
),
const SizedBox(height: 16),
Divider(color: Theme.of(context).dividerColor),
Divider(color: theme.dividerColor),
ListTile(
leading: CircleAvatar(
backgroundColor:
Theme.of(context).scaffoldBackgroundColor,
backgroundColor: theme.scaffoldBackgroundColor,
foregroundColor: iconColor,
child: const Icon(
Icons.insert_emoticon_outlined,
@ -260,8 +256,7 @@ class ChatDetailsView extends StatelessWidget {
if (!room.isDirectChat)
ListTile(
leading: CircleAvatar(
backgroundColor:
Theme.of(context).scaffoldBackgroundColor,
backgroundColor: theme.scaffoldBackgroundColor,
foregroundColor: iconColor,
child: const Icon(Icons.shield_outlined),
),
@ -282,8 +277,7 @@ class ChatDetailsView extends StatelessWidget {
L10n.of(context)!.whoCanPerformWhichAction,
),
leading: CircleAvatar(
backgroundColor:
Theme.of(context).scaffoldBackgroundColor,
backgroundColor: theme.scaffoldBackgroundColor,
foregroundColor: iconColor,
child: const Icon(
Icons.edit_attributes_outlined,
@ -293,14 +287,14 @@ class ChatDetailsView extends StatelessWidget {
onTap: () => context
.push('/rooms/${room.id}/details/permissions'),
),
Divider(color: Theme.of(context).dividerColor),
Divider(color: theme.dividerColor),
ListTile(
title: Text(
L10n.of(context)!.countParticipants(
actualMembersCount.toString(),
),
style: TextStyle(
color: Theme.of(context).colorScheme.secondary,
color: theme.colorScheme.secondary,
fontWeight: FontWeight.bold,
),
),
@ -309,12 +303,10 @@ class ChatDetailsView extends StatelessWidget {
ListTile(
title: Text(L10n.of(context)!.inviteContact),
leading: CircleAvatar(
backgroundColor: Theme.of(context)
.colorScheme
.primaryContainer,
foregroundColor: Theme.of(context)
.colorScheme
.onPrimaryContainer,
backgroundColor:
theme.colorScheme.primaryContainer,
foregroundColor:
theme.colorScheme.onPrimaryContainer,
radius: Avatar.defaultSize / 2,
child: const Icon(Icons.add_outlined),
),
@ -332,8 +324,7 @@ class ChatDetailsView extends StatelessWidget {
),
),
leading: CircleAvatar(
backgroundColor:
Theme.of(context).scaffoldBackgroundColor,
backgroundColor: theme.scaffoldBackgroundColor,
child: const Icon(
Icons.group_outlined,
color: Colors.grey,

View file

@ -14,6 +14,8 @@ class ParticipantListItem extends StatelessWidget {
@override
Widget build(BuildContext context) {
final theme = Theme.of(context);
final membershipBatch = switch (user.membership) {
Membership.ban => L10n.of(context)!.banned,
Membership.invite => L10n.of(context)!.invited,
@ -54,17 +56,17 @@ class ParticipantListItem extends StatelessWidget {
),
margin: const EdgeInsets.symmetric(horizontal: 8),
decoration: BoxDecoration(
color: Theme.of(context).colorScheme.primaryContainer,
color: theme.colorScheme.primaryContainer,
borderRadius: BorderRadius.circular(8),
border: Border.all(
color: Theme.of(context).colorScheme.primary,
color: theme.colorScheme.primary,
),
),
child: Text(
permissionBatch,
style: TextStyle(
fontSize: 14,
color: Theme.of(context).colorScheme.primary,
color: theme.colorScheme.primary,
),
),
),
@ -74,7 +76,7 @@ class ParticipantListItem extends StatelessWidget {
padding: const EdgeInsets.all(4),
margin: const EdgeInsets.symmetric(horizontal: 8),
decoration: BoxDecoration(
color: Theme.of(context).secondaryHeaderColor,
color: theme.secondaryHeaderColor,
borderRadius: BorderRadius.circular(8),
),
child: Center(child: Text(membershipBatch)),