在安卓系统中,如果活动可见,则调用onResume.FlutteronResume的等效方法是什么?

我需要知道我的小部件屏幕何时可见,这样我就可以根据它自动播放视频.我可能会go 另一个小部件屏幕,当我回来时,它会自动播放.

我的方法是在didUpdateWidget中播放视频,但每次即使小部件屏幕不可见,也会调用didUpdateWidget.

Note:我不是在问WidgetsBindingObserver中的didChangeAppLifecycleState,因为它为应用程序生命周期提供了onResume个ETC回调,而不是一个特定的小部件屏幕.

推荐答案

所有的问题都解决了.

将一个观察者放在导航器上,该观察者来自小部件树的根(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();
}

Flutter相关问答推荐

我如何才能收到每天重复的预定通知?

为什么Flutter InAppWebView中的DatePicker看起来很旧?

如何将Xpriter代码页更改为代码页27?

flutter -当使用SingleChildScrollView包装我的列小部件时,它不会填充整个高度

为什么当我使用Riverpod更新状态时,列表会被刷新?

Firebase WHERE过滤器在日期字段中不起作用

如何使listview.builder在筛选列表后实时更新

带有命名参数的回调函数不起作用

Flutter记录返回类型问题

Firestore 使用 Flutter 以奇怪的格式保存数据

如何计算 Firestore 集合中的文档数量?

Android 模拟器在 Apple M2 芯片 EXC_BAD_ACCESS / KERN_INVALID_ADDRESS 上随机崩溃

对话框打开时如何使背景模糊?

我想在一个屏幕上有两个相同区域的列表视图,我该如何设置?

Flutter 错误:正文可能正常完成,导致返回null

如何在手势检测器中获得涟漪效应

如何在 flutter 中制作这种类型的扩展瓦片

一个或多个插件需要更高的 Android SDK 版本

在 Flutter 中单击时切换按钮 colored颜色 没有改变

如何从我的Flutter 项目中删除错误?