问题
所以我在 SingleChildScrollView 中有一个 GestureDetector 小部件(滚动视图是为了适应较小的屏幕)。GestureDetector 正在侦听平移更新。
当 SingleChildScrollView “使用中”时,GestureDetector 无法接收平移更新,因为来自用户的“拖动”输入被转发到 SingleChildScrollView。
我想要的是
当在 GestureDetector 顶部拖动时,使子 GestureDetector 的优先级高于 SingleChildScrollView,但仍具有在 GestureDetector 之外滚动 SingleChildScrollView 的功能。
例子
如果您将此代码复制/粘贴到dart pad中,您就会明白我的意思。当渐变容器很大时,SingleChildScrollView 不处于活动状态 - 您可以拖动蓝色框并在控制台中查看更新。但是,一旦按下切换按钮,容器就会变小,并且 SingleChildScrollView 就会变为活动状态。您现在无法再在控制台中获取平移更新,只能滚动容器。
旁注:似乎如果您快速拖动蓝色框,您就可以获得拖动更新,但缓慢拖动它只会滚动容器。我不确定这是一个错误还是一个功能,但我无法在我的生产应用程序中重现相同的结果。
import 'package:flutter/material.dart';
final Color darkBlue = Color.fromARGB(255, 18, 32, 47);
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData.dark().copyWith(scaffoldBackgroundColor: darkBlue),
debugShowCheckedModeBanner: false,
home: Scaffold(
body: Center(
child: MyWidget(),
),
),
);
}
}
class MyWidget extends …Run Code Online (Sandbox Code Playgroud)