web-dev-qa-db-ja.com

Flutterでバックグラウンドタスクをスケジュールする方法は?

私はこれをたくさん探していましたが、パッケージやバックグラウンドタスクをスケジュールする方法をFlutterで見つけていません。 AndroidにWorkManagerAlarmManagerがあります。

MethodChannelを使用してこれらのクラスにアクセスできることは知っていますが、iOSとAndroid両方で動作するものが必要です。

(モバイルフレームワークにバックグラウンドタスクをスケジュールする機能がないことは非常に残念です)。

16
Gurleen Sethi

あなたがしたいこと、すなわちクロスプラットフォームのスケジューリングは、Flutterの制限ではありません。これはiOSの制限です。これを参照してください SO post これで参照されています GitHubコメント

5
felideon

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 投稿も作成しました。

3
tim
1
jwehrle