fix: Fix a weird interaction when switching back to the anime list
This commit is contained in:
@@ -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<AnimeListEvent, AnimeListState> {
|
||||
on<AnimeRemovedEvent>(_onAnimeRemoved);
|
||||
on<MangaRemovedEvent>(_onMangaRemoved);
|
||||
on<AddButtonVisibilitySetEvent>(_onButtonVisibilityToggled);
|
||||
on<AnimeListRequestedEvent>(_onAnimeListSummoned);
|
||||
}
|
||||
|
||||
/// 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,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 {}
|
||||
|
||||
@@ -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<AnimeListBloc>().add(
|
||||
AnimeListRequestedEvent(),
|
||||
);
|
||||
},
|
||||
),
|
||||
|
||||
@@ -236,7 +236,7 @@ class AnimeListPageState extends State<AnimeListPage> {
|
||||
context.read<DetailsBloc>().add(
|
||||
MangaDetailsRequestedEvent(
|
||||
manga,
|
||||
heroImagePrefix: 'grid_'
|
||||
heroImagePrefix: 'grid_',
|
||||
),
|
||||
);
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user