♻️ Update the way to render total counts of data in UI, close #220
This commit is contained in:
@@ -624,7 +624,8 @@ class _ChatMemberListSheet extends HookConsumerWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, WidgetRef ref) {
|
Widget build(BuildContext context, WidgetRef ref) {
|
||||||
final memberNotifier = ref.read(chatMemberListProvider(roomId).notifier);
|
final memberState = ref.watch(chatMemberListProvider(roomId));
|
||||||
|
final memberNotifier = ref.watch(chatMemberListProvider(roomId).notifier);
|
||||||
|
|
||||||
final roomIdentity = ref.watch(chatRoomIdentityProvider(roomId));
|
final roomIdentity = ref.watch(chatRoomIdentityProvider(roomId));
|
||||||
final chatRoom = ref.watch(chatRoomProvider(roomId));
|
final chatRoom = ref.watch(chatRoomProvider(roomId));
|
||||||
@@ -664,7 +665,7 @@ class _ChatMemberListSheet extends HookConsumerWidget {
|
|||||||
child: Row(
|
child: Row(
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
'members'.plural(memberNotifier.totalCount ?? 0),
|
'members'.plural(memberState.value?.totalCount ?? 0),
|
||||||
style: Theme.of(context).textTheme.headlineSmall?.copyWith(
|
style: Theme.of(context).textTheme.headlineSmall?.copyWith(
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w600,
|
||||||
letterSpacing: -0.5,
|
letterSpacing: -0.5,
|
||||||
|
|||||||
@@ -527,12 +527,11 @@ class _RealmMemberListSheet extends HookConsumerWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, WidgetRef ref) {
|
Widget build(BuildContext context, WidgetRef ref) {
|
||||||
final realmIdentity = ref.watch(realmIdentityProvider(realmSlug));
|
|
||||||
final memberListProvider = realmMemberListNotifierProvider(realmSlug);
|
final memberListProvider = realmMemberListNotifierProvider(realmSlug);
|
||||||
// memberListNotifier is not watched here to prevent unnecessary rebuilds of this widget
|
|
||||||
// when we only need it for passing to PaginationList as a Refreshable
|
final memberListState = ref.watch(memberListProvider);
|
||||||
// However, we used useEffect to dispose it, but AutoDispose handles it.
|
final memberListNotifier = ref.watch(memberListProvider.notifier);
|
||||||
// So we remove the useEffect and the watch.
|
final realmIdentity = ref.watch(realmIdentityProvider(realmSlug));
|
||||||
|
|
||||||
Future<void> invitePerson() async {
|
Future<void> invitePerson() async {
|
||||||
final result = await showModalBottomSheet(
|
final result = await showModalBottomSheet(
|
||||||
@@ -549,7 +548,7 @@ class _RealmMemberListSheet extends HookConsumerWidget {
|
|||||||
data: {'related_user_id': result.id, 'role': 0},
|
data: {'related_user_id': result.id, 'role': 0},
|
||||||
);
|
);
|
||||||
// Refresh the provider
|
// Refresh the provider
|
||||||
ref.invalidate(memberListProvider);
|
memberListNotifier.refresh();
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
showErrorAlert(err);
|
showErrorAlert(err);
|
||||||
}
|
}
|
||||||
@@ -562,11 +561,8 @@ class _RealmMemberListSheet extends HookConsumerWidget {
|
|||||||
children: [
|
children: [
|
||||||
Consumer(
|
Consumer(
|
||||||
builder: (context, ref, _) {
|
builder: (context, ref, _) {
|
||||||
// effective watch to rebuild when data changes (and totalCount updates)
|
|
||||||
ref.watch(memberListProvider);
|
|
||||||
final notifier = ref.read(memberListProvider.notifier);
|
|
||||||
return Text(
|
return Text(
|
||||||
'members'.plural(notifier.totalCount ?? 0),
|
'members'.plural(memberListState.value?.totalCount ?? 0),
|
||||||
style: Theme.of(context).textTheme.headlineSmall?.copyWith(
|
style: Theme.of(context).textTheme.headlineSmall?.copyWith(
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w600,
|
||||||
letterSpacing: -0.5,
|
letterSpacing: -0.5,
|
||||||
|
|||||||
Reference in New Issue
Block a user