From a27eeb6f91a8ea4c1827248406ac935b9ddf67e6 Mon Sep 17 00:00:00 2001 From: Ray Jasson <48130098+rayjasson98@users.noreply.github.com> Date: Wed, 6 Jan 2021 15:03:23 +0800 Subject: [PATCH] Fix User Profile Page error - Fix null text in name field due to asynchronous update - Read user-info related fields directly/synchronously from FirebaseAuth.instance --- lib/data/user/repositories/user_repository.dart | 8 +++++--- lib/ui/profile/user_info_field.dart | 10 ++++++++-- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/lib/data/user/repositories/user_repository.dart b/lib/data/user/repositories/user_repository.dart index 19c86af..86660c9 100644 --- a/lib/data/user/repositories/user_repository.dart +++ b/lib/data/user/repositories/user_repository.dart @@ -10,11 +10,13 @@ class UserRepository { } User _currentUser; - static String _uid; + String _uid; DocumentReference _userDoc; - User get currentUser => _currentUser; - static String get uid => _uid; + User get currentUser => FirebaseAuth.instance.currentUser; + String get uid => FirebaseAuth.instance.currentUser.uid; + String get email => FirebaseAuth.instance.currentUser.email; + String get displayName => FirebaseAuth.instance.currentUser.displayName; Future saveToken(String token) async { await _userDoc.update({ diff --git a/lib/ui/profile/user_info_field.dart b/lib/ui/profile/user_info_field.dart index 699d03b..1adb6fb 100644 --- a/lib/ui/profile/user_info_field.dart +++ b/lib/ui/profile/user_info_field.dart @@ -55,12 +55,18 @@ class UserInfoField extends StatelessWidget { Text _buildFieldValue(BuildContext context, String field) { if (field == 'displayName') { return Text( - context.select((UserRepository u) => u.currentUser.displayName), + RepositoryProvider.of( + context, + listen: false, + ).displayName, style: AppTheme.headline6, ); } else { return Text( - context.select((UserRepository u) => u.currentUser.email), + RepositoryProvider.of( + context, + listen: false, + ).email, style: AppTheme.headline6, ); }