mirror of
https://gitlab.com/nkming2/nc-photos.git
synced 2025-02-02 06:46:22 +01:00
Back to top when tapping the Photos navigation button again
This commit is contained in:
parent
33b26d5ca1
commit
bbdfe10a8d
2 changed files with 27 additions and 21 deletions
|
@ -1,3 +1,4 @@
|
|||
import 'package:event_bus/event_bus.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:kiwi/kiwi.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
|
@ -126,39 +127,32 @@ class _HomeState extends State<Home> with TickerProviderStateMixin {
|
|||
Widget _buildPage(BuildContext context, int index) {
|
||||
switch (index) {
|
||||
case 0:
|
||||
return _buildPhotosPage(context);
|
||||
return HomePhotos(
|
||||
account: widget.account,
|
||||
);
|
||||
|
||||
case 1:
|
||||
return _buildSearchPage(context);
|
||||
return HomeSearch(
|
||||
account: widget.account,
|
||||
);
|
||||
|
||||
case 2:
|
||||
return _buildAlbumsPage(context);
|
||||
return HomeAlbums(
|
||||
account: widget.account,
|
||||
);
|
||||
|
||||
default:
|
||||
throw ArgumentError("Invalid page index: $index");
|
||||
}
|
||||
}
|
||||
|
||||
Widget _buildPhotosPage(BuildContext context) {
|
||||
return HomePhotos(
|
||||
account: widget.account,
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildSearchPage(BuildContext context) {
|
||||
return HomeSearch(
|
||||
account: widget.account,
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildAlbumsPage(BuildContext context) {
|
||||
return HomeAlbums(
|
||||
account: widget.account,
|
||||
);
|
||||
}
|
||||
|
||||
void _onTapNavItem(int index) {
|
||||
if (index == _nextPage) {
|
||||
if (index == 0) {
|
||||
KiwiContainer()
|
||||
.resolve<EventBus>()
|
||||
.fire(const HomePhotosBackToTopEvent());
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -58,6 +58,10 @@ import 'package:visibility_detector/visibility_detector.dart';
|
|||
|
||||
part 'home_photos.g.dart';
|
||||
|
||||
class HomePhotosBackToTopEvent {
|
||||
const HomePhotosBackToTopEvent();
|
||||
}
|
||||
|
||||
class HomePhotos extends StatefulWidget {
|
||||
const HomePhotos({
|
||||
Key? key,
|
||||
|
@ -85,10 +89,12 @@ class _HomePhotosState extends State<HomePhotos>
|
|||
_web?.onInitState();
|
||||
_prefUpdatedListener.begin();
|
||||
_imageProcessorUploadSuccessListener?.begin();
|
||||
_onBackToTopListener.begin();
|
||||
}
|
||||
|
||||
@override
|
||||
dispose() {
|
||||
_onBackToTopListener.end();
|
||||
_prefUpdatedListener.end();
|
||||
_imageProcessorUploadSuccessListener?.end();
|
||||
_web?.onDispose();
|
||||
|
@ -524,6 +530,10 @@ class _HomePhotosState extends State<HomePhotos>
|
|||
_hasFiredMetadataTask.value = false;
|
||||
}
|
||||
|
||||
void _onBackToTop(HomePhotosBackToTopEvent ev) {
|
||||
_scrollController.jumpTo(0);
|
||||
}
|
||||
|
||||
Future<void> _tryStartMetadataTask({
|
||||
bool ignoreFired = false,
|
||||
}) async {
|
||||
|
@ -765,6 +775,8 @@ class _HomePhotosState extends State<HomePhotos>
|
|||
? null
|
||||
: NativeEventListener<ImageProcessorUploadSuccessEvent>(
|
||||
_onImageProcessorUploadSuccessEvent);
|
||||
late final _onBackToTopListener =
|
||||
AppEventListener<HomePhotosBackToTopEvent>(_onBackToTop);
|
||||
|
||||
late final _Web? _web = platform_k.isWeb ? _Web(this) : null;
|
||||
|
||||
|
|
Loading…
Reference in a new issue