我目前正在使用GestureDetector()
和AnimatedContainer()
创建自定义按钮。
目标是一旦用户按下并释放按钮,就会获得某种动画效果,比例,颜色,阴影或其他任何形式。
我现在的问题是onTapDown()
回调被延迟了。可能是因为此按钮实际上是SliverList
中的一项,导致延迟。但是,如果我在不滚动的情况下点击GestureDetector,则需要花费几百毫秒的时间才能触发onTapDown
回调。为什么?
我确实知道,抖动以及基本上任何其他UI框架都需要对列表中的对象进行某种形式的延迟触摸。它必须确定用户要滚动还是按下按钮。
但是您有任何想法,一旦用户按下该容器,如何显示漂亮的比例动画?
这是包含SliverList
的{{1}}(然后它会对触摸输入做出反应)。
RecipeMetaItem
这是SliverList(
delegate: SliverChildBuilderDelegate((BuildContext context, int index) {
MetaItem metaItem = state.metaItems[index];
return RecipeMetaItem(metaItem: metaItem, height: 178);
},
childCount: state.metaItems.length,
),
)
RecipeMetaItem()
谢谢!
答案 0 :(得分:0)
不知道您是否解决了这个问题,但是我在S.O上发现了类似的问题。我认为相同的解决方案可能对您有用!
尝试将GestureDetector切换到侦听器并替换:
onTapDown: (details) {
setState(() {
offset = -10;
});
},
onTapUp: (details) {
setState(() {
offset = 0;
});
},
具有:
onPointerDown: (PointerDownEvent event) {
setState(() {
offset = -10;
});
},
onPointerUp: (PointerUpEvent event) {
setState(() {
offset = 0;
});
},
希望能解决此问题,在这种情况下,问题将是GestureDetector,而不是子窗口小部件。