私はこれをたくさん探していましたが、パッケージやバックグラウンドタスクをスケジュールする方法をFlutterで見つけていません。 AndroidにWorkManager
、AlarmManager
があります。
MethodChannel
を使用してこれらのクラスにアクセスできることは知っていますが、iOSとAndroid両方で動作するものが必要です。
(モバイルフレームワークにバックグラウンドタスクをスケジュールする機能がないことは非常に残念です)。
あなたがしたいこと、すなわちクロスプラットフォームのスケジューリングは、Flutterの制限ではありません。これはiOSの制限です。これを参照してください SO post これで参照されています GitHubコメント 。
Medium blogpost があり、これを行う方法を説明しています。
しかし、設定するのは非常に複雑すぎると考えたため、これを支援する plugin を作成しました。
//Provide a top level function or static function.
//This function will be called by Android and will return the value you provided when you registered the task.
//See below
void callbackDispatcher() {
Workmanager.executeTask((task) {
print("Native echoed: $task");
return Future.value(true);
});
}
Workmanager.initialize(
callbackDispatcher, //the top level function.
isInDebugMode: true //If enabled it will post a notification whenever the job is running. Handy for debugging jobs
)
AndroidのWorkmanagerとiOS performFetchをサポートしています
現時点では、Androidプロジェクトでのみ機能しますが、まもなくiOSを検討しています。
この回答が利用可能になったら更新します。
IOSもサポートしています。まだ初期のアルファですが、試してみてください。
無料の Medium 投稿も作成しました。
Flutter Schedulerライブラリは役立ちますか?
https://docs.flutter.io/flutter/scheduler/scheduler-library.html
または、このプラグイン: https://github.com/flutter/plugins/tree/master/packages/Android_alarm_manager