mirror of
https://github.com/asjqkkkk/flutter-todos.git
synced 2025-08-06 14:19:24 +08:00
71 lines
1.7 KiB
Dart
71 lines
1.7 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'dart:async';
|
|
|
|
class OverlayUtil{
|
|
static OverlayUtil _instance;
|
|
|
|
static OverlayUtil getInstance(){
|
|
if(_instance == null){
|
|
_instance = OverlayUtil._internal();
|
|
}
|
|
return _instance;
|
|
}
|
|
|
|
OverlayUtil._internal();
|
|
|
|
OverlayEntry _overlayEntry;
|
|
// Timer timeTask;
|
|
|
|
|
|
|
|
void show(BuildContext context, {Widget showWidget, String text = "默认显示内容",Duration duration }){
|
|
if(_overlayEntry == null){
|
|
_showEntry(showWidget, context,text,duration);
|
|
} else{
|
|
_overlayEntry.remove();
|
|
_overlayEntry = null;
|
|
_showEntry(showWidget, context,text,duration);
|
|
}
|
|
}
|
|
|
|
void hide(){
|
|
if(_overlayEntry != null){
|
|
_overlayEntry.remove();
|
|
_overlayEntry = null;
|
|
}
|
|
}
|
|
|
|
void _showEntry(Widget showWidget, BuildContext context, String text, Duration duration) {
|
|
_overlayEntry = OverlayEntry(builder: (ctx){
|
|
return showWidget??_defaultShow(text);
|
|
});
|
|
Overlay.of(context).insert(_overlayEntry);
|
|
// timeTask?.cancel();
|
|
// timeTask = Timer(duration??Duration(seconds: 3), (){
|
|
// if(_overlayEntry != null){
|
|
// _overlayEntry.remove();
|
|
// _overlayEntry = null;
|
|
// }
|
|
// });
|
|
}
|
|
|
|
Widget _defaultShow(String text){
|
|
return Container(
|
|
alignment: Alignment.bottomCenter,
|
|
margin: EdgeInsets.only(bottom: 50),
|
|
|
|
child: Material(
|
|
borderRadius: BorderRadius.all(Radius.circular(20)),
|
|
color: Colors.grey.withOpacity(0.5),
|
|
child: Container(
|
|
margin: EdgeInsets.fromLTRB(10, 5, 10, 5),
|
|
child: Text(
|
|
text,
|
|
style: TextStyle(fontSize: 16, color: Colors.white),
|
|
),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
|
|
} |