当用户离开Flutter中的当前屏幕时,调用一个函数



我想调用一个函数,或者在用户离开当前屏幕时得到通知,无论他/她是向后导航,即在应用程序中弹出屏幕还是向前导航。

您需要实现一个路由观察器。

首先你需要定义一个观察者:

final RouteObserver<PageRoute> routeObserver = RouteObserver<PageRoute>();

然后你需要将观察者添加到你的材料应用程序中:

MaterialApp(
navigatorObservers: [routeObserver], ...

好的。现在,当您创建一个屏幕时,您可以将RouteAware添加到您的状态中。您需要订阅观察者,并对其进行处理。因此,您需要一个有状态的小部件。假设你有一个名为MyScreen的屏幕,它看起来像这样:

class MyScreen extends StatefulWidget {
@override
_MyScreenState createState() => _MyScreenState();
}
class _MyScreenState extends State<MyScreen> with RouteAware{
@override

void didChangeDependencies() {
routeObserver.subscribe(this, ModalRoute.of(context));
super.didChangeDependencies();
}

@override
void dispose() {
routeObserver.unsubscribe(this);
super.dispose();
} ...

太棒了!现在您可以访问这些额外的事件,例如:

@override
void didPopNext() {
super.didPopNext();
}
@override
void didPush() {
super.didPush();
}
@override
void didPushNext() {
super.didPushNext();
}
@override
void didPop() {
super.didPop();
}

如果有什么不清楚的地方,请告诉我。

您可以使用dispose((生命周期函数

API 报价

dispose方法当此对象从树中永久删除时调用。

例如,当用户离开屏幕时,我用它来取消订阅计时器

示例:

@override
void dispose() {
super.dispose();
timer.cancel();
}

最新更新