fix: Fix a weird interaction when switching back to the anime list

This commit is contained in:
2026-07-25 23:05:16 +02:00
parent 0e61f9f757
commit 60c09fcffd
4 changed files with 30 additions and 4 deletions

View File

@@ -2,6 +2,8 @@ import 'package:anitrack/src/data/anime.dart';
import 'package:anitrack/src/data/manga.dart'; import 'package:anitrack/src/data/manga.dart';
import 'package:anitrack/src/data/type.dart'; import 'package:anitrack/src/data/type.dart';
import 'package:anitrack/src/service/database.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:bloc/bloc.dart';
import 'package:collection/collection.dart'; import 'package:collection/collection.dart';
import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:freezed_annotation/freezed_annotation.dart';
@@ -28,6 +30,7 @@ class AnimeListBloc extends Bloc<AnimeListEvent, AnimeListState> {
on<AnimeRemovedEvent>(_onAnimeRemoved); on<AnimeRemovedEvent>(_onAnimeRemoved);
on<MangaRemovedEvent>(_onMangaRemoved); on<MangaRemovedEvent>(_onMangaRemoved);
on<AddButtonVisibilitySetEvent>(_onButtonVisibilityToggled); on<AddButtonVisibilitySetEvent>(_onButtonVisibilityToggled);
on<AnimeListRequestedEvent>(_onAnimeListSummoned);
} }
/// Internal anime state /// Internal anime state
@@ -356,4 +359,23 @@ class AnimeListBloc extends Bloc<AnimeListEvent, AnimeListState> {
), ),
); );
} }
Future<void> _onAnimeListSummoned(
AnimeListRequestedEvent event,
Emitter<AnimeListState> emit,
) async {
emit(
state.copyWith(
trackingType: TrackingMediumType.anime,
animeFilterState: MediumTrackingState.ongoing,
mangaFilterState: MediumTrackingState.ongoing,
),
);
GetIt.I.get<NavigationBloc>().add(
PushedNamedAndRemoveUntilEvent(
const NavigationDestination(animeListRoute),
(_) => false,
),
);
}
} }

View File

@@ -114,3 +114,6 @@ class AddButtonVisibilitySetEvent extends AnimeListEvent {
/// The visibility of the button /// The visibility of the button
final bool state; final bool state;
} }
/// Triggered by the UI when the anime list is supposed to be summoned.
class AnimeListRequestedEvent extends AnimeListEvent {}

View File

@@ -1,6 +1,8 @@
import 'package:anitrack/i18n/strings.g.dart'; 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:anitrack/src/ui/constants.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get_it/get_it.dart';
Widget getDrawer(BuildContext context) { Widget getDrawer(BuildContext context) {
return Drawer( return Drawer(
@@ -22,9 +24,8 @@ Widget getDrawer(BuildContext context) {
leading: const Icon(Icons.list), leading: const Icon(Icons.list),
title: Text(t.content.list), title: Text(t.content.list),
onTap: () { onTap: () {
Navigator.of(context).pushNamedAndRemoveUntil( GetIt.I.get<AnimeListBloc>().add(
animeListRoute, AnimeListRequestedEvent(),
(_) => false,
); );
}, },
), ),

View File

@@ -236,7 +236,7 @@ class AnimeListPageState extends State<AnimeListPage> {
context.read<DetailsBloc>().add( context.read<DetailsBloc>().add(
MangaDetailsRequestedEvent( MangaDetailsRequestedEvent(
manga, manga,
heroImagePrefix: 'grid_' heroImagePrefix: 'grid_',
), ),
); );
}, },