Signed-off-by: dom <githubaccount56556@proton.me>
This commit is contained in:
dom
2026-01-24 18:07:08 +08:00
parent 68872f7b14
commit e9b5cffa91
18 changed files with 326 additions and 366 deletions

View File

@@ -4,11 +4,9 @@
import 'dart:ui' show SemanticsRole;
import 'package:PiliPlus/common/widgets/flutter/page/page_view.dart';
import 'package:PiliPlus/common/widgets/gesture/horizontal_drag_gesture_recognizer.dart';
import 'package:flutter/foundation.dart' show clampDouble;
import 'package:flutter/gestures.dart' show DragStartBehavior;
import 'package:flutter/material.dart' hide TabBarView, PageView;
import 'package:flutter/material.dart' hide TabBarView;
/// A page view that displays the widget which corresponds to the currently
/// selected tab.
@@ -357,7 +355,7 @@ class _CustomTabBarViewState extends State<CustomTabBarView> {
return NotificationListener<ScrollNotification>(
onNotification: _handleScrollNotification,
child: PageView<CustomHorizontalDragGestureRecognizer>(
child: PageView(
scrollDirection: widget.scrollDirection,
dragStartBehavior: widget.dragStartBehavior,
clipBehavior: widget.clipBehavior,
@@ -365,8 +363,6 @@ class _CustomTabBarViewState extends State<CustomTabBarView> {
physics: widget.physics == null
? const PageScrollPhysics().applyTo(const ClampingScrollPhysics())
: const PageScrollPhysics().applyTo(widget.physics),
horizontalDragGestureRecognizer:
CustomHorizontalDragGestureRecognizer(),
children: _childrenWithKey,
),
);

View File

@@ -26,7 +26,7 @@ class CustomHorizontalDragGestureRecognizer
globalDistanceMoved.abs(),
gestureSettings,
pointerDeviceKind,
_initialPosition!,
_initialPosition,
lastPosition.global,
);
}
@@ -38,7 +38,7 @@ bool _computeHitSlop(
double globalDistanceMoved,
DeviceGestureSettings? settings,
PointerDeviceKind kind,
Offset initialPosition,
Offset? initialPosition,
Offset lastPosition,
) {
switch (kind) {
@@ -49,13 +49,13 @@ bool _computeHitSlop(
case PointerDeviceKind.unknown:
case PointerDeviceKind.touch:
return globalDistanceMoved > touchSlopH &&
_cacl(initialPosition, lastPosition);
_calc(initialPosition!, lastPosition);
case PointerDeviceKind.trackpad:
return globalDistanceMoved > (settings?.touchSlop ?? kTouchSlop);
}
}
bool _cacl(Offset initialPosition, Offset lastPosition) {
bool _calc(Offset initialPosition, Offset lastPosition) {
final offset = lastPosition - initialPosition;
return offset.dx.abs() > offset.dy.abs() * 3;
}

View File

@@ -121,7 +121,7 @@ class CustomGridView extends StatelessWidget {
);
}
static BorderRadius borderRadius(
static BorderRadius _borderRadius(
int col,
int length,
int index, {
@@ -255,7 +255,7 @@ class CustomGridView extends StatelessWidget {
height: imageHeight,
children: List.generate(length, (index) {
final item = picArr[index];
final radius = borderRadius(column, length, index);
final borderRadius = _borderRadius(column, length, index);
return LayoutId(
id: index,
child: GestureDetector(
@@ -274,17 +274,14 @@ class CustomGridView extends StatelessWidget {
clipBehavior: Clip.none,
alignment: Alignment.center,
children: [
ClipRRect(
borderRadius: radius,
child: NetworkImgLayer(
type: .emote,
src: item.url,
width: imageWidth,
height: imageHeight,
alignment: item.isLongPic ? .topCenter : .center,
cacheWidth: item.width <= item.height,
getPlaceHolder: () => placeHolder,
),
NetworkImgLayer(
src: item.url,
width: imageWidth,
height: imageHeight,
borderRadius: borderRadius,
alignment: item.isLongPic ? .topCenter : .center,
cacheWidth: item.width <= item.height,
getPlaceHolder: () => placeHolder,
),
if (item.isLivePhoto)
const PBadge(