gpt4 book ai didi

flutter - 如何知道偏移量是否在圆圈内

转载 作者:IT王子 更新时间:2023-10-29 06:38:23 24 4
gpt4 key购买 nike

在我的代码中,我有带边框的 CircleAvatar。我想知道用户是否恰好在边框上点击。为此,我需要检查点击是否在大圆圈 (Container) 内,但不在小圆圈 (CircleAvatar) 内。有人知道我该如何检查吗?

Widget build(BuildContext context) {
return Listener(
child: Container(
key: key,
padding: EdgeInsets.all(8.0),
decoration: ShapeDecoration(shape: CircleBorder(), color: Colors.yellow),
child: CircleAvatar(
backgroundImage: NetworkImage(widget.imgSrc),
radius: 60.0,
),
),
onPointerDown: (event) {
if (renderBox == null) {
renderBox = key.currentContext?.findRenderObject();
}
Rect rect = renderBox.paintBounds;
// todo ......
},
);
}

最佳答案

你应该使用勾股定理来检查偏移量是否在一个圆圈内:

import 'dart:math';

/// check if a [point] is in a circle of a given [radius]
bool isPointInside(Offset point, double radius) =>
pow(point.dx, 2) + pow(point.dy, 2) < pow(radius, 2);

对大圆圈和小圆圈执行此操作,并检查结果是否符合您的要求。

编辑:按照@randal-schwartz 的建议删除了 sqrt 以支持 pow(radius)

关于flutter - 如何知道偏移量是否在圆圈内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53190140/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com