Tap photos again to jump to the top in new photos

This commit is contained in:
Ming Ming 2024-01-14 00:33:12 +08:00
parent 5f7d898078
commit 4bbfc805cc
2 changed files with 25 additions and 1 deletions

View file

@ -162,7 +162,7 @@ class _HomeState extends State<Home> with TickerProviderStateMixin {
if (index == 0) {
KiwiContainer()
.resolve<EventBus>()
.fire(const HomePhotosBackToTopEvent());
.fire(const HomePhotos2BackToTopEvent());
}
return;
}

View file

@ -24,6 +24,7 @@ import 'package:nc_photos/download_handler.dart';
import 'package:nc_photos/entity/collection.dart';
import 'package:nc_photos/entity/file_descriptor.dart';
import 'package:nc_photos/entity/file_util.dart' as file_util;
import 'package:nc_photos/event/event.dart';
import 'package:nc_photos/exception_event.dart';
import 'package:nc_photos/exception_util.dart' as exception_util;
import 'package:nc_photos/flutter_util.dart' as flutter_util;
@ -61,6 +62,10 @@ part 'home_photos/type.dart';
part 'home_photos/view.dart';
part 'home_photos2.g.dart';
class HomePhotos2BackToTopEvent {
const HomePhotos2BackToTopEvent();
}
class HomePhotos2 extends StatelessWidget {
const HomePhotos2({super.key});
@ -221,6 +226,18 @@ class _Body extends StatefulWidget {
@npLog
class _BodyState extends State<_Body> {
@override
void initState() {
super.initState();
_onBackToTopListener.begin();
}
@override
void dispose() {
_onBackToTopListener.end();
super.dispose();
}
@override
Widget build(BuildContext context) {
return FingerListener(
@ -345,6 +362,10 @@ class _BodyState extends State<_Body> {
);
}
void _onBackToTop(HomePhotos2BackToTopEvent ev) {
_scrollController.jumpTo(0);
}
/// Return the estimated scroll extent of the custom scroll view, or null
double? _getScrollViewExtent({
required BuildContext context,
@ -388,6 +409,9 @@ class _BodyState extends State<_Body> {
final _scrollController = ScrollController();
var _finger = 0;
late final _onBackToTopListener =
AppEventListener<HomePhotos2BackToTopEvent>(_onBackToTop);
}
typedef _BlocBuilder = BlocBuilder<_Bloc, _State>;