一尘不染

如何检查我的小部件屏幕何时能像Android中的onResume一样在可见性中波动

flutter

在android中,如果有活动可见,onResume则称为。什么是相当于方法onResume颤振

我需要知道小部件屏幕何时可见,以便可以基于此自动播放视频。我可能会转到另一个窗口小部件屏幕,当我回来时它将自动播放。

我的方法是播放视频,didUpdateWidgetdidUpdateWidget即使窗口小部件屏幕不可见,也会被调用。

注意:
我不是在询问didChangeAppLifecycleState来自,WidgetsBindingObserver因为它为onResume应用程序生命周期提供了etc回调,而不是特定的小部件屏幕。


阅读 220

收藏
2020-08-13

共1个答案

一尘不染

所有的问题都解决了。

将观察者从小部件树(materialappwidget)的根放置在导航器上。

如果您需要更多说明,请访问此链接:https : //api.flutter.dev/flutter/widgets/RouteObserver-
class.html

我已经在我的项目中实现了它,并且工作得很好@ Sp4Rx

// Register the RouteObserver as a navigation observer.
final RouteObserver<PageRoute> routeObserver = 
  RouteObserver<PageRoute>();
  void main() {
runApp(MaterialApp(
home: Container(),
navigatorObservers: [routeObserver],
 ));
   }

 class RouteAwareWidget extends StatefulWidget {
  State<RouteAwareWidget> createState() => RouteAwareWidgetState();
 }

 // Implement RouteAware in a widget's state and subscribe it to 
  the 
  RouteObserver.
  class RouteAwareWidgetState extends State<RouteAwareWidget> with 
 RouteAware {

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

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

@override
void didPush() {
  // Route was pushed onto navigator and is now topmost route.
}

 @override
void didPopNext() {
  // Covering route was popped off the navigator.
 }

@override
Widget build(BuildContext context) => Container();

 }
2020-08-13