Таймер
Проблема таймера, которую вы можете решить с помощью класса Timer
из dart-asyn c нативный пакет . Приведенный ниже фрагмент кода создает таймер, который каждые 750 миллисекунд будет вызывать функцию с именем _myCallbackFunction
. Например, функция обратного вызова может проверить, есть ли перекрытие виджетов.
Timer.periodic(Duration(milliseconds: 750), _myCallbackFunction);
Макет перекрытия стека
Вы можете использовать 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
. Вы можете определить свои логики c, и я советую для использования библиотеки MobX для простого и мощного управления состоянием.