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/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,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 {}
|
||||||
|
|||||||
@@ -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,
|
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -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_',
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user