diff --git a/lib/src/app/pages/thunder_page.dart b/lib/src/app/pages/thunder_page.dart index e893005d8..fbc5dee7b 100644 --- a/lib/src/app/pages/thunder_page.dart +++ b/lib/src/app/pages/thunder_page.dart @@ -486,6 +486,7 @@ class _ThunderState extends State { postSortType: state.siteResponse?.myUser?.localUserView.localUser.defaultSortType ?? feedCubit.state.defaultPostSortType, scaffoldStateKey: scaffoldStateKey, showHidden: feedCubit.state.showHiddenPosts, + isActive: selectedPageIndex == 0, ); }, ), diff --git a/lib/src/features/feed/presentation/pages/feed_page.dart b/lib/src/features/feed/presentation/pages/feed_page.dart index ddfa17992..40d54b730 100644 --- a/lib/src/features/feed/presentation/pages/feed_page.dart +++ b/lib/src/features/feed/presentation/pages/feed_page.dart @@ -52,6 +52,7 @@ class FeedPage extends StatefulWidget { this.username, this.scaffoldStateKey, this.showHidden = false, + this.isActive = false, }); /// The type of feed to display. @@ -87,6 +88,9 @@ class FeedPage extends StatefulWidget { /// Whether to show hidden posts in the feed final bool showHidden; + /// Whether this feed page is currently active (visible) + final bool isActive; + @override State createState() => _FeedPageState(); } @@ -131,7 +135,11 @@ class _FeedPageState extends State with AutomaticKeepAliveClientMixin< return BlocProvider.value( value: bloc, - child: FeedView(scaffoldStateKey: widget.scaffoldStateKey, feedType: widget.feedType), + child: FeedView( + scaffoldStateKey: widget.scaffoldStateKey, + feedType: widget.feedType, + isActive: widget.isActive, + ), ); } @@ -150,13 +158,17 @@ class _FeedPageState extends State with AutomaticKeepAliveClientMixin< reset: true, showHidden: widget.showHidden, )), - child: FeedView(scaffoldStateKey: widget.scaffoldStateKey, feedType: widget.feedType), + child: FeedView( + scaffoldStateKey: widget.scaffoldStateKey, + feedType: widget.feedType, + isActive: widget.isActive, + ), ); } } class FeedView extends StatefulWidget { - const FeedView({super.key, this.scaffoldStateKey, this.feedType}); + const FeedView({super.key, this.scaffoldStateKey, this.feedType, this.isActive = false}); /// The scaffold key which holds the drawer final GlobalKey? scaffoldStateKey; @@ -164,6 +176,9 @@ class FeedView extends StatefulWidget { /// The type of feed to display final FeedType? feedType; + /// Whether this feed view is currently active + final bool isActive; + @override State createState() => _FeedViewState(); } @@ -512,6 +527,9 @@ class _FeedViewState extends State { } FutureOr _handleBack(bool stopDefaultButtonEvent, RouteInfo info) async { + // If the feed is not active, we should not be intercepting the back button + if (!widget.isActive) return false; + ProfileBloc authBloc = context.read(); FeedBloc feedBloc = context.read(); final feedCubit = context.read(); diff --git a/lib/src/shared/full_name_widgets.dart b/lib/src/shared/full_name_widgets.dart index 3e7aa0cbc..30f27eab4 100644 --- a/lib/src/shared/full_name_widgets.dart +++ b/lib/src/shared/full_name_widgets.dart @@ -53,10 +53,10 @@ class UserFullNameWidget extends StatelessWidget { final prefix = generateUserFullNamePrefix(outerContext, name, displayName, userSeparator: userSeparator, useDisplayName: useDisplayName); final suffix = generateUserFullNameSuffix(outerContext, instance, userSeparator: userSeparator); - final userNameThickness = this.userNameThickness ?? outerContext!.select((cubit) => cubit.state.userFullNameUserNameThickness); - final userNameColor = this.userNameColor ?? outerContext!.select((cubit) => cubit.state.userFullNameUserNameColor); - final instanceNameThickness = this.instanceNameThickness ?? outerContext!.select((cubit) => cubit.state.userFullNameInstanceNameThickness); - final instanceNameColor = this.instanceNameColor ?? outerContext!.select((cubit) => cubit.state.userFullNameInstanceNameColor); + final userNameThickness = this.userNameThickness ?? outerContext!.read().state.userFullNameUserNameThickness; + final userNameColor = this.userNameColor ?? outerContext!.read().state.userFullNameUserNameColor; + final instanceNameThickness = this.instanceNameThickness ?? outerContext!.read().state.userFullNameInstanceNameThickness; + final instanceNameColor = this.instanceNameColor ?? outerContext!.read().state.userFullNameInstanceNameColor; final textStyle = this.textStyle ?? Theme.of(outerContext!).textTheme.bodyMedium; final transformColor = this.transformColor ?? (color) => color;