预期效果:
如果我不双击,我不希望表现有什么不同。
实际结果:
我添加了双击事件,并注意到通过简单地添加它,应用程序的性能大大降低。另一方面,如果我注解了该行,那么性能将返回稳定。
如果我制造了任何性能问题,我会在双击时预料到它们。但只要加上表演急剧下降的事件线。
验证码
void _startOperation(BuildContext ctx) {
_timer = Timer(const Duration(milliseconds: 150), () {
isLongPressed = true;
if (!widget.cell.isShowed) {
Provider.of<GameModelProvider>(ctx, listen: false).setFlag(widget.cell);
HapticFeedback.mediumImpact();
}
});
}
Widget build(BuildContext context) {
return GestureDetector(
onDoubleTap: () => Provider.of<GameModelProvider>(context, listen: false)
.speedOpenCell(widget.cell),
onTapDown: (_) {
_startOperation(context);
},
onTapUp: (_) {
if (!isLongPressed) {
Provider.of<GameModelProvider>(context, listen: false)
.computeCell(widget.cell);
} else {
isLongPressed = false;
}
_timer.cancel();
},
child: Container(
width: widget.cellWidth,
height: widget.cellHeight,
decoration: BoxDecoration(
color: widget.cell.isShowed
? Colors.grey.shade300
: Colors.grey.shade400,
borderRadius: BorderRadius.circular(5.0),
),
child: Padding(
padding: const EdgeInsets.all(3.0),
child: Center(
child: getContent(),
),
),
),
);
}
你可以在这里得到所有的代码:https://github.com/EliaTolin/infinity_sweeper
1条答案
按热度按时间8xiog9wr1#
这并不是说性能已经改变,只是延迟,因为 Flutter 框架现在必须等待(300ms)以确定手势实际上是双击还是单击。