事实上有一个
Overlay
的Widge,它是一个StatefullWidget
,它的createState
方法获取的就是OverlayState
对象。Overlay
可以认为是一个UI上面的蒙版/浮空层,使用起来类似Stack
,如何使用:通过
Overlay.of
获得OverlayState
对象,调用OverlayState.insert
添加OverlayEntry
,当不需要的时候,通过OverlayEntry.remove
移除OverlayEntry
。var overlay = Overlay.of(context);
var overlayEntry = OverlayEntry(
builder: (context) => Positioned(
child: Icon(Icons.hd),
));
overlay.insert(overlayEntry);
// 单次定时器
Timer(Duration(seconds: 2), () {
overlayEntry.remove();
});
// 多次定时器 需要手动取消定时器
var num = 0;
Timer.periodic(Duration(seconds: 1), (timer) {
print('123');
num++;
print(num);
if(num >= 5) {
timer.cancel();
}
});
// 或者在dispose取消
var timer = Timer.periodic(Duration(seconds: 1), (timer) {
print('123');
});
dispose() {
super.dispose();
timer.cancel();
}