我创建了一个。手势检测器具有父容器(红色)和一个子容器(蓝色)。滚动视图对父母而言不起作用,但对孩子不起作用。我应该怎么办?感谢您的帮助。 这是代码。

问题描述 投票:0回答:2
body: SingleChildScrollView( child: Column( children: [ Container( color: Colors.redAccent[200], height: 1000.0, width: 500.0, alignment: Alignment.center, ), GestureDetector( onVerticalDragUpdate: (DragUpdateDetails details) { print("Start"); print(details.localPosition); }, child: Container( color: Colors.blueAccent[200], height: 10000.0, width: 500.0, alignment: Alignment.center, ), ) ], ), )

onVerticalDragUpdate
正在阻止

SingleChildScrollView
滚动,因为它只是检测到垂直拖动更新,当您通过握住窗口小部件时,它会忽略滚动浏览器并收听窗口小部件的可拖动更新。
运行以下代码。现在对我有用。
body: SingleChildScrollView( child: Column( children: [ Container( color: Colors.redAccent[200], height: 1000.0, width: 500.0, alignment: Alignment.center, ), GestureDetector( // onVerticalDragUpdate: (DragUpdateDetails details) { // print("Start"); // print(details.localPosition); // }, child: Container( color: Colors.blueAccent[200], height: 1000.0, width: 500.0, alignment: Alignment.center, ), ) ], ), )
flutter dart
2个回答
0
投票

一种方法是使用
scrollController
并手动更新它。不利的一面是,这样,您会失去滚动减速效果(用户摘下手指滚动会稍微继续)。我想也可以手动实施减速效应。
class _MyHomePageState extends State<MyHomePage> { late ScrollController _scrollController; @override void initState() { super.initState(); _scrollController = ScrollController(); } @override void dispose() { _scrollController.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return Scaffold( body: SingleChildScrollView( controller: _scrollController, child: Column( children: List.generate( 20, (i) => i == 10 ? GestureDetector(onVerticalDragUpdate: _onVerticalDragUpdate, child: _c(i)) : _c(i), )), ), ); } void _onVerticalDragUpdate(DragUpdateDetails details) { _scrollController.jumpTo( (_scrollController.offset - details.delta.dy).clamp( 0.0, _scrollController.position.maxScrollExtent, ), ); } Widget _c(int i) => Container( margin: EdgeInsets.all(2.0), height: 100, color: Colors.amber, child: Center(child: Text("$i")), ); }


trory用单核crollview包裹格鲁德泰克人。

0
投票


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.