flutter - 如何检测小部件是否在堆栈中重叠?
问题描述
我打算在 Flutter 中制作一个简单的游戏,为了做到这一点,我需要检测 Stack 中的某些 Widget 是否重叠(它们的部分相互重叠)。小部件将一直在移动,因此我需要在某种计时器中运行该检查。
有任何想法吗?我的脑海里没有任何东西。
解决方案
计时器
您可以使用dart-async native packageTimer
中的类 解决的计时器问题。下面的代码片段创建了一个计时器,每 750 毫秒将调用一个名为. 例如,回调函数可以检查是否存在小部件重叠。_myCallbackFunction
Timer.periodic(Duration(milliseconds: 750), _myCallbackFunction);
Stack 重叠布局
您可以使用Positioned
Flutter 框架中的小部件来控制小部件在堆栈中的放置位置。
Stack(
children: <Widget>[
Positioned(left: 5, top: 0, right: 0, bottom: 10, child: MyCustomWidget(), );
Positioned(left: 10, top: 10, right: 0, bottom: 0, child: MyCustomWidget(), );
]
);
如何检查是否有重叠
诀窍是状态管理。假设我们MyCustomWidget
需要将每个位置参数存储在MyCustomWidget
堆栈上并最终检查是否有小部件在同一位置top, right, bottom, left
。您可以定义您的逻辑,我建议您使用MobX库来做一个简单而强大的状态管理。
推荐阅读
- cmake - cmake函数的并行执行?
- c# - 在c#中找到具有相同值的字典中的最小键
- vhdl - 为什么我的七段显示器只显示 0?
- javascript - 如何使用javascript获取已删除项目的值
- c# - 实现类以处理实时数据
- javascript - 修复不和谐 !avatar 命令的代码
- python - 将两个不同列表中的值顺序分配给python数据框中的列
- visual-studio - 让 Premake 生成一个引用现有 .props 文件的 vcxproj 文件
- c - malloc:从内存中获取信息
- angular - Docker 上的 Jenkins 开始在 Docker 上构建 Angular 应用程序