diff --git a/lib/helpers/extensions/scheme_to_theme.dart b/lib/helpers/extensions/scheme_to_theme.dart index d106186..df68a05 100644 --- a/lib/helpers/extensions/scheme_to_theme.dart +++ b/lib/helpers/extensions/scheme_to_theme.dart @@ -12,10 +12,6 @@ extension SchemeToTheme on ColorScheme { backgroundColor: WidgetStatePropertyAll(primaryContainer), ), ), - chipTheme: ChipThemeData( - labelStyle: TextStyle(color: onPrimary), - color: WidgetStatePropertyAll(primary), - ), textTheme: ThemeData( fontFamilyFallback: ["sans", "emoji"], brightness: brightness, diff --git a/lib/widgets/chat_page/member_list.dart b/lib/widgets/chat_page/member_list.dart index 72ce744..8be1ddd 100644 --- a/lib/widgets/chat_page/member_list.dart +++ b/lib/widgets/chat_page/member_list.dart @@ -1,4 +1,5 @@ import "package:flutter/material.dart"; +import "package:flutter_hooks/flutter_hooks.dart"; import "package:hooks_riverpod/hooks_riverpod.dart"; import "package:nexus/controllers/members_by_type_controller.dart"; import "package:nexus/helpers/extensions/better_when.dart"; @@ -6,24 +7,25 @@ import "package:nexus/helpers/extensions/show_user_popover.dart"; import "package:nexus/models/membership_status.dart"; import "package:nexus/widgets/avatar_or_hash.dart"; -class MemberList extends ConsumerWidget { +class MemberList extends HookConsumerWidget { const MemberList({super.key}); @override Widget build(BuildContext context, WidgetRef ref) { + final status = useState(MembershipStatus.join); final membersProvider = ref.watch( - MembersByTypeController.provider(MembershipStatus.join), + MembersByTypeController.provider(status.value), ); + return Drawer( shape: Border(), child: Column( + spacing: 8, children: [ AppBar( scrolledUnderElevation: 0, leading: Icon(Icons.people), - title: Text( - "Members ${membersProvider.when(data: (members) => "${members.length}", error: (_, _) => "", loading: () => "")}", - ), + title: Text("Members"), actionsPadding: EdgeInsets.only(right: 4), actions: [ if (Scaffold.of(context).hasEndDrawer) @@ -34,6 +36,27 @@ class MemberList extends ConsumerWidget { ), ], ), + Row( + mainAxisAlignment: MainAxisAlignment.center, + spacing: 8, + children: [ + FilterChip( + label: Text("Joined"), + onSelected: (value) => status.value = MembershipStatus.join, + selected: status.value == MembershipStatus.join, + ), + FilterChip( + label: Text("Invited"), + onSelected: (value) => status.value = MembershipStatus.invite, + selected: status.value == MembershipStatus.invite, + ), + FilterChip( + label: Text("Banned"), + onSelected: (value) => status.value = MembershipStatus.ban, + selected: status.value == MembershipStatus.ban, + ), + ], + ), membersProvider.betterWhen( data: (members) => Expanded( child: ListView( diff --git a/lib/widgets/chat_page/user_popover.dart b/lib/widgets/chat_page/user_popover.dart index 7ae7a1c..2baae22 100644 --- a/lib/widgets/chat_page/user_popover.dart +++ b/lib/widgets/chat_page/user_popover.dart @@ -116,9 +116,25 @@ class UserPopover extends ConsumerWidget { for (final pronoun in profile.pronouns.where( (pronoun) => pronoun.language == "en", )) - Chip(label: Text(pronoun.summary)), + Chip( + label: Text(pronoun.summary), + labelStyle: TextStyle( + color: theme.colorScheme.onPrimary, + ), + color: WidgetStatePropertyAll( + theme.colorScheme.primary, + ), + ), if (profile.timezone != null) - Chip(label: Text(profile.timezone!)), + Chip( + label: Text(profile.timezone!), + labelStyle: TextStyle( + color: theme.colorScheme.onPrimary, + ), + color: WidgetStatePropertyAll( + theme.colorScheme.primary, + ), + ), ], ), ),