我有一个Stack
和两个Column
。
第一列仅包含一个具有定义高度的InteractiveViewer
的子(1)。(例如250)。它根据第二列中SingleChildScrollView
的滚动偏移量来更改其内容的缩放和平移。滚动时不应将其推出屏幕,因此它应位于堆栈的滚动视图下方。
第二列的SingleChildScrollView
顶部填充(2) OR 第一视图(3)与相匹配>(1)高度。
现在,我要使顶部填充(2) 或 视图(3)不滚动SingleChildScrollView
但请将这些触摸事件传递给InteractiveViewer
。不管解决方案使用填充还是空白视图都无所谓,我只想在此处说明,而不是使用填充或视图可以实现的目标。我都尝试过,但都失败了。
我尝试了GestureDetector
,IgnorePointer
和AbsorbPointer
,但似乎SingleChildScrollView
总是获得触摸事件。我还没有找到使顶部填充也无法滚动的方法。
基本上,我想实现与附件gif类似的功能,除了我不需要“ Collapsing Header” 文本动画和应用栏。只需注意隐藏在滚动视图下方的山脉即可。一旦滚动偏移等于填充/视图高度(在此示例中为250),滚动视图应占据整个屏幕。
有可能吗?我的InteractiveViewer
背后的逻辑比下面提供的示例复杂得多,我只是对其进行了简化以使问题更易于理解。
Stack(children: [
Column(
children: [
Container( // (1) Widget that should get the touch events
height: 250,
child: InteractiveViewer(...)
),
],
),
Column(
children: [
Expanded(
child: SingleChildScrollView(
padding: EdgeInsets.only(top: 250), // (2) Either not scrollable padding
child: Column(
children: [
Container(height: 250), // (3) or not scrollable first item
Container(...)
],
),
),
),
],
),
]);