第一百三十六回 WillPopScope组件

2023-11-18


我们在上一章回中介绍了下拉刷新组件相关的内容,本章回中将介绍 WillPopScope组件.闲话休提,让我们一起Talk Flutter吧。

概念介绍

我们在本章回中介绍的WillPopScope组件是一种事件拦截类组件,它没有具体的物理形态,也就是说我们在页面中看不到它。该组件主要用来拦截返回按钮发出的事件。本章回中将详细介绍它的使用方法。

使用方法

和其它组件一样,WillPopScope组件提供了相关的属性来控制自己,下面是该组件的属性:

  • onWillPop属性:该属性是方法类型,点击返回按钮时回调此方法;
  • child属性:用来存放其它组件,它会拦截该属性所指页面中的返回按钮事件;

该组件只有这两个属性,不过它们都是必选属性。我们重点介绍一下第一个属性,该属性对应的方法会返回一个bool值,返回true表示拦截返回按钮发出的事件,此时不会返回上一级页面。反之表示不拦截返回按钮发出的事件,可以正常返回上一级页面。我们可以依据业务的需求来决定是否拦截返回按钮发出的事件。接下来我们将通过具体的代码来演示该组件的使用方法。

示例代码

  Future<bool> _backIconOnPress() async {
    ///两次点击间隔小于3s时才退出当前页面:return true;
    if(_lastPressedTime == null
        || DateTime.now().difference(_lastPressedTime!) > const Duration(seconds: 3)) {
      _lastPressedTime = DateTime.now();
      debugPrint('false');
      return Future.value(false);
    }else {
      debugPrint('true');
      return Future.value(true);
    }
  }

  @override
  Widget build(BuildContext context) {
    return WillPopScope(
      onWillPop: _backIconOnPress,
      child: Scaffold(
        appBar: AppBar(
          title: const Text('Example of WillPopScope Widget'),
          backgroundColor: Colors.purpleAccent,
        ),
        body: const Center(
            child: Text('连续两次点击小于3s时才能退出页面'),
        ),
      ),
    );
  }

在上面的示例代码中,WillPopScope组件封装了Scaffold组件,因此它会拦截Scaffold页面中返回按钮发出的事件。

我们把该组件onWillPop属性对应的方法封装为独立的方法,这个从代码中也可以看到,该方法中的业务逻辑是:连续两次点击返回按钮小于3s时才能退出页面。这个逻辑参考了wendu共享的《Flutter实战》,大家可以依据自己的业务逻辑来拦截页面中返回按钮发出的事件。

我在这里就不演示程序的运行结果了,建议大家自己动手去实践。

看官们,与"WillPopScope组件"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第一百三十六回 WillPopScope组件 的相关文章

随机推荐

  • python: 获取 后缀名(扩展名) / 文件名

    method 使用 os path splitext file 0 可获得 文件名 使用 os path splitext file 1 可获得以 开头的 文件后缀名 code import os file Hello py 获取前缀 文件
  • [YOLO专题-26]:YOLO V5 - ultralytics代码解析-detect.py程序的流程图与对应的plantUML源码

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 122443972 目录 第1章 det
  • 海南大学软件工程原理835考研

    海南大学835考研 2023考研已经落幕 我从2022 05 2023 03 用了大概一年的时间 目前已被海南大学计算机科学与技术学院录取 下面来谈谈我的学习感想 希望能给大家带来帮助 对于专业课 我用的是张海藩的软件工程导论第六版 和史济
  • MySQL数据库中随机获取一条或多条记录

    在开发过程中遇到了一个问题 使用MySQL数据库 用SQL语句在表中随机获取一条或多条数据 看似简单 但是往深层研究的话还是很有深度的 查了好多资料 接下来给大家分享一下 1 随机获取单条数据 SELECT FROM table name
  • springboot学习(一)——helloworld

    以下内容 如有问题 烦请指出 谢谢 springboot出来也很久了 以前零散地学习了不少 不过很长时间了都没有在实际中使用过了 忘了不少 因此要最近准备抽时间系统的学习积累下springboot 给自己留个根 因为以前学过一些 这里就主要
  • IDEA学习(一)——IDEA的安装

    最近IDE从Eclipse转到了IDEA 抽时间熟悉了一下IDEA相关的东西 在此记录一下说不定可以帮到有需要的同学 我们就先从IDEA的安装说起吧 需要说明一点的是IDEA是比较吃内存的 所以在安装IDEA之前最好确认的内存不要太小 最好
  • JavaScript运算符

    1 JavaScript运算符 算数运算符 运算符也叫做操作符 通过运算符可以对一个或则多个值进行运算 并获取运算结果 算数运算符 加 可以对两个值进行加法运算 如果是两个字符串则进行字符串拼接 任何值和字符串做加法运算 都会先转为字符串
  • 数据结构如何计算复杂度

    在学习具体的数据结构和算法之前 每一位初学者都要掌握一个技能 即善于运用时间复杂度和空间复杂度来衡量一个算法的运行效率 通过算法所编写出的程序的运行效率 程序的运行效率具体可以从 2 个方面衡量 分别为 程序的运行时间 程序运行所需内存空间
  • 熵值法计算权重有异常值_熵权法评价估计详细原理讲解

    写在前面 熵权法也属于一种综合评价方法 没有主观性 可与前面几篇文章提到的方法联合使用 目录 一 熵权法概述 1 1 信息论基础 1 2 熵权法介绍 二 熵权法赋权步骤 2 1数据标准化 2 2 求各指标在各方案下的比值 2 3 求各指标的
  • 一篇关于LLM指令微调的综述

    深度学习自然语言处理 原创作者 cola 指令微调 IT 是提高大型语言模型 LLM 能力和可控性的关键技术 其本质是指在由 INSTRUCTION OUTPUT 对组成的数据集上以监督的方式进一步训练LLM的过程 它弥合了LLM的下一个词
  • 线程连接池

    第一种 Executors newCacheThreadPool 可缓存线程池 先查看池中有没有以前建立的线程 如果有 就直接使用 如果没有 就建一个新的线程加入池中 缓存型池子通常用于执行一些生存期很短的异步型任务 package tes
  • FFPlay视频播放流程

    背景说明 FFmpeg是一个开源 免费 跨平台的视频和音频流方案 它提供了一套完整的录制 转换以及流化音视频的解决方案 而ffplay是有ffmpeg官方提供的一个基于ffmpeg的简单播放器 学习ffplay对于播放器流程 ffmpeg的
  • 机器学习 day31(baseline、学习曲线)

    语音识别的Jtrain Jcv和人工误差 对于逻辑回归问题 Jtrain和Jcv可以用分类错误的比例 这一方式来代替 单单只看Jtrain 不好区分是否高偏差 可以再计算人类识别误差 即人工误差 作为基准线来进行比较 Jtrain与base
  • npm 常用指令介绍

    npm usage what is npm 实现js代码的复用 分享和管理 npm consists of three distinct components 1 the website 通过 www npmjs com 网址查找需要的 包
  • html 浇水动画,纯CSS3实现动画插件spinkit

    spinkit使用CSS3的特性实现多种动画效果 元素移动 放大缩小 翻转 进度条加载效果等等 使用了很多CSS3新的特性 是一个学习CSS3不错的网站 spinner width 30px height 30px background c
  • echarts自定义Y轴刻度及其颜色

    yAxis min 0 max 5 axisLabel color 999 textStyle fontSize 14 fontWeight 400 设置分段颜色 color function value console log 试试 va
  • 4399 C++笔试题

    1 写出一个函数 取到链表中倒数第二个节点 双链表 node getSec List mylist return mylist m tail gt m prev m prev为链表前指针 单链表 node getSec List mylis
  • 如何利用Jmeter从0到1做一次完整的压测?这2个步骤很关键!

    压测 在很多项目中都有应用 是测试小伙伴必备的一项基本技能 刚好最近接手了一个小游戏的压测任务 一轮压测下来 颇有收获 赶紧记录下来 与大家分享一下 希望大家能少踩坑 一 压测的时机 压测的时机很重要 如果时间选择不对 可能会做无用功 简单
  • 防止sigmoid和tanh激活函数溢出的C++实现

    引言 上一期 我们介绍了softmax函数的C 实现 但是考虑到sigmoid和tanh函数也是带 e e e的次幂 所以现在我们来考虑该函数的防止溢出实现 sigmoid函数 原理 该函数的公式为 1 1
  • 第一百三十六回 WillPopScope组件

    文章目录 概念介绍 使用方法 示例代码 我们在上一章回中介绍了下拉刷新组件相关的内容 本章回中将介绍 WillPopScope组件 闲话休提 让我们一起Talk Flutter吧 概念介绍 我们在本章回中介绍的WillPopScope组件是