如何检查我的小部件屏幕何时在 flutter 中可见,例如 Android 中的 onResume

2024-02-19

在 Android 中,如果 Activity 可见onResume叫做。等效方法是什么onResume in Flutter?

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

我的方法是播放视频didUpdateWidget but didUpdateWidget即使小部件屏幕不可见,每次也会被调用。

Note:我不是问关于didChangeAppLifecycleState from WidgetsBindingObserver因为它给出了onResume等等应用程序生命周期的回调,而不是特定的小部件屏幕。


所有的问题都解决了。

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

如果您需要更多解释,请点击此链接:https://api.flutter.dev/flutter/widgets/RouteObserver-class.html 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();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检查我的小部件屏幕何时在 flutter 中可见,例如 Android 中的 onResume 的相关文章

随机推荐