美文网首页Flutter
Flutter中的widget生命周期监听

Flutter中的widget生命周期监听

作者: xiaobug | 来源:发表于2020-08-14 16:51 被阅读0次

在flutter项目中需要对widget的生命周期进行监听,但是sdk中的监听方法不太好用,所以抽取了一个State的基类,用来监听widget的生命周期。
包括Flutter的生命周期监听和widget的生命周期监听,由于代码比较简单,大家有需要的直接领走,具体使用方式见注释。

import 'package:flutter/material.dart';

/// 创建日期: 2020/8/14
/// 作者: lijianbin
/// 描述:

///路由监听,使用时在MaterialAPP中的navigatorObservers直接赋值
///
/// void main() {
///  runApp(MaterialApp(
///    navigatorObservers: [lifeObserver],
///    home: FirstWidget(),
///  ));
///}

final RouteObserver<Route> lifeObserver = RouteObserver();

///具有Widget生命周期监听的State类,使用时和State方式一样,
///当widget可见时,回调onResume(),
///不可见时,回调onPaused(),
///
///当Apush打开B,A会调用onPaused(),B调用onResume();
///当Bpop返回A,A会调用onResume(),B调用onPaused();
///当锁屏或退入后台时,会调用onPaused();
///当从后台转入前台或从锁屏解锁后,会调用onResume();
///
/// 使用时,直接将State替换为LifeState即可
/// 不建议在回调用做大量的耗时操作,可以做一些定时任务的启停标记
///
abstract class LifeState<T extends StatefulWidget> extends State<T>
    with WidgetsBindingObserver, RouteAware {
  @override
  void initState() {
    WidgetsBinding.instance.addObserver(this);
    super.initState();
  }

  @override
  void didChangeDependencies() {
    lifeObserver.subscribe(this, ModalRoute.of(context));
    super.didChangeDependencies();
  }

  @override
  void dispose() {
    WidgetsBinding.instance.removeObserver(this);
    lifeObserver.unsubscribe(this);
    super.dispose();
  }

  @override
  void didChangeAppLifecycleState(AppLifecycleState state) {
    if (state == AppLifecycleState.resumed) {
      onResume();
    } else if (state == AppLifecycleState.paused) {
      onPaused();
    }
  }

  void didPop() {
    onPaused();
  }

  void didPopNext() {
    onResume();
  }

  void didPush() {
    onResume();
  }

  void didPushNext() {
    onPaused();
  }

  void onResume();

  void onPaused();
}

相关文章

  • 监听Flutter的生命周期

    监听Flutter的生命周期 要了解Widget,就需要先知道Widget的生命周期。 这里说到的生命周期分为两个...

  • Flutter中的widget生命周期监听

    在flutter项目中需要对widget的生命周期进行监听,但是sdk中的监听方法不太好用,所以抽取了一个Stat...

  • Flutter的生命周期

    Flutter 的生命周期分为两个部分: Widget的生命周期 App的生命周期 Flutter里的Widget...

  • Flutter学习笔记

    生命周期 Flutter生命周期说白了就是回调方法(函数),主要是监听Widget事件,内存管理(销毁). 每一个...

  • flutter学习资源

    一、我的github的flutter中的demo项目,持续更新中。。。 flutter_widget组件生命周期的...

  • Flutter 页面生命周期

    Flutter 页面生命周期就是 Flutter 页面组件 Widget 的生命周期。 Flutter 有两种组件...

  • Flutter-手势检测及触摸事件处理

    一、给 Flutter 的 widget 添加一个点击监听者 在 Flutter 中,有两种方法来添加点击监听者:...

  • Flutter 的生命周期(转载)

    一,概述 Flutter 的生命周期分为两个部分: Widget 的生命周期 App 的生命周期 二,Widget...

  • [Flutter] 10-Flutter的生命周期

    本章介绍 Flutter 的组件,以及组件的生命周期。 一、组件 Widget定义 Flutter 中的组件与前端...

  • Flutter 的生命周期

    Flutter 的生命周期Flutter 的生命周期分为两个部分: Widget 的生命周期App 的生命周期Fl...

网友评论

    本文标题:Flutter中的widget生命周期监听

    本文链接:https://www.haomeiwen.com/subject/cezgdktx.html