当前位置:网站首页>Flutter 返回按钮的监听
Flutter 返回按钮的监听
2022-07-04 20:35:00 【海阔天空6688】
物理按钮和返回按钮的监听
Flutter 返回按钮的监听是通过 WillPopScope来实现的
class BackDemoState extends State<BackDemoWidget> {
@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: _onWillPop,
child: Scaffold(
appBar: AppBar(
title: const Text("返回键监听"),
leading: IconButton(
icon: const Icon(Icons.arrow_back),
onPressed: (){
SmartDialog.showToast("返回");
if (Navigator.canPop(context)) {
Navigator.pop(context);
} else {
SystemNavigator.pop();
}
},
),
),
));
}
Future<bool> _onWillPop() {
SmartDialog.showToast("返回");
if (Navigator.canPop(context)) {
Navigator.pop(context);
} else {
SystemNavigator.pop();
}
return Future.value(false);
}
}
WebView的返回监听
@override
Widget build(BuildContext context) {
return FutureBuilder<WebViewController>(
future: _controller.future,
builder: (context, snapshot) {
return WillPopScope(
onWillPop: () async {
if (snapshot.hasData) {
final bool canGoBack = await snapshot.data!.canGoBack();
if (canGoBack) {
// 网页可以返回时,优先返回上一页
await snapshot.data!.goBack();
return Future.value(false);
}
}
return Future.value(true);
},
child: Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Stack(
children: [
WebView(
initialUrl: "https://www.baidu.com",
javascriptMode: JavascriptMode.unrestricted,
allowsInlineMediaPlayback: true,
onWebViewCreated: (WebViewController webViewController) {
_controller.complete(webViewController);
},
onProgress: (int progress) {
debugPrint('WebView is loading (progress : $progress%)');
setState(() {
_progressValue = progress;
});
},
),
if (_progressValue != 100) LinearProgressIndicator(
value: _progressValue / 100,
backgroundColor: Colors.transparent,
minHeight: 2,
) else Gaps.empty,
],
),
),
);
}
);
}
边栏推荐
- 杰理之AD 系列 MIDI 功能说明【篇】
- nmap扫描
- Flutter在 release版本,打开后随机白屏不显示内容
- SolidWorks工程图添加材料明细表的操作
- Hwinfo hardware detection tool v7.26 green version
- Detailed explanation of multi-mode input event distribution mechanism
- FastDfs的快速入门,三分钟带你上传下载文件到云服务器
- Huawei simulator ENSP common commands
- Daily question -leetcode1200- minimum absolute difference - array - sort
- 杰理之AD 系列 MIDI 功能说明【篇】
猜你喜欢
偷窃他人漏洞报告变卖成副业,漏洞赏金平台出“内鬼”
【C语言】符号的深度理解
Arcgis 10.2.2 | arcgis license server无法启动的解决办法
The video sound of station B is very low - solution
Redis:Redis配置文件相关配置、Redis的持久化
[ 每周译Go ] 《How to Code in Go》系列文章上线了!!
Hwinfo hardware detection tool v7.26 green version
五子棋 上班摸鱼工具 可局域网/人机
搭建一个仪式感点满的网站,并内网穿透发布到公网 1/2
Can be displayed in CAD but not displayed in print
随机推荐
Jerry's ad series MIDI function description [chapter]
FastDfs的快速入门,三分钟带你上传下载文件到云服务器
Jerry's ad series MIDI function description [chapter]
Google colab踩坑
吐槽 B 站收费,是怪它没钱么?
福昕PDF编辑器v10.1.8绿色版
华为模拟器ensp常用命令
解析steam教育中蕴含的众创空间
杰理之AD 系列 MIDI 功能说明【篇】
刘锦程荣获2022年度中国电商行业创新人物奖
Day24: file system
多模輸入事件分發機制詳解
Methods of improving machine vision system
Huawei ENSP simulator layer 3 switch
华为ensp模拟器 DNS服务器的配置
搭建一个仪式感点满的网站,并内网穿透发布到公网 1/2
redis管道
redis RDB AOF
Huawei ENSP simulator enables devices of multiple routers to access each other
奋斗正当时,城链科技战略峰会广州站圆满召开