mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-04-30 07:15:51 +08:00
@@ -1,5 +1,5 @@
|
|||||||
import 'package:flutter/gestures.dart'
|
import 'package:flutter/gestures.dart'
|
||||||
show TapGestureRecognizer, PointerDownEvent;
|
show TapGestureRecognizer, PointerDownEvent, DoubleTapGestureRecognizer;
|
||||||
|
|
||||||
class ImageTapGestureRecognizer extends TapGestureRecognizer {
|
class ImageTapGestureRecognizer extends TapGestureRecognizer {
|
||||||
ImageTapGestureRecognizer({
|
ImageTapGestureRecognizer({
|
||||||
@@ -21,3 +21,22 @@ class ImageTapGestureRecognizer extends TapGestureRecognizer {
|
|||||||
super.addPointer(event);
|
super.addPointer(event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class ImageDoubleTapGestureRecognizer extends DoubleTapGestureRecognizer {
|
||||||
|
ImageDoubleTapGestureRecognizer({
|
||||||
|
super.debugOwner,
|
||||||
|
super.supportedDevices,
|
||||||
|
super.allowedButtonsFilter,
|
||||||
|
});
|
||||||
|
|
||||||
|
int? _pointer;
|
||||||
|
|
||||||
|
@override
|
||||||
|
void addPointer(PointerDownEvent event) {
|
||||||
|
if (_pointer == event.pointer) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_pointer = event.pointer;
|
||||||
|
super.addPointer(event);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -81,6 +81,7 @@ class _GalleryViewerState extends State<GalleryViewer>
|
|||||||
late final PageController _pageController;
|
late final PageController _pageController;
|
||||||
|
|
||||||
late final ImageTapGestureRecognizer _tapGestureRecognizer;
|
late final ImageTapGestureRecognizer _tapGestureRecognizer;
|
||||||
|
late final ImageDoubleTapGestureRecognizer _doubleTapGestureRecognizer;
|
||||||
late final ImageHorizontalDragGestureRecognizer
|
late final ImageHorizontalDragGestureRecognizer
|
||||||
_horizontalDragGestureRecognizer;
|
_horizontalDragGestureRecognizer;
|
||||||
late final LongPressGestureRecognizer _longPressGestureRecognizer;
|
late final LongPressGestureRecognizer _longPressGestureRecognizer;
|
||||||
@@ -122,12 +123,15 @@ class _GalleryViewerState extends State<GalleryViewer>
|
|||||||
if (PlatformUtils.isDesktop) {
|
if (PlatformUtils.isDesktop) {
|
||||||
_tapGestureRecognizer.onSecondaryTapUp = _showDesktopMenu;
|
_tapGestureRecognizer.onSecondaryTapUp = _showDesktopMenu;
|
||||||
}
|
}
|
||||||
|
_doubleTapGestureRecognizer = ImageDoubleTapGestureRecognizer()
|
||||||
|
..onDoubleTap = () {}
|
||||||
|
..gestureSettings = gestureSettings;
|
||||||
_horizontalDragGestureRecognizer = ImageHorizontalDragGestureRecognizer();
|
_horizontalDragGestureRecognizer = ImageHorizontalDragGestureRecognizer();
|
||||||
_longPressGestureRecognizer = LongPressGestureRecognizer()
|
_longPressGestureRecognizer = LongPressGestureRecognizer()
|
||||||
..onLongPress = _onLongPress
|
..onLongPress = _onLongPress
|
||||||
..gestureSettings = gestureSettings;
|
..gestureSettings = gestureSettings;
|
||||||
|
|
||||||
Future.delayed(const Duration(milliseconds: 410), () {
|
Future.delayed(const Duration(milliseconds: 300), () {
|
||||||
if (mounted) {
|
if (mounted) {
|
||||||
_tapGestureRecognizer.onTap = _onTap;
|
_tapGestureRecognizer.onTap = _onTap;
|
||||||
}
|
}
|
||||||
@@ -225,6 +229,10 @@ class _GalleryViewerState extends State<GalleryViewer>
|
|||||||
_pageController.dispose();
|
_pageController.dispose();
|
||||||
_animateController.dispose();
|
_animateController.dispose();
|
||||||
_tapGestureRecognizer.dispose();
|
_tapGestureRecognizer.dispose();
|
||||||
|
_doubleTapGestureRecognizer
|
||||||
|
..onDoubleTapDown = null
|
||||||
|
..onDoubleTap = null
|
||||||
|
..dispose();
|
||||||
_longPressGestureRecognizer.dispose();
|
_longPressGestureRecognizer.dispose();
|
||||||
_currIndex.close();
|
_currIndex.close();
|
||||||
if (widget.quality != _quality) {
|
if (widget.quality != _quality) {
|
||||||
@@ -239,6 +247,7 @@ class _GalleryViewerState extends State<GalleryViewer>
|
|||||||
|
|
||||||
void _onPointerDown(PointerDownEvent event) {
|
void _onPointerDown(PointerDownEvent event) {
|
||||||
_tapGestureRecognizer.addPointer(event);
|
_tapGestureRecognizer.addPointer(event);
|
||||||
|
_doubleTapGestureRecognizer.addPointer(event);
|
||||||
_longPressGestureRecognizer.addPointer(event);
|
_longPressGestureRecognizer.addPointer(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -357,6 +366,7 @@ class _GalleryViewerState extends State<GalleryViewer>
|
|||||||
onDragUpdate: _onDragUpdate,
|
onDragUpdate: _onDragUpdate,
|
||||||
onDragEnd: _onDragEnd,
|
onDragEnd: _onDragEnd,
|
||||||
tapGestureRecognizer: _tapGestureRecognizer,
|
tapGestureRecognizer: _tapGestureRecognizer,
|
||||||
|
doubleTapGestureRecognizer: _doubleTapGestureRecognizer,
|
||||||
horizontalDragGestureRecognizer: _horizontalDragGestureRecognizer,
|
horizontalDragGestureRecognizer: _horizontalDragGestureRecognizer,
|
||||||
onChangePage: _onChangePage,
|
onChangePage: _onChangePage,
|
||||||
);
|
);
|
||||||
@@ -369,6 +379,7 @@ class _GalleryViewerState extends State<GalleryViewer>
|
|||||||
maxScale: widget.maxScale,
|
maxScale: widget.maxScale,
|
||||||
containerSize: _containerSize,
|
containerSize: _containerSize,
|
||||||
tapGestureRecognizer: _tapGestureRecognizer,
|
tapGestureRecognizer: _tapGestureRecognizer,
|
||||||
|
doubleTapGestureRecognizer: _doubleTapGestureRecognizer,
|
||||||
horizontalDragGestureRecognizer: _horizontalDragGestureRecognizer,
|
horizontalDragGestureRecognizer: _horizontalDragGestureRecognizer,
|
||||||
onChangePage: _onChangePage,
|
onChangePage: _onChangePage,
|
||||||
frameBuilder: (context, child, frame, wasSynchronouslyLoaded) {
|
frameBuilder: (context, child, frame, wasSynchronouslyLoaded) {
|
||||||
@@ -390,6 +401,7 @@ class _GalleryViewerState extends State<GalleryViewer>
|
|||||||
onDragUpdate: null,
|
onDragUpdate: null,
|
||||||
onDragEnd: null,
|
onDragEnd: null,
|
||||||
tapGestureRecognizer: _tapGestureRecognizer,
|
tapGestureRecognizer: _tapGestureRecognizer,
|
||||||
|
doubleTapGestureRecognizer: _doubleTapGestureRecognizer,
|
||||||
horizontalDragGestureRecognizer:
|
horizontalDragGestureRecognizer:
|
||||||
_horizontalDragGestureRecognizer,
|
_horizontalDragGestureRecognizer,
|
||||||
onChangePage: _onChangePage,
|
onChangePage: _onChangePage,
|
||||||
@@ -428,6 +440,7 @@ class _GalleryViewerState extends State<GalleryViewer>
|
|||||||
onDragUpdate: _onDragUpdate,
|
onDragUpdate: _onDragUpdate,
|
||||||
onDragEnd: _onDragEnd,
|
onDragEnd: _onDragEnd,
|
||||||
tapGestureRecognizer: _tapGestureRecognizer,
|
tapGestureRecognizer: _tapGestureRecognizer,
|
||||||
|
doubleTapGestureRecognizer: _doubleTapGestureRecognizer,
|
||||||
horizontalDragGestureRecognizer:
|
horizontalDragGestureRecognizer:
|
||||||
_horizontalDragGestureRecognizer,
|
_horizontalDragGestureRecognizer,
|
||||||
onChangePage: _onChangePage,
|
onChangePage: _onChangePage,
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ class Image extends StatefulWidget {
|
|||||||
required this.onDragUpdate,
|
required this.onDragUpdate,
|
||||||
required this.onDragEnd,
|
required this.onDragEnd,
|
||||||
required this.tapGestureRecognizer,
|
required this.tapGestureRecognizer,
|
||||||
|
required this.doubleTapGestureRecognizer,
|
||||||
required this.horizontalDragGestureRecognizer,
|
required this.horizontalDragGestureRecognizer,
|
||||||
required this.onChangePage,
|
required this.onChangePage,
|
||||||
});
|
});
|
||||||
@@ -81,6 +82,7 @@ class Image extends StatefulWidget {
|
|||||||
required this.onDragUpdate,
|
required this.onDragUpdate,
|
||||||
required this.onDragEnd,
|
required this.onDragEnd,
|
||||||
required this.tapGestureRecognizer,
|
required this.tapGestureRecognizer,
|
||||||
|
required this.doubleTapGestureRecognizer,
|
||||||
required this.horizontalDragGestureRecognizer,
|
required this.horizontalDragGestureRecognizer,
|
||||||
required this.onChangePage,
|
required this.onChangePage,
|
||||||
}) : image = ResizeImage.resizeIfNeeded(
|
}) : image = ResizeImage.resizeIfNeeded(
|
||||||
@@ -126,6 +128,7 @@ class Image extends StatefulWidget {
|
|||||||
required this.onDragUpdate,
|
required this.onDragUpdate,
|
||||||
required this.onDragEnd,
|
required this.onDragEnd,
|
||||||
required this.tapGestureRecognizer,
|
required this.tapGestureRecognizer,
|
||||||
|
required this.doubleTapGestureRecognizer,
|
||||||
required this.horizontalDragGestureRecognizer,
|
required this.horizontalDragGestureRecognizer,
|
||||||
required this.onChangePage,
|
required this.onChangePage,
|
||||||
}) : assert(
|
}) : assert(
|
||||||
@@ -174,6 +177,7 @@ class Image extends StatefulWidget {
|
|||||||
required this.onDragUpdate,
|
required this.onDragUpdate,
|
||||||
required this.onDragEnd,
|
required this.onDragEnd,
|
||||||
required this.tapGestureRecognizer,
|
required this.tapGestureRecognizer,
|
||||||
|
required this.doubleTapGestureRecognizer,
|
||||||
required this.horizontalDragGestureRecognizer,
|
required this.horizontalDragGestureRecognizer,
|
||||||
required this.onChangePage,
|
required this.onChangePage,
|
||||||
}) : image = ResizeImage.resizeIfNeeded(
|
}) : image = ResizeImage.resizeIfNeeded(
|
||||||
@@ -222,6 +226,7 @@ class Image extends StatefulWidget {
|
|||||||
required this.onDragUpdate,
|
required this.onDragUpdate,
|
||||||
required this.onDragEnd,
|
required this.onDragEnd,
|
||||||
required this.tapGestureRecognizer,
|
required this.tapGestureRecognizer,
|
||||||
|
required this.doubleTapGestureRecognizer,
|
||||||
required this.horizontalDragGestureRecognizer,
|
required this.horizontalDragGestureRecognizer,
|
||||||
required this.onChangePage,
|
required this.onChangePage,
|
||||||
}) : image = ResizeImage.resizeIfNeeded(
|
}) : image = ResizeImage.resizeIfNeeded(
|
||||||
@@ -281,6 +286,7 @@ class Image extends StatefulWidget {
|
|||||||
final ValueChanged<int>? onChangePage;
|
final ValueChanged<int>? onChangePage;
|
||||||
|
|
||||||
final ImageTapGestureRecognizer tapGestureRecognizer;
|
final ImageTapGestureRecognizer tapGestureRecognizer;
|
||||||
|
final ImageDoubleTapGestureRecognizer doubleTapGestureRecognizer;
|
||||||
final ImageHorizontalDragGestureRecognizer horizontalDragGestureRecognizer;
|
final ImageHorizontalDragGestureRecognizer horizontalDragGestureRecognizer;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -625,6 +631,7 @@ class _ImageState extends State<Image> with WidgetsBindingObserver {
|
|||||||
onDragUpdate: widget.onDragUpdate,
|
onDragUpdate: widget.onDragUpdate,
|
||||||
onDragEnd: widget.onDragEnd,
|
onDragEnd: widget.onDragEnd,
|
||||||
tapGestureRecognizer: widget.tapGestureRecognizer,
|
tapGestureRecognizer: widget.tapGestureRecognizer,
|
||||||
|
doubleTapGestureRecognizer: widget.doubleTapGestureRecognizer,
|
||||||
horizontalDragGestureRecognizer: widget.horizontalDragGestureRecognizer,
|
horizontalDragGestureRecognizer: widget.horizontalDragGestureRecognizer,
|
||||||
onChangePage: widget.onChangePage,
|
onChangePage: widget.onChangePage,
|
||||||
child: RawImage(image: _imageInfo?.image),
|
child: RawImage(image: _imageInfo?.image),
|
||||||
|
|||||||
@@ -28,9 +28,6 @@ import 'package:flutter/gestures.dart';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/physics.dart' show FrictionSimulation;
|
import 'package:flutter/physics.dart' show FrictionSimulation;
|
||||||
import 'package:flutter/services.dart' show HardwareKeyboard;
|
import 'package:flutter/services.dart' show HardwareKeyboard;
|
||||||
import 'package:get/get_core/src/get_main.dart';
|
|
||||||
import 'package:get/get_navigation/src/extension_navigation.dart'
|
|
||||||
show GetNavigation;
|
|
||||||
|
|
||||||
///
|
///
|
||||||
/// created by dom on 2026/02/14
|
/// created by dom on 2026/02/14
|
||||||
@@ -48,6 +45,7 @@ class Viewer extends StatefulWidget {
|
|||||||
required this.onDragUpdate,
|
required this.onDragUpdate,
|
||||||
required this.onDragEnd,
|
required this.onDragEnd,
|
||||||
required this.tapGestureRecognizer,
|
required this.tapGestureRecognizer,
|
||||||
|
required this.doubleTapGestureRecognizer,
|
||||||
required this.horizontalDragGestureRecognizer,
|
required this.horizontalDragGestureRecognizer,
|
||||||
required this.onChangePage,
|
required this.onChangePage,
|
||||||
required this.child,
|
required this.child,
|
||||||
@@ -66,6 +64,7 @@ class Viewer extends StatefulWidget {
|
|||||||
final ValueChanged<int>? onChangePage;
|
final ValueChanged<int>? onChangePage;
|
||||||
|
|
||||||
final ImageTapGestureRecognizer tapGestureRecognizer;
|
final ImageTapGestureRecognizer tapGestureRecognizer;
|
||||||
|
final ImageDoubleTapGestureRecognizer doubleTapGestureRecognizer;
|
||||||
final ImageHorizontalDragGestureRecognizer horizontalDragGestureRecognizer;
|
final ImageHorizontalDragGestureRecognizer horizontalDragGestureRecognizer;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -87,18 +86,13 @@ class _ViewerState extends State<Viewer> with SingleTickerProviderStateMixin {
|
|||||||
late Size _imageSize;
|
late Size _imageSize;
|
||||||
|
|
||||||
late final ImageTapGestureRecognizer _tapGestureRecognizer;
|
late final ImageTapGestureRecognizer _tapGestureRecognizer;
|
||||||
|
late final ImageDoubleTapGestureRecognizer _doubleTapGestureRecognizer;
|
||||||
late final ImageHorizontalDragGestureRecognizer
|
late final ImageHorizontalDragGestureRecognizer
|
||||||
_horizontalDragGestureRecognizer;
|
_horizontalDragGestureRecognizer;
|
||||||
late final ScaleGestureRecognizer _scaleGestureRecognizer;
|
late final ScaleGestureRecognizer _scaleGestureRecognizer;
|
||||||
late final DoubleTapGestureRecognizer _doubleTapGestureRecognizer;
|
|
||||||
|
|
||||||
Offset? _downPos;
|
Offset? _downPos;
|
||||||
AnimationController? _animationController;
|
late final AnimationController _animationController;
|
||||||
AnimationController get _effectiveAnimationController =>
|
|
||||||
_animationController ??= AnimationController(
|
|
||||||
vsync: this,
|
|
||||||
duration: const Duration(milliseconds: 300),
|
|
||||||
)..addListener(_listener);
|
|
||||||
|
|
||||||
late double _scaleFrom, _scaleTo;
|
late double _scaleFrom, _scaleTo;
|
||||||
late Offset _positionFrom, _positionTo;
|
late Offset _positionFrom, _positionTo;
|
||||||
@@ -108,7 +102,7 @@ class _ViewerState extends State<Viewer> with SingleTickerProviderStateMixin {
|
|||||||
..scaleByDouble(_scale, _scale, _scale, 1.0);
|
..scaleByDouble(_scale, _scale, _scale, 1.0);
|
||||||
|
|
||||||
void _listener() {
|
void _listener() {
|
||||||
final t = Curves.easeOut.transform(_effectiveAnimationController.value);
|
final t = Curves.easeOut.transform(_animationController.value);
|
||||||
_scale = t.lerp(_scaleFrom, _scaleTo);
|
_scale = t.lerp(_scaleFrom, _scaleTo);
|
||||||
_position = Offset.lerp(_positionFrom, _positionTo, t)!;
|
_position = Offset.lerp(_positionFrom, _positionTo, t)!;
|
||||||
setState(() {});
|
setState(() {});
|
||||||
@@ -142,7 +136,13 @@ class _ViewerState extends State<Viewer> with SingleTickerProviderStateMixin {
|
|||||||
super.initState();
|
super.initState();
|
||||||
_initSize();
|
_initSize();
|
||||||
|
|
||||||
|
_animationController = AnimationController(
|
||||||
|
vsync: this,
|
||||||
|
duration: const Duration(milliseconds: 300),
|
||||||
|
)..addListener(_listener);
|
||||||
|
|
||||||
_tapGestureRecognizer = widget.tapGestureRecognizer;
|
_tapGestureRecognizer = widget.tapGestureRecognizer;
|
||||||
|
_doubleTapGestureRecognizer = widget.doubleTapGestureRecognizer;
|
||||||
_horizontalDragGestureRecognizer = widget.horizontalDragGestureRecognizer;
|
_horizontalDragGestureRecognizer = widget.horizontalDragGestureRecognizer;
|
||||||
|
|
||||||
_scaleGestureRecognizer = ScaleGestureRecognizer(debugOwner: this)
|
_scaleGestureRecognizer = ScaleGestureRecognizer(debugOwner: this)
|
||||||
@@ -151,10 +151,6 @@ class _ViewerState extends State<Viewer> with SingleTickerProviderStateMixin {
|
|||||||
..onUpdate = _onScaleUpdate
|
..onUpdate = _onScaleUpdate
|
||||||
..onEnd = _onScaleEnd
|
..onEnd = _onScaleEnd
|
||||||
..gestureSettings = DeviceGestureSettings(touchSlop: touchSlopH);
|
..gestureSettings = DeviceGestureSettings(touchSlop: touchSlopH);
|
||||||
_doubleTapGestureRecognizer = DoubleTapGestureRecognizer(debugOwner: this)
|
|
||||||
..onDoubleTapDown = _onDoubleTapDown
|
|
||||||
..onDoubleTap = _onDoubleTap
|
|
||||||
..gestureSettings = MediaQuery.maybeGestureSettingsOf(Get.context!);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -169,11 +165,9 @@ class _ViewerState extends State<Viewer> with SingleTickerProviderStateMixin {
|
|||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
_animationController
|
_animationController
|
||||||
?..removeListener(_listener)
|
..removeListener(_listener)
|
||||||
..dispose();
|
..dispose();
|
||||||
_animationController = null;
|
|
||||||
_scaleGestureRecognizer.dispose();
|
_scaleGestureRecognizer.dispose();
|
||||||
_doubleTapGestureRecognizer.dispose();
|
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -221,6 +215,8 @@ class _ViewerState extends State<Viewer> with SingleTickerProviderStateMixin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void _onDoubleTap() {
|
void _onDoubleTap() {
|
||||||
|
if (!mounted) return;
|
||||||
|
if (_animationController.isAnimating) return;
|
||||||
EasyThrottle.throttle(
|
EasyThrottle.throttle(
|
||||||
'VIEWER_TAP',
|
'VIEWER_TAP',
|
||||||
const Duration(milliseconds: 555),
|
const Duration(milliseconds: 555),
|
||||||
@@ -229,7 +225,8 @@ class _ViewerState extends State<Viewer> with SingleTickerProviderStateMixin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void _handleDoubleTap() {
|
void _handleDoubleTap() {
|
||||||
if (_effectiveAnimationController.isAnimating) return;
|
if (!mounted) return;
|
||||||
|
if (_animationController.isAnimating) return;
|
||||||
_scaleFrom = _scale;
|
_scaleFrom = _scale;
|
||||||
_positionFrom = _position;
|
_positionFrom = _position;
|
||||||
|
|
||||||
@@ -250,7 +247,7 @@ class _ViewerState extends State<Viewer> with SingleTickerProviderStateMixin {
|
|||||||
_scaleTo = endScale;
|
_scaleTo = endScale;
|
||||||
_positionTo = position;
|
_positionTo = position;
|
||||||
|
|
||||||
_effectiveAnimationController
|
_animationController
|
||||||
..duration = const Duration(milliseconds: 300)
|
..duration = const Duration(milliseconds: 300)
|
||||||
..forward(from: 0);
|
..forward(from: 0);
|
||||||
}
|
}
|
||||||
@@ -261,6 +258,10 @@ class _ViewerState extends State<Viewer> with SingleTickerProviderStateMixin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void _onScaleStart(ScaleStartDetails details) {
|
void _onScaleStart(ScaleStartDetails details) {
|
||||||
|
if (_animationController.isAnimating) {
|
||||||
|
_animationController.stop();
|
||||||
|
}
|
||||||
|
|
||||||
if (details.pointerCount == 1) {
|
if (details.pointerCount == 1) {
|
||||||
if (widget.isLongPic) {
|
if (widget.isLongPic) {
|
||||||
final imageHeight = _scale * _imageSize.height;
|
final imageHeight = _scale * _imageSize.height;
|
||||||
@@ -352,7 +353,7 @@ class _ViewerState extends State<Viewer> with SingleTickerProviderStateMixin {
|
|||||||
_positionFrom = _position;
|
_positionFrom = _position;
|
||||||
_positionTo = position;
|
_positionTo = position;
|
||||||
|
|
||||||
_effectiveAnimationController
|
_animationController
|
||||||
..duration = Duration(milliseconds: (tFinal * 1000).round())
|
..duration = Duration(milliseconds: (tFinal * 1000).round())
|
||||||
..forward(from: 0);
|
..forward(from: 0);
|
||||||
case _GestureType.scale:
|
case _GestureType.scale:
|
||||||
@@ -376,7 +377,7 @@ class _ViewerState extends State<Viewer> with SingleTickerProviderStateMixin {
|
|||||||
// end: frictionSimulation.x(tFinal),
|
// end: frictionSimulation.x(tFinal),
|
||||||
// ).chain(CurveTween(curve: Curves.decelerate)),
|
// ).chain(CurveTween(curve: Curves.decelerate)),
|
||||||
// )..addListener(_handleScaleAnimation);
|
// )..addListener(_handleScaleAnimation);
|
||||||
// _effectiveAnimationController
|
// _animationController
|
||||||
// ..duration = Duration(milliseconds: (tFinal * 1000).round())
|
// ..duration = Duration(milliseconds: (tFinal * 1000).round())
|
||||||
// ..forward(from: 0);
|
// ..forward(from: 0);
|
||||||
break;
|
break;
|
||||||
@@ -407,7 +408,10 @@ class _ViewerState extends State<Viewer> with SingleTickerProviderStateMixin {
|
|||||||
void _onPointerDown(PointerDownEvent event) {
|
void _onPointerDown(PointerDownEvent event) {
|
||||||
_scalePos = event.position;
|
_scalePos = event.position;
|
||||||
_tapGestureRecognizer.addPointer(event);
|
_tapGestureRecognizer.addPointer(event);
|
||||||
_doubleTapGestureRecognizer.addPointer(event);
|
_doubleTapGestureRecognizer
|
||||||
|
..onDoubleTapDown = _onDoubleTapDown
|
||||||
|
..onDoubleTap = _onDoubleTap
|
||||||
|
..addPointer(event);
|
||||||
_horizontalDragGestureRecognizer
|
_horizontalDragGestureRecognizer
|
||||||
..isBoundaryAllowed = _isBoundaryAllowed
|
..isBoundaryAllowed = _isBoundaryAllowed
|
||||||
..addPointer(event);
|
..addPointer(event);
|
||||||
|
|||||||
Reference in New Issue
Block a user