如何检测窗口小部件是否在堆栈中重叠?

问题描述 投票:0回答:1

我打算在Flutter中制作一个简单的游戏,为此,我需要检测Stack中的某些Widget是否重叠(它们的各个部分彼此重叠)。小部件将一直在移动,因此我需要在某种计时器中运行该检查。

有什么想法吗?我什么都没想到。

flutter stack widget overlap
1个回答
0
投票

计时器

您可以使用Timer中的dart-async native package类解决计时器问题。下面的代码段创建了一个计时器,该计时器每750毫秒将调用一个名为_myCallbackFunction的函数。例如,回调函数可以检查小部件是否重叠。

Timer.periodic(Duration(milliseconds: 750), _myCallbackFunction);

堆栈重叠布局

您可以使用flutter框架中的Positioned小部件来控制将小部件放置在堆栈中的位置。

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库做一个简单而强大的状态管理。

© www.soinside.com 2019 - 2024. All rights reserved.