-
flutter可以监听app进入前台还是后台状态,也可以监听当前某个页面当前正在显示还是隐藏了。 -
找一个公共文件初始化一下
路由观察者,例如:-
public.dart,只要能做成全局对象就行。dart/// 路由观察者 final routeObserver = RouteObserver<PageRoute>();
-
-
有了
路由观察者对象后,注册为导航监听者:main.dart
dart/// MaterialApp Widget buildMaterialApp(BuildContext context) { // 这里直接在 MaterialApp 对象进行全局注册,其他模式也有,例如 CupertinoApp、WidgetsAp、Navigator return GetMaterialApp( title: 'Flutter Demo', // 注册 navigatorObservers: [routeObserver], ); ... ... ... } } -
页面使用,推荐封装作为底层
BaseStateful使用,其他页面继承,可以随时打开,也可以单个页面使用:dartimport 'package:flutter/material.dart'; import 'package:base_project/utils/public.dart'; @immutable class BaseStatefulController extends StatefulWidget { const BaseStatefulController({super.key}); @override State<BaseStatefulController> createState() => BaseStatefulControllerState(); } class BaseStatefulControllerState extends State<BaseStatefulController> with RouteAware { /// 启用路由观察者 bool enableRouteObserver = false; @override void initState() { super.initState(); // 等待加载 WidgetsBinding.instance.addPostFrameCallback((_) { // 初始化上下文完成 initStateContext(); }); } /// 初始化上下文完成,可以在这里做一些需要上下文的初始化操作 void initStateContext () { // 注册路由监听 if (enableRouteObserver) { final route = ModalRoute.of(context); if (route is PageRoute) { routeObserver.subscribe(this, route); } } } @override void dispose() { // 取消路由监听 routeObserver.unsubscribe(this); super.dispose(); } @override void didPush() { print("页面被 push 到栈顶,页面可见"); } @override void didPop() { print("页面被 pop,页面销毁"); } @override void didPushNext() { print("有新页面 push 进来,当前页面进入不可见状态"); } @override void didPopNext() { print("上一个页面被 pop,当前页面重新可见"); } @override Widget build(BuildContext context) { return Container(); } }方法 作用 subscribe(routeAware, route)订阅某个页面,监听生命周期变化 unsubscribe(routeAware)取消订阅,避免内存泄漏 didPush()页面进入可见 didPop()页面销毁 didPushNext()当前页面被覆盖,不可见 didPopNext()上一个页面被 pop,当前页面重新可见
Flutter 监听当前页面可见与隐藏状态
卡尔特斯2025-03-06 19:08
相关推荐
2501_944424128 小时前
Flutter for OpenHarmony游戏集合App实战之贪吃蛇食物生成不会写代码0009 小时前
Flutter 框架跨平台鸿蒙开发 - 全国景区门票查询应用开发教程kirk_wang10 小时前
Flutter艺术探索-Riverpod深度解析:新一代状态管理方案猛扇赵四那边好嘴.10 小时前
Flutter 框架跨平台鸿蒙开发 - 旅行规划助手应用开发教程2501_9371454111 小时前
神马影视8.8版2026最新版:核心技术升级与多场景适配解析2501_9444241213 小时前
Flutter for OpenHarmony游戏集合App实战之俄罗斯方块七种形状CheungChunChiu14 小时前
Flutter 在嵌入式开发的策略与生态不会Android的潘潘14 小时前
受限系统环境下的 WebView 能力演进:车载平台 Web 渲染异常的根因分析与优化实践建军啊14 小时前
java web常见lou洞豆奶dudu14 小时前
安卓应用签名生成+微信开放平台安卓应用签名