Revert "Use custom gesture detector"

This reverts commit f57c276ab1.
This commit is contained in:
2023-12-27 14:05:44 +08:00
parent f57c276ab1
commit 5566af9a66

View File

@@ -1,8 +1,6 @@
import 'dart:ui';
import 'package:dio/dio.dart';
import 'package:dio_image_provider/dio_image_provider.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart';
import 'package:flutter/services.dart';
@@ -18,12 +16,6 @@ import '../globals.dart';
final _log = Logger("SinglePageViewer");
enum DoubleTapScaleMode {
fitScreen,
orignal,
twice,
}
class SinglePageViewerExtra {
const SinglePageViewerExtra({this.data, this.files});
final GalleryData? data;
@@ -52,8 +44,6 @@ class _SinglePageViewer extends State<SinglePageViewer>
late List<ExtendedPMeta>? _pages;
late EhFiles? _files;
late String _back;
late PhotoViewController _photoViewController;
late DoubleTapScaleMode _doubleTapScaleMode;
CancelToken? _cancel;
bool _isLoading = false;
bool _pageChanged = false;
@@ -79,8 +69,6 @@ class _SinglePageViewer extends State<SinglePageViewer>
_updatePages();
_files = widget.files;
_back = "/gallery/${widget.gid}";
_photoViewController = PhotoViewController();
_doubleTapScaleMode = DoubleTapScaleMode.fitScreen;
super.initState();
}
@@ -88,7 +76,6 @@ class _SinglePageViewer extends State<SinglePageViewer>
void dispose() {
_cancel?.cancel();
_pageController.dispose();
_photoViewController.dispose();
super.dispose();
}
@@ -137,10 +124,6 @@ class _SinglePageViewer extends State<SinglePageViewer>
builder: (BuildContext context, int index) {
final data = _pages![index];
final f = _files!.files[data.token]!.first;
if (_index != index) {
_photoViewController.reset();
_doubleTapScaleMode = DoubleTapScaleMode.fitScreen;
}
return PhotoViewGalleryPageOptions(
imageProvider: DioImage.string(
api.getFileUrl(f.id),
@@ -152,8 +135,6 @@ class _SinglePageViewer extends State<SinglePageViewer>
transitionOnUserGestures: true,
),
filterQuality: FilterQuality.high,
controller: _photoViewController,
disableGestures: true,
);
},
onPageChanged: (index) {
@@ -198,73 +179,14 @@ class _SinglePageViewer extends State<SinglePageViewer>
_showMenu = !_showMenu;
});
},
onDoubleTap: () {
setState(() {
switch (_doubleTapScaleMode) {
case DoubleTapScaleMode.fitScreen:
_doubleTapScaleMode = DoubleTapScaleMode.orignal;
_photoViewController.scale = 1.0;
break;
case DoubleTapScaleMode.orignal:
_doubleTapScaleMode = DoubleTapScaleMode.twice;
_photoViewController.scale = 2.0;
break;
case DoubleTapScaleMode.twice:
_doubleTapScaleMode = DoubleTapScaleMode.fitScreen;
_photoViewController.scale = null;
break;
}
});
},
child: child,
);
}
Widget _buildWithDragSupport(BuildContext context, {required Widget child}) {
return RawGestureDetector(
gestures: {
PanGestureRecognizer:
GestureRecognizerFactoryWithHandlers<PanGestureRecognizer>(
() => PanGestureRecognizer(
allowedButtonsFilter: (buttons) => buttons == kPrimaryMouseButton,
),
(instance) {
instance.onUpdate = (details) {
final position = _photoViewController.position;
_photoViewController.position = Offset(
position.dx + details.delta.dx,
position.dy + details.delta.dy);
setState(() {});
};
},
),
},
child: child,
);
}
Widget _buildWithScrollSupport(BuildContext context,
{required Widget child}) {
return Listener(
onPointerSignal: (event) {
if (event is PointerScrollEvent &&
event.kind == PointerDeviceKind.mouse) {
if (_photoViewController.scale != null) {
_photoViewController.scale = _photoViewController.scale! *
(1 - event.scrollDelta.dy / MediaQuery.of(context).size.height);
}
}
},
child: child,
);
}
Widget _buildViewer(BuildContext context) {
return _buildWithDragSupport(context,
child: _buildWithScrollSupport(context,
child: _buildWithTap(context,
child: _buildWithKeyboardSupport(context,
child: _buildGallery(context)))));
return _buildWithTap(context,
child:
_buildWithKeyboardSupport(context, child: _buildGallery(context)));
}
Widget _buildTopAppBar(BuildContext context) {