flutter - 我怎样才能只显示一个小部件,然后在 Flutter 中再次隐藏它
问题描述
我只想在按下按钮时显示一个小部件,然后在一秒钟后它消失
我正在尝试使用 Opacity Widget 来做到这一点:
double _woofOp = 0.0;
void hideImg(){
Duration(seconds: 1);
setState(() {
_woofOp = 0.0;
});
}
void playAudio() {
setState(() {
_woofOp = 1.0;
playBark.play('DogWoof.mp3');
});
hideImg();
}
和小部件:
Opacity(
opacity: _woofOp,
child: Image.asset('images/woof-png.png',
width: 80.0,
),
)
但是通过使用它没有任何反应,(但音频工作在相同的功能)知道为什么吗?
或者任何想法我怎么能用其他方式做到这一点?我只是一个学习者。谢谢
解决方案
您可以使用OverlayEntry
.
您应该从您的小部件中调用此方法:
static void showToast({
@required BuildContext context,
}) {
OverlayEntry overlayEntry;
overlayEntry = OverlayEntry(
builder: (context) => ToastWidget(
)
);
Overlay.of(context).insert(overlayEntry);
Timer(Duration(seconds: 1), () => overlayEntry.remove());
}
toast_widget.dart:
class ToastWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Positioned(
top: 100.0,
width: MediaQuery.of(context).size.width - 20,
left: 10,
child: Material(
color: Colors.blue,
elevation: 10.0,
borderRadius: BorderRadius.circular(10),
child: Text('Hello from toast'),
),
);
}
}
这是一个非常简单的实现,没有任何样式或动画之类的美化,但是您可以根据需要对其进行自定义。
此外,您可以查看这个有用的指南:https ://medium.com/@Mak95/how-to-make-custom-toast-messages-in-flutter-9799ef3239b7
推荐阅读
- python - 环聊聊天 API 返回 400 以创建 actionResponse 类型的消息
- java - 关于 Java 中数组的引用
- linux - 无法使用 WSL 2 在 Ubuntu 上安装 hadolint
- javascript - JavaScript 函数返回未定义,但记录到控制台得到正确的值?
- google-cloud-platform - 我可以从另一个项目中的实例模板创建 Google 计算实例吗?
- excel - VBA - 如何仅对包含特定值的行应用范围内的脚本
- owl - Hi(OWL 2 QL) 和 OWL 2 Full 中的元建模
- flutter - 一类的颤振设备依赖布局?
- python - 如何识别输入是否为浮点数
- django - 根据url传入的参数在django中使用order_by