Flutter 中使用WillPopScope

【Flutter】二十二、Fultter功能组件——WillPopScope 为了避免用户误触返回按钮而导致APP退出,在很多APP中都拦截了用户点击返回键的按钮,当用户在某一个时间段内点击两次时,才会认为用户是要退出(而非误触)。Flutter中的WillPopScope就可以用来完成该功能。 一、WillPopScope构造函数 WillPopScope({ Key key, @required this.child, @required t... 阅读详情

WillPopScope  这个控件可以用来一些防止误触判断,

onWillPop是一个回调函数,当用户点击返回按钮时被调用(包括导航返回按钮及Android物理返回按钮)。该回调需要返回一个Future对象,如果返回的Future最终值为false时,则当前路由不出栈(不会返回);最终值为true时,当前路由出栈退出。我们需要提供这个回调来决定是否退出。

#

import 'package:flutter/material.dart';

class HomePage extends StatefulWidget {
  const HomePage();

  @override
  State<HomePage> createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text("data"),
        ),
        body: WillPopScope(
            onWillPop: () async => showDialog(
                context: context,
                builder: (context) =>
                    AlertDialog(title: Text('你确定要退出吗?'), actions: <Widget>[
                      RaisedButton(
                          child: Text('退出'),
                          onPressed: () => Navigator.of(context).pop(true)),
                      RaisedButton(
                          child: Text('取消'),
                          onPressed: () => Navigator.of(context).pop(false)),
                    ])),
            child: Center(
              child: ElevatedButton(
                onPressed: () {},
                child: Text("退出"),
              ),
            )));
  }
}

Flutter 之PopScope组件的基本用法,拦截系统返回键 PopScope的基本用法 阅读详情

相关推荐

Flutter:导航返回拦截WillPopScope组件(功能性组件)

导航返回拦截WillPopScope: 为了避免用户误触返回按钮而导致APP退出,在很多App中都拦截了用户点击返回键的按钮, 当用户在某一个时间段内点击2次时,才会认为用户是要退出(而非触摸)。Flutter中可以通过WillPopScope来实现返回按钮的拦截。 onWillPop是一个回调函数,当用户点击返回按钮的时候调用(包括导航返回按钮以及android物理返回按...

手写我对你的温柔 5165

Flutter中如何使用WillPopScope

老孟导读:在Flutter中如何实现点击2次Back按钮退出App,如何实现App中多个Route(路由),如何实现Back按钮只退出指定页面,此篇文章将告诉你。 WillPopScope WillPopScope用于处理是否离开当前页面,在Flutter中有多种方式可以离开当前页面,比如AppBar、CupertinoNavigationBar上面的返回按钮,点击将会回到前一个页面,在Android手机上点击实体(虚拟)返回按钮,也将会回到前一个页面,此功能对于iOS程序员来说可能特别容易忽略。 .

大灰狼的小绵羊哥哥的博客 7474

Flutter跨平台移动端开发丨WillPopScope、InheritedWidget、Theme

目录 WillPopScope(返回事件拦截器) InheritedWidget(数据传递与共享) Theme (主题控制) WillPopScope(返回事件拦截器) 可防止误触情况的发生,也可监听返回按钮点击事件 const WillPopScope({ Key key, @required this.child, @required this...

全栈工程师 293

Flutter 中的 PopScope 小部件:全面指南

PopScope是一个用于包裹Navigator的小部件,它允许你拦截和处理返回操作。在没有PopScope之前,如果你想要在用户按下返回键时执行一些特定的逻辑,你可能需要在每个页面上单独处理。而PopScope可以让你在一个地方集中管理这些逻辑,使得代码更加简洁和易于维护。

smileKH的博客 4402

windows sever2019切换Linux内核

安装docker engine后,内核是windows,很多镜像都无法安装使用。 一,在https://github.com/linuxkit/lcow/release 下载最新版本release.zip,我使用了如下版本。 二,新建文件夹C:\Program Files\Linux Containers ,把release.zip(不要解压)放入此文件夹 三,编辑docker配置文件( C:\ProgramData\docker\config\daemon.json) ,电脑中没有该文件,新建一

记录日常疑问 3875

Spring AI + RAG 构建电商智能客服:从 PDF 文档解析到精准问答的全链路实战

核心框架:向量数据库:- PostgreSQL + pgvector (生产推荐)- Redis Stack (轻量级方案)- ChromaDB (快速原型)文档解析:- Apache PDFBox: PDF 文本提取- Spring AI Document Readers: 结构化解析大模型:- 阿里云百炼 (DashScope)- 本地部署:Qwen/ChatGLM/*** 电商领域实体*/@Data@Builder@ToString/*** 商品类型。

一起修行,不孤单。这里有编程语言、开发工具、学习方法论和踩坑笔记。用简单的话说复杂的事,陪你从小白到进阶。周更干货,欢迎一起成长! 381

Flutter 弃用 WillPopScope 使用 PopScope 替代方法

了解如何在 Flutter 3.16 中将弃用的 WillPopScope 替换为 PopScope,并学习如何升级您的 Flutter 应用程序。详细指南和最佳实践,帮助您顺利迁移和更新您的导航逻辑。

会煮咖啡的猫咪 2882

【通信协议-RTCM】MSM语句(1) - 多信号GNSS观测数据消息格式

注释:RTCM响应消息1020为GLONASS星历信息,暂不介绍,前公司暂未研发RTCM消息类型版本的DR/RTK模块,DR/RTK模块仅NMEA消息类型使用注释:公司使用的多信号语句类型为MSM4&MSM7,也应该是运用最广泛的语句类型,例如本人之前在公司开发的工具全是基于MSM7语句类型来进行的。

qxj2422640226的博客 2092

在Flutter中使用WillPopScope*

在Flutter中使用WillPopScope 作者:坚果 公众号:“大前端之旅” 华为云享专家,InfoQ签约作者,OpenHarmony布道师,,华为云享专家,阿里云专家博主,51CTO博客首席体验官,开源项目GVA成员之一,专注于大前端技术的分享,包括Flutter,鸿蒙,小程序,安卓,VUE,JavaScript。 突然,在阅读特定内容时,。令人惊讶的是,您发现您的手指掠过后退按钮。页面弹出, 这可能不是什么大问题,如果您可以前进到页面并从您停止的地方继续,但如果应用程序已刷新屏幕或设置为在您进

坚果的博客 2687

win11禁止更新,草履虫教程

本文介绍了彻底禁止Windows 11系统更新的组合方法,包括禁用核心服务、修改注册表、关闭计划任务和使用组策略(专业版适用)。作者特别提醒,禁止更新会影响系统安全性,建议实体机保持更新,仅虚拟机等特殊情况下使用这些方法。同时强调即使禁用更新,也应定期手动检查重要安全补丁。文章最后附上了作者的个人网站信息。

testwzc1的博客 559

IEC104协议学习专栏内容规划

IEC104协议的编程学习

sixtome 1110

【自学Flutter】24 WillPopScope 的使用

24 WillPopScope 的使用 1.源代码 import 'package:flutter/material.dart'; void main () => runApp(MyApp()); class MyApp extends StatefulWidget { @override _MyAppState createState() => _MyAppState()...

技术宅-Nopi的博客 1813

PD3.0详解 第六章 协议层—数据消息之—VDM

PD3.0的VDM 很多对PD3.0协议了解不是很深入的同学可能对VDM有一些陌生,因为这个VDM是较为次要,只不过相对沟通电源的协议来讲VDM是次要,但从PD3.0协议的角度来说,这个也是非常重要的,是必须要非常明白的了解这个东西,所以今天大师匈就分享一下这部分的重要知识点。 VDM (vendor define message) VDM是什么意思呢,就是原厂定义的消息,比如PD快充芯片的原厂定义的一些自己独立的message。但是呢这部分也有规定的一些标准的字段。 另外我们要很清楚PD协议的数据分为几类

大师匈的博客 1万+

25、 Flutter Widgets 之 WillPopScope

为了避免用户误触返回按钮而导致 App 退出,在很多 App 中都拦截了用户点击返回键的按钮,然后进行一些防误触判断,比如当用户在某一个时间段内点击两次时,才会认为用户是要退出(而非误触)。Flutter中可以通过WillPopScope来实现返回按钮拦截,我们看看WillPopScope的默认构造函数: const WillPopScope({ ... required WillPopCallback onWillPop, required Widget child }) onWill

wywinstonwy的专栏 4350

升级conda时出现Malformed version string invalid chars错误解决方案

但有时,当你使用“conda upgrade”的命令时,你可能会遇到一个错误,提示你的环境解析失败,出现“Malformed version string invalid chars”错误消息。如果以上两个步骤都没有解决你的问题,那么你可以考虑更新conda的依赖项。如果你的conda版本已经是最新的,那么你需要清理conda的缓存。最后,如果以上方法都无法解决问题,你可以尝试使用pip进行更新。如果你的conda版本过旧,你需要先更新conda。首先,你需要确认你当前使用的conda版本。

BUG?不存在的! 1409

【PostgreSQL】PostgreSQL数据库函数比对模板(PG通用)

LOOKUP 函数从单行或单列区域 (区域:工作表上的两个或多个单元格。区域中的单元格可以相邻或不相邻。)或数组 (数组:用于建立可生成多个结果或可对在行和列中排列的一组参数进行运算的单个公式。数组区域共用一个公式;数组常量是用作参数的一组常量。LOOKUP 函数具有两种语法形式:向量形式和数组形式。vlookup查找匹配值超过255个字符显示#Value的解决办法。如果值为错误值 #N/A,则返回 TRUE。

tttzzzqqq2018的博客 1493

【Flutter】【widget】返回拦截 WillPopScope

返回拦截,作用?1.在设备点击返回的时候做一个拦截2.比如在编辑框编辑了内容,不小心点击了返回按键,那么这个时候直接返回就看导致内容的清除,如果这个时候弹出一个窗口,提示用户,给用户选择,这样体验机会好很多欢迎关注,留言,咨询,交流!

自动人生博客 1233

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Flutter 中的 WillPopScope 小部件:全面指南

是一个可以包裹任何 widget 的小部件,它监听用户尝试关闭当前页面的行为(通常是通过点击 Android 的返回按钮或 iOS 的导航栏上的返回按钮)。通过,你可以控制是否允许这个操作发生,或者在允许之前执行一些自定义逻辑。// 执行退出前的验证逻辑},child: ... // 其他页面内容。

smileKH的博客 2027

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

flutter WillPopScope监听无效

在return那里将WillPopScope放在最外层

weixin_44911775的博客 1510

Flutter中WillPopScope导航返回拦截

一.Flutter中WillPopScope简介 1.WillPopScope源码查看 const WillPopScope({ Key? key, required this.child, //页面显示的内容 required this.onWillPop, //当前页面将退出 }) onWillPop是一个回调函数,当用户点击返回按钮时被调用。该回调需要返回一个Future对象,如果返回的值为false,则当前路由不出栈(不会返回);反之为true时,则当前路由

j086924的专栏 2404

Flutter导航返回拦截WillPopScope

当用户在某一个时间段内点击两次时,才会认为用户是要退出(而非误触)。Flutter中可以通过WillPopScope来实现返回按钮拦截, onWillPop是一个回调函数,当用户点击返回按钮时被调用(包括导航返回按钮及Android物理返回按钮)。该回调需要返回一个Future对象,如果返回的Future最终值为false时,则当前路由不出栈(不会返回);最终值为true时,当前路由出栈退出。 示例: 当用户在1秒内点击两次返回按钮时,则退出;如果间隔超过1秒则不退出,并重新记时。 import 'pack

Android_小菜菜的博客 569

[Flutter 学习六] 导航返回拦截(WillPopScope) :

为了避免用户误触返回按钮而导致APP退出,在很多APP中都拦截了用户点击返回键的按钮,然后进行一些防误触判断,比如当用户在某一个时间段内点击两次时,才会认为用户是要退出(而非误触)。Flutter中可以通过WillPopScope来实现返回按钮拦截,我们看看WillPopScope的默认构造函数: const WillPopScope({ ... @required WillPopCall...

一条咸鱼 4496

Flutter WillPopScope在iOS系统上无法手势返回

Flutter WillPopScope在iOS系统上无法手势返回

PRliu的博客 1560

(Flutter)导航返回拦截: WillPopScope

1. 计算两个日期的时间差 DateTime.now().difference(_lastPressedAt!) //使用 difference 方法,就能获取到所有时间单位的差值 其中,DateTime 的 difference 方法 返回的是一个 Duration 对象。Duration 是用来表示 时间跨度(差值)的类。 参考文章: Flutter 计算两个日期的时间差 小白不止如此 :Dart)用法补充 2. 导航返回拦截: WillPopScope DateTime? _lastPresse

weixin_45625639的博客 377

flutter 再按一次退出 导航返回拦截WillPopScope

为了避免用户误触返回按钮而导致APP退出,在很多APP中都拦截了用户点击返回键的按钮,当用户在某一个时间段内点击两次时,才会认为用户是要退出(而非误触)。Flutter中可以通过WillPopScope来实现返回按钮拦截,我们看看WillPopScope的默认构造函数: const WillPopScope({ ... @required WillPopCallback onWillPop...

倚栏静望的博客 1902
上一篇: Flutter LayoutBuilder
下一篇: XCode 14.3 升级之后的问题 打包失败
Leonardo_Fibonacci
博客等级 码龄10年 110粉丝 247原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值