当前位置: 首页 > news >正文

Flutter 类似onResume 监听,解决入场动画卡顿(2)

接着完善上一篇内容,上一篇我们是能监听到初次进入路由页面节点,往往还想监听从当前路由跳转到其他路由后,再返回到当前路由页面,上一篇内容就无法满足当前需求了,不过我们完全可以按照上一篇的原理实现这个需求。

直接上代码

/// @author bawomingtian
/// @date 2023/10/16
/// @desc 通过监听路由入场动画完成,判断路由完全进入,可以用来优化在进场动画执行过程中
/// 异步请求数据刷新界面,导致进场动画卡顿的问题
class AsyncState<T extends StatefulWidget> extends State<T> with RouteAwareMixin implements NavigatorObserver {Completer<bool> _resumeCompleter = Completer();@overridevoid didChangeDependencies() {ModalRoute.of(context)!.controller?.addStatusListener((status) {if (status == AnimationStatus.completed) {_resumeCompleter.complete(true);initAsyncLoad();}});super.didChangeDependencies();}@overridevoid initState() {super.initState();Navigator.observer.add(this);}@overridevoid dispose() {Navigator.observer.remove(this);super.dispose();}Future<E> asyncWaitResume<E>(Future<E> future) async {var value = await future;await _resumeCompleter.future;return value;}void initAsyncLoad() {}void resumeAsyncLoad() {}@overrideWidget build(BuildContext context) {return const SizedBox();}@overridevoid didPush(Route route, Route? previousRoute) {if (route is ModalRoute) {route.controller?.addStatusListener((status) {if (status == AnimationStatus.dismissed) {resumeAsyncLoad();}});}super.didPush(route, previousRoute);}}mixin RouteAwareMixin {void didPop(Route route, Route? previousRoute) {}void didPush(Route route, Route? previousRoute) {}void didRemove(Route route, Route? previousRoute) {}void didReplace({Route? newRoute, Route? oldRoute}) {}void didStartUserGesture(Route route, Route? previousRoute) {}void didStopUserGesture() {}@overrideNavigatorState? get navigator => throw UnimplementedError();
}

方法 initAsyncLoad 为第一次进入路由页面回调

方法 resumeAsyncLoad 为从其他路由返回到该路由页面回调

有了这两个方法,我们就可以异步请求一些耗时或者频繁多次调用的接口了,不用担心影响路由跳转动画

相关文章:

Flutter 类似onResume 监听,解决入场动画卡顿(2)

接着完善上一篇内容&#xff0c;上一篇我们是能监听到初次进入路由页面节点&#xff0c;往往还想监听从当前路由跳转到其他路由后&#xff0c;再返回到当前路由页面&#xff0c;上一篇内容就无法满足当前需求了&#xff0c;不过我们完全可以按照上一篇的原理实现这个需求。 直…...

rabbitmq-3.8.15集群、集群镜像模式安装部署

目录 一、环境 1、映射、域名、三墙 2、Erlang和socat安装&#xff08;三台服务器都实行&#xff09; 二、部署三台rabbitmq-3.8.15实例 1、rabbitmq官网下载地址 &#xff1a; 2、解压rabbitmq 3、添加系统变量 4、启动web插件、启动rabbitmq 5、在rabbitmq1上添加用…...

import导入顺序杂乱的问题

我们经常会遇到项目中的import语句顺序混乱的问题。这不仅会影响代码的可读性&#xff0c;还可能使我们代码在提交的时候产生不必要的冲突。 解决方案 eslint-plugin-import 开始我调研了一下eslint-plugin-import插件。这款插件的排序逻辑是这样&#xff1a; builtin: 这代…...

Hadoop3教程(二十六):(生产调优篇)NameNode核心参数配置与回收站的启用

文章目录 &#xff08;143&#xff09;NameNode内存配置&#xff08;144&#xff09;NN心跳并发配置&#xff08;145&#xff09;开启回收站参考文献 &#xff08;143&#xff09;NameNode内存配置 每个文件块&#xff08;的元数据等&#xff09;在内存中大概 占用150byte&…...

PaddleX场景实战:PP-TS在电压预测场景上的应用

时间序列是按照时间发生的先后顺序进行排列的数据点序列&#xff0c;简称时序。时间序列预测即运用历史的多维数据进行统计分析&#xff0c;推测出事物未来的发展趋势。时间序列预测是最常见的时序问题之一&#xff0c;在很多行业都有其应用&#xff0c;且通常时序预测效果对业…...

pdf误删恢复如何恢复?分享4种恢复方法!

如何将pdf误删恢复&#xff1f;使用电脑的时候&#xff0c;经常会需要使用到pdf文件&#xff0c;但是有时候&#xff0c;因为一些操作上的失误&#xff0c;我们会丢失一些重要的文件。如果你不小心将pdf误删了&#xff0c;该如何进行恢复呢&#xff1f; PDF文件丢失的原因可以…...

简析新能源汽车充电桩设计与应用

叶根胜 安科瑞电气股份有限公司 上海嘉定 201801 摘要&#xff1a;本文针对新能源汽车充电桩建设工作进行探究&#xff0c;采用案例分析法、文献查阅法&#xff0c;指出了新能源汽车充电桩建设存在的问题&#xff0c;阐述了充电桩建设与优化的对策。研究表明&#xff1a;目前…...

Java零基础入门-算术运算符

本文旨在帮助零基础的读者快速了解Java中的算术运算符&#xff0c;包括基本的加减乘除运算符、取余运算符、自增自减运算符等常见的数学运算符。 在学习本文前&#xff0c;需要先掌握基本的Java语法&#xff0c;包括数据类型、变量、赋值语句等。 前言 在编写Java程序时&…...

java实现hbase数据导出

1. HBase-client方式实现 1.1 依赖 <!--HBase依赖坐标--><dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-client</artifactId><version>1.2.6</version></dependency><dependency><group…...

Unity之ShaderGraph如何实现旋涡效果

前言 今天我们来通过ShaderGraph来实现一个旋涡的效果 如下图所示&#xff1a; 主要节点 Distance&#xff1a;返回输入 A 和输入 B 的值之间的欧几里德距离。除了其他方面的用途&#xff0c;这对于计算空间中两点之间的距离很有用&#xff0c;通常用于计算有符号距离函数 (…...

【分布式】: 幂等性和实现方式

【分布式】: 幂等性和实现方式 幂等&#xff08;idempotent、idempotence&#xff09;是一个数学与计算机学概念&#xff0c; 常见于抽象代数中。在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数&#xff0c;或幂等方法&#xff0c;是…...

idea 设置serlvet 类模板(快捷生成servlet类)

我的版本是idea2020.3.4&#xff0c;博客中有相应安装教程&#xff0c;其他版本设置类似&#xff1a; 1.选择文件-->设置 2.选择编辑器-->文件和代码模板-->其他 3.选择Web-->Servlet Annotated Class.java-->复制相应模板&#xff0c;下面顺便设置了注释模板 …...

SpringBoot自动配置原理解析 | 京东物流技术团队

1: 什么是SpringBoot自动配置 首先介绍一下什么是SpringBoot&#xff0c;SpringBoost是基于Spring框架开发出来的功能更强大的Java程序开发框架&#xff0c;其最主要的特点是&#xff1a;能使程序开发者快速搭建一套开发环境。SpringBoot能将主流的开发框架&#xff08;例如Sp…...

AOP 笔记

AOP【面向切面编程】 作用&#xff1a;在不惊动原始设计的基础上进行功能增强。 无侵入式编程 连接点&#xff1a;程序执行的任意位置&#xff0c;SpringAOP中&#xff0c;理解为方法的执行。 切入点&#xff1a;匹配连接点的式子,要追加功能的方法 通知&#xff08;写在通…...

微信小程序导航退回及跳转 传参(navigateBack,navigateTo)

一、uniapp navigateBack 退回上一级 当前页面-传递参数 uni.$emit(update, params)uni.navigateBack({delta: 1});退回的页面-接收参数 可以写在 onLoad 和 onShow 里面 onLoad(o) {uni.$on(update, function(e) {//参数e}}onShow() {}返回前两级 uni.navigateBack({delta: 2}…...

python实例代码介绍python基础知识

TODO: 知识点仍有待整理 import 使用 import 关键字可以让你选择性地导入所需的模块&#xff0c;而不必导入整个模块库。这样可以减少内存占用和加载时间&#xff0c;尤其是当你只需要使用模块中的某些功能时。 同时&#xff0c;使用 import 可以提高代码的可读性和可维护性&…...

【每日一题】掷骰子等于目标和的方法数

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;动态规划 写在最后 Tag 【动态规划】【数组】 题目来源 1155. 掷骰子等于目标和的方法数 题目解读 你手里有 n 个一样的骰子&#xff0c;每个骰子都有 k 个面&#xff0c;分别标号 1 到 n。给定三个整数 n&#xff0…...

霸王条款惹品牌争议,京东双11站在商家对立面?

作者 | 江北 来源 | 洞见新研社 双11活动第一天&#xff0c;京东就站上了风口浪尖。 与烘焙烤箱品牌海氏的话题接连登上微博热搜&#xff0c;海氏控诉京东滥用市场竞争地位&#xff0c;破坏市场竞争秩序。在海氏的声明中&#xff0c;京东的行为让吃瓜群众大开眼界&#xff1a…...

深度神经网络为何成功?其中的过程、思想和关键主张选择

LeNet&#xff08;1989&#xff09;在小数据集上取得了很好的效果&#xff0c;但是在更大、更真实地数据集上训练卷积神经网络地性能和可行性还有待研究。 与神经网络竞争的是传统机器学习方法&#xff0c;比如SVM&#xff08;支持向量机&#xff09;。这个阶段性能比神经网络方…...

什么是服务器节点?

一.服务器节点的概念&#xff1a; 服务器节点是一种服务器装置&#xff0c;节点服务器是针对服务器集群来说的。主要应用在WEB、FTP等等的服务上。所以节点服务器并不是单指某一种服务器。它由多个节点和管理装置整体的管理单元构成&#xff0c;其特征在于&#xff1a;各节点具…...

Vue生命周期的灵魂拷问:created vs mounted,数据请求到底该在哪?

Vue生命周期的灵魂拷问&#xff1a;created vs mounted&#xff0c;数据请求到底该在哪&#xff1f; 在Vue.js的世界里&#xff0c;生命周期钩子是赋予开发者“上帝视角”的魔法&#xff0c;让我们能在组件从诞生到消亡的整个过程中&#xff0c;在精确的时机注入自定义逻辑。其…...

终极指南:5步解锁MacBook Touch Bar在Windows系统的完整显示功能

终极指南&#xff1a;5步解锁MacBook Touch Bar在Windows系统的完整显示功能 【免费下载链接】DFRDisplayKm Windows infrastructure support for Apple DFR (Touch Bar) 项目地址: https://gitcode.com/gh_mirrors/df/DFRDisplayKm 还在为MacBook Pro的Touch Bar在Wind…...

基于python的本地选择图像接入百度云api的图像识别项目

项目灵感来源于老师布置的任务。怎么感觉老师这个题目也是ai生成的~。~ 题目&#xff1a;基于 AI 视觉的本地图像分析脚本 任务要求&#xff1a; 请使用 Python 编写一个通用的图像分析脚本&#xff0c;具体流程需满足以下三个步骤&#xff1a; * 本地选图&#xff1a;程序运…...

STM32F103ZET6【标准库函数开发】-----TM1638模块驱动4位8段共阴极数码管

1. 硬件环境搭建 第一次接触TM1638模块时&#xff0c;我手头正好有块吃灰的正点原子战舰开发板。这个组合对初学者特别友好&#xff0c;就像乐高积木一样容易上手。先说说需要准备的硬件清单&#xff1a; 正点原子STM32F103ZET6开发板&#xff08;其他型号也行&#xff0c;但引…...

千问3.5-2B图文对话入门:一张图+一句话提问,实现图像理解、颜色判断、主体定位

千问3.5-2B图文对话入门&#xff1a;一张图一句话提问&#xff0c;实现图像理解、颜色判断、主体定位 1. 认识千问3.5-2B视觉语言模型 千问3.5-2B是Qwen系列中的小型视觉语言模型&#xff0c;它能够同时理解图片内容和自然语言问题。想象一下&#xff0c;你给朋友看一张照片&…...

Node.js企业级应用部署与运维完整方案:Google Cloud Platform实战指南

Node.js企业级应用部署与运维完整方案&#xff1a;Google Cloud Platform实战指南 【免费下载链接】nodejs-docs-samples Node.js samples for Google Cloud Platform products. 项目地址: https://gitcode.com/gh_mirrors/no/nodejs-docs-samples 想要构建稳定可靠的No…...

RexUniNLU零样本实战:智能家居指令解析,5分钟快速上手

RexUniNLU零样本实战&#xff1a;智能家居指令解析&#xff0c;5分钟快速上手 1. 为什么选择RexUniNLU处理智能家居指令&#xff1f; 1.1 智能家居场景的特殊挑战 智能家居领域面临两大核心难题&#xff1a;指令多样性和用户表达随意性。同一操作可能有数十种表达方式&#…...

javaweb有声漫画售卖商城

目录同行可拿货,招校园代理 ,本人源头供货商功能模块划分技术实现要点扩展功能设计安全与合规项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作同行可拿货,招校园代理 ,本人源头供货商 功能模块划分 用户模块 注册与登录&#…...

RocketMQ的“三高”架构设计

RocketMQ的“三高”架构设计&#xff0c;主要围绕高可用、高吞吐、高扩展三个维度展开&#xff0c;分别解决服务不中断、性能不瓶颈、规模不设限的核心问题。1 高可用&#xff08;High Availability&#xff09;高可用的目标是确保部分组件故障时&#xff0c;消息服务依然可用&…...

libpng 官方参考库中的这两个严重漏洞已存在30年之久

聚焦源代码安全&#xff0c;网罗国内外最新资讯&#xff01;编译&#xff1a;代码卫士安全研究人员披露了位于 libpng 官方参考库中的两个严重漏洞。libpng 是便携式网络图形格式的官方参考库。这些漏洞影响了跨越数十年开发历程的多个版本&#xff0c;可能允许攻击者触发进程崩…...