之前写过flutter_page 这个库,但是比较繁琐,如果单纯需要监听页面的生命周期的话,来使用这个库吧
package地址:https://pub.dev/packages/lifecycle_lite
github地址:https://github.com/lp0int/lifecycle_lite
lifecycle_lite
通过简单几步,就可以让你使用whenShow()/whenHide()方法来监听页面的生命周期(退回到了该页面/打开其他页面挡着了该页面)了
- StatefulWidget
- StatelessWidget
Principle
这个库的实现很简单,你完全可以通过阅读代码后自己扩展实现。主要就是在MaterialApp
中添加一个对路由的监听,也就是MaterialApp#navigatorObservers
,之后通过对路由的监听来记录一个路由的栈。再在对应的State#initState
方法或StatelessWidget#createElement
中绑定两个生命周期方法的实现到最上层路由。
这样在每次监听到路由变化时,去调用顶层路由对应的绑定方法就OK了。
记得在路由被移出的时候对应的方法也要移出哦~
Getting Started
import 'package:lifecycle/lifecycle_mixin.dart';
1.首先在你的根布局MaterialApp
中绑定一个路由监听LifeNavigatorObserver()
.
MaterialApp(
navigatorObservers: [
LifeNavigatorObserver(),
],
);
2.在你需要添加监听的State
中混入LifecycleMixin
,并在initState
中调用bindImplIntoRoute()
方法。
2.StatefulWidget
的话,需要混入LifecycleStatefulMixin
,对应的StatelessWidget
,使用的是LifecycleStatelessMixin
3.实现whenShow()/whenHide()
方法,代码看起来是下面的样子。
///Statefule page
class WorksDetailState extends State with LifecycleStatefulMixin{
@override
whenShow() {
super.whenShow();
print("LifeNavigatorObserver---Show了");
}
@override
whenHide() {
super.whenHide();
print("LifeNavigatorObserver---Hide了");
}
}
///Stateless page
class StatelessPage extends StatelessWidget with LifecycleStatelessMixin{
@override
whenShow() {
super.whenShow();
print("LifeNavigatorObserver---Show了");
}
@override
whenHide() {
super.whenHide();
print("LifeNavigatorObserver---Hide了");
}
}
尽情享用吧 😛;