From 60c09fcffd3d33f4d9317d2708b553f9589d9bf8 Mon Sep 17 00:00:00 2001 From: "Alexander \"PapaTutuWawa" Date: Sat, 25 Jul 2026 23:05:16 +0200 Subject: [PATCH] fix: Fix a weird interaction when switching back to the anime list --- lib/src/ui/bloc/anime_list_bloc.dart | 22 ++++++++++++++++++++++ lib/src/ui/bloc/anime_list_event.dart | 3 +++ lib/src/ui/helpers.dart | 7 ++++--- lib/src/ui/pages/anime_list.dart | 2 +- 4 files changed, 30 insertions(+), 4 deletions(-) diff --git a/lib/src/ui/bloc/anime_list_bloc.dart b/lib/src/ui/bloc/anime_list_bloc.dart index 626bc67..69ae158 100644 --- a/lib/src/ui/bloc/anime_list_bloc.dart +++ b/lib/src/ui/bloc/anime_list_bloc.dart @@ -2,6 +2,8 @@ import 'package:anitrack/src/data/anime.dart'; import 'package:anitrack/src/data/manga.dart'; import 'package:anitrack/src/data/type.dart'; import 'package:anitrack/src/service/database.dart'; +import 'package:anitrack/src/ui/bloc/navigation_bloc.dart'; +import 'package:anitrack/src/ui/constants.dart'; import 'package:bloc/bloc.dart'; import 'package:collection/collection.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; @@ -28,6 +30,7 @@ class AnimeListBloc extends Bloc { on(_onAnimeRemoved); on(_onMangaRemoved); on(_onButtonVisibilityToggled); + on(_onAnimeListSummoned); } /// Internal anime state @@ -356,4 +359,23 @@ class AnimeListBloc extends Bloc { ), ); } + + Future _onAnimeListSummoned( + AnimeListRequestedEvent event, + Emitter emit, + ) async { + emit( + state.copyWith( + trackingType: TrackingMediumType.anime, + animeFilterState: MediumTrackingState.ongoing, + mangaFilterState: MediumTrackingState.ongoing, + ), + ); + GetIt.I.get().add( + PushedNamedAndRemoveUntilEvent( + const NavigationDestination(animeListRoute), + (_) => false, + ), + ); + } } diff --git a/lib/src/ui/bloc/anime_list_event.dart b/lib/src/ui/bloc/anime_list_event.dart index 40e2851..e9d176a 100644 --- a/lib/src/ui/bloc/anime_list_event.dart +++ b/lib/src/ui/bloc/anime_list_event.dart @@ -114,3 +114,6 @@ class AddButtonVisibilitySetEvent extends AnimeListEvent { /// The visibility of the button final bool state; } + +/// Triggered by the UI when the anime list is supposed to be summoned. +class AnimeListRequestedEvent extends AnimeListEvent {} diff --git a/lib/src/ui/helpers.dart b/lib/src/ui/helpers.dart index 8f985c4..d7703c9 100644 --- a/lib/src/ui/helpers.dart +++ b/lib/src/ui/helpers.dart @@ -1,6 +1,8 @@ import 'package:anitrack/i18n/strings.g.dart'; +import 'package:anitrack/src/ui/bloc/anime_list_bloc.dart'; import 'package:anitrack/src/ui/constants.dart'; import 'package:flutter/material.dart'; +import 'package:get_it/get_it.dart'; Widget getDrawer(BuildContext context) { return Drawer( @@ -22,9 +24,8 @@ Widget getDrawer(BuildContext context) { leading: const Icon(Icons.list), title: Text(t.content.list), onTap: () { - Navigator.of(context).pushNamedAndRemoveUntil( - animeListRoute, - (_) => false, + GetIt.I.get().add( + AnimeListRequestedEvent(), ); }, ), diff --git a/lib/src/ui/pages/anime_list.dart b/lib/src/ui/pages/anime_list.dart index 8a0faf7..ee7395b 100644 --- a/lib/src/ui/pages/anime_list.dart +++ b/lib/src/ui/pages/anime_list.dart @@ -236,7 +236,7 @@ class AnimeListPageState extends State { context.read().add( MangaDetailsRequestedEvent( manga, - heroImagePrefix: 'grid_' + heroImagePrefix: 'grid_', ), ); },