如何在后台 运行 flutter 方法?

how to run flutter methods in background?

我试图连续调用该方法,但是当我锁定 phone 的屏幕或按下主页按钮时,该方法不会再次被调用。所以请建议如何在后台运行方法。

您必须使用 https://pub.dev/packages/background_fetch

等插件

您可以尝试其他类似的插件。

“Background Fetch 是一个非常简单的插件,大约每 15 分钟就会在后台唤醒一个应用程序,提供短时间的后台 running-time。只要 [=18],此插件就会执行您提供的 callbackFn =] 事件发生。"

您将为 android 个使用 Flutter 的应用程序使用 android 闹钟管理器

https://pub.dev/packages/android_alarm_manager

import 'package:android_alarm_manager/android_alarm_manager.dart';

void printHello() {
  final DateTime now = DateTime.now();
  final int isolateId = Isolate.current.hashCode;
  print("[$now] Hello, world! isolate=${isolateId} function='$printHello'");
}

main() async {
  final int helloAlarmID = 0;
  await AndroidAlarmManager.initialize();
  runApp(...);
  await AndroidAlarmManager.periodic(const Duration(minutes: 1), helloAlarmID, printHello);
}

如你所见,很简单,你只需要创建一个函数并使用 AndroidAlarmManager.periodic 调用它,记得在你的 android 清单上添加权限。

如果您需要 Android 和 iOS 的解决方案,您可以使用平台渠道 https://flutter.dev/docs/development/platform-integration/platform-channels 您可以使用平台通道从 android 和 iOS 调用本机代码,例如您可以创建本机后台服务并从 Flutter 调用它。