flutter 生命周期处理

201 阅读1分钟

1 WidgetsBindingObserver

class StudentHomeScreenState extends ConsumerState<StudentHomeScreen> with WidgetsBindingObserver {

  @override
  void initState() {
    super.initState();
    WidgetsBinding.instance.addObserver(this);
  }
 
  // 
  @override
  void didChangeAppLifecycleState(AppLifecycleState state) {
    super.didChangeAppLifecycleState(state);
    print("state-====${state}");
  }
}

WidgetsBindingObserver 监听的是整个app的前后台切换。(也可以理解为Flutter 是单页面应用,可能监听的就是原生单页面的生命周期)。

2 RouteAware


class _HomePageState extends State<HomePage> with RouteAware{

  late PersistentTabController _controller;
  @override
  void initState() {
    super.initState();
    _controller = PersistentTabController();
  }

  @override
  void dispose() {
    super.dispose();
    _controller.dispose();
    RouteObserverUtil().unSubscribe(this);
  }

  @override
  void didChangeDependencies() {
    super.didChangeDependencies();
    RouteObserverUtil().subscribe(this, context);
  }

  @override
  void didPushNext() {
    super.didPushNext();
    print("==============hoe,");
  }

  @override
  void didPopNext() {
    super.didPopNext();
  }
}

RouteAware 通过监听页面的进出栈来决定是否刷新数据