Flutter 颤振:通过强制手势修正syncfusion日历滚动?
我有一个问题,这个Flutter 颤振:通过强制手势修正syncfusion日历滚动?,flutter,syncfusion,gesture-recognition,syncfusion-calendar,Flutter,Syncfusion,Gesture Recognition,Syncfusion Calendar,我有一个问题,这个SfCalendar的屏幕截图显示了与其他孩子在列中的月份(另请参见end以获取最小可重复生成的示例代码): 问题很简单:当触摸点从另一个列开始时,垂直滚动可以正常工作,但当触摸点从SfCalendar列开始时,列不会滚动。日历似乎完全吸收了所有垂直拖动触摸手势。这是非常恼人的,因为SfCalendar在月模式下没有使用垂直拖动手势,所以它确实应该允许列滚动 设置debugPrintGestureArenaDiagnostics=true将显示您尝试在日历上垂直滚动时发生的情
SfCalendar
的屏幕截图显示了与其他孩子在列中的月份(另请参见end以获取最小可重复生成的示例代码):
问题很简单:当触摸点从另一个列开始时,垂直滚动可以正常工作,但当触摸点从SfCalendar
列开始时,列不会滚动。日历似乎完全吸收了所有垂直拖动触摸手势。这是非常恼人的,因为SfCalendar在月模式下没有使用垂直拖动手势,所以它确实应该允许列滚动
设置debugPrintGestureArenaDiagnostics=true
将显示您尝试在日历上垂直滚动时发生的情况:
I/flutter (15390): Gesture arena 24 ❙ ★ Opening new gesture arena.
I/flutter (15390): Gesture arena 24 ❙ Adding: TapGestureRecognizer#6f41b(debugOwner: GestureDetector, state: ready, button: 1)
I/flutter (15390): Gesture arena 24 ❙ Adding: TapGestureRecognizer#0240c(debugOwner: GestureDetector, state: ready, button: 1)
I/flutter (15390): Gesture arena 24 ❙ Adding: VerticalDragGestureRecognizer#736cf(debugOwner: GestureDetector, start behavior: start)
I/flutter (15390): Gesture arena 24 ❙ Adding: HorizontalDragGestureRecognizer#bde3d(debugOwner: GestureDetector, start behavior: start)
I/flutter (15390): Gesture arena 24 ❙ Adding: VerticalDragGestureRecognizer#5137d(start behavior: start)
I/flutter (15390): Gesture arena 24 ❙ Closing with 5 members.
I/flutter (15390): Gesture arena 24 ❙ Rejecting: TapGestureRecognizer#6f41b(debugOwner: GestureDetector, state: possible, button: 1, sent tap down)
I/flutter (15390): Gesture arena 24 ❙ Rejecting: TapGestureRecognizer#0240c(debugOwner: GestureDetector, state: possible, button: 1, sent tap down)
I/flutter (15390): Gesture arena 24 ❙ Accepting: VerticalDragGestureRecognizer#736cf(debugOwner: GestureDetector, start behavior: start)
I/flutter (15390): Gesture arena 24 ❙ Self-declared winner: VerticalDragGestureRecognizer#736cf(debugOwner: GestureDetector, start behavior: start)
似乎有两个垂直拖动识别器
s-我猜一个是SingleChildScrollView
,另一个是SfCalendar
(同样,我不知道日历为什么有垂直拖动识别器,因为它没有垂直拖动功能)。看起来日历通过垂直拖动赢得竞技场,然后吞下事件,什么也不做
所以我的问题是:
如何让我的SingleChildScrollView
赢得竞技场?或者还有其他方法可以实现这一点吗?
最小可复制示例:
公共规范yaml
name: syncfusioncalendarscroll
description: A new Flutter application.
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
version: 1.0.0+1
environment:
sdk: ">=2.7.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
syncfusion_flutter_calendar: ^18.1.59-beta
flutter:
uses-material-design: true
名称:syncfusioncalendarscroll
描述:一个新的颤振应用。
发布到:“无”#如果要发布到pub.dev,请删除此行
版本:1.0.0+1
环境:
sdk:“>=2.7.0我们已经发现并修复了报告的问题“当接触点位于列中的日历上时滚动不起作用”。我们将在即将发布的第2卷版本中包含该问题的修复,该版本预计将在本周末推出
您也可以通过我们的或与我们联系。我们随时乐意为您提供帮助!我们已经发现并修复了报告的问题“当接触点位于列中的日历上时滚动不起作用”。我们将在即将发布的第2卷版本中包含该问题的修复,该版本预计将在本周末推出
您也可以通过我们的或联系我们。我们随时乐意为您提供帮助!会有帮助吗?会有帮助吗?
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:syncfusion_flutter_calendar/calendar.dart';
void main() {
debugPrintGestureArenaDiagnostics = true;
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: SingleChildScrollView(
child: Column(
children: <Widget>[
SizedBox(
height: 700,
child: Placeholder(color: Colors.amber),
),
SfCalendar(
view: CalendarView.month,
),
SizedBox(
height: 700,
child: Placeholder(color: Colors.blue),
),
],
),
)
);
}
}