1
0
mirror of https://gitlab.com/comunic/comunicmobile synced 2024-11-21 20:39:22 +00:00

Fix refresh issue

This commit is contained in:
Pierre HUBERT 2022-03-12 10:13:32 +01:00
parent 0bd7426813
commit 56c5eb335b
4 changed files with 25 additions and 10 deletions

View File

@ -101,10 +101,14 @@ abstract class MainController extends State<MainRoute> {
PageInfo(type: PageType.LATEST_POSTS_PAGE, child: NewestPostsScreen())); PageInfo(type: PageType.LATEST_POSTS_PAGE, child: NewestPostsScreen()));
/// Open user page /// Open user page
void openUserPage(int userID) => pushPage(PageInfo( void openUserPage(int userID) {
type: PageType.USER_PAGE, final key = GlobalKey();
child: UserPageScreen(userID: userID), pushPage(PageInfo(
id: userID)); type: PageType.USER_PAGE,
child: UserPageScreen(userID: userID, key: key),
id: userID,
widgetKey: key));
}
void openUserAccessDeniedPage(int userID) => void openUserAccessDeniedPage(int userID) =>
pushPage(PageInfo(child: UserAccessDeniedScreen(userID: userID))); pushPage(PageInfo(child: UserAccessDeniedScreen(userID: userID)));

View File

@ -24,6 +24,7 @@ class PageInfo {
/// Unique identification of this child /// Unique identification of this child
final key = UniqueKey(); final key = UniqueKey();
final GlobalKey? widgetKey;
PageInfo({ PageInfo({
this.type = PageType.OTHER_PAGE, this.type = PageType.OTHER_PAGE,
@ -31,5 +32,6 @@ class PageInfo {
this.id, this.id,
this.hideNavBar = false, this.hideNavBar = false,
this.canShowAsDialog = false, this.canShowAsDialog = false,
this.widgetKey
}); });
} }

View File

@ -20,8 +20,7 @@ enum _PageStatus { LOADING, ERROR, READY }
class UserPageScreen extends StatefulWidget { class UserPageScreen extends StatefulWidget {
final int userID; final int userID;
const UserPageScreen({Key? key, required this.userID}) const UserPageScreen({Key? key, required this.userID}) : super(key: key);
: super(key: key);
@override @override
_UserPageScreenState createState() => _UserPageScreenState(); _UserPageScreenState createState() => _UserPageScreenState();
@ -33,18 +32,23 @@ class _UserPageScreenState extends SafeState<UserPageScreen> {
// Objects members // Objects members
_PageStatus _status = _PageStatus.LOADING; _PageStatus _status = _PageStatus.LOADING;
late AdvancedUserInfo _userInfo; AdvancedUserInfo? _userInfo;
FriendStatus? _frienshipStatus; FriendStatus? _frienshipStatus;
final _refreshIndicatorKey = GlobalKey<RefreshIndicatorState>(); final _refreshIndicatorKey = GlobalKey<RefreshIndicatorState>();
final _pageKey = GlobalKey();
_setStatus(_PageStatus s) => setState(() => _status = s); _setStatus(_PageStatus s) => setState(() => _status = s);
@override @override
void didChangeDependencies() { void didChangeDependencies() {
super.didChangeDependencies(); super.didChangeDependencies();
_getUserInfo(); if(_userInfo?.id != widget.userID)
_getUserInfo();
} }
Future<void> _getUserInfo() async { Future<void> _getUserInfo() async {
_setStatus(_PageStatus.LOADING); _setStatus(_PageStatus.LOADING);
@ -112,12 +116,14 @@ class _UserPageScreenState extends SafeState<UserPageScreen> {
Widget _buildBody() { Widget _buildBody() {
return isTablet(context) return isTablet(context)
? UserPageTablet( ? UserPageTablet(
userInfo: _userInfo, key: _pageKey,
userInfo: _userInfo!,
onNeedRefresh: () => _refreshIndicatorKey.currentState!.show(), onNeedRefresh: () => _refreshIndicatorKey.currentState!.show(),
friendshipStatus: _frienshipStatus, friendshipStatus: _frienshipStatus,
) )
: UserMobilePage( : UserMobilePage(
userInfo: _userInfo, key: _pageKey,
userInfo: _userInfo!,
onNeedRefresh: () => _refreshIndicatorKey.currentState!.show(), onNeedRefresh: () => _refreshIndicatorKey.currentState!.show(),
); );
} }

View File

@ -38,6 +38,8 @@ class UserPageTablet extends StatefulWidget {
} }
class _UserPageTabletState extends State<UserPageTablet> { class _UserPageTabletState extends State<UserPageTablet> {
final _formKey = GlobalKey<PostCreateFormWidgetState>();
AdvancedUserInfo get _userInfo => widget.userInfo; AdvancedUserInfo get _userInfo => widget.userInfo;
bool get _isCurrentUser => _userInfo.id == userID(); bool get _isCurrentUser => _userInfo.id == userID();
@ -70,6 +72,7 @@ class _UserPageTabletState extends State<UserPageTablet> {
topWidgets: [ topWidgets: [
_userInfo.canPostTexts _userInfo.canPostTexts
? PostCreateFormWidget( ? PostCreateFormWidget(
key: _formKey,
postTarget: PostTarget.USER_PAGE, postTarget: PostTarget.USER_PAGE,
targetID: _userInfo.id, targetID: _userInfo.id,
onCreated: widget.onNeedRefresh, onCreated: widget.onNeedRefresh,