【问题标题】:Async function not working in WorkManager异步功能在 WorkManager 中不起作用
【发布时间】:2020-08-12 10:17:19
【问题描述】:

我正在使用包 WorkManager 来执行一些后台任务。(更新用户的位置)。 https://pub.dev/packages/workmanager

这是我的顶级函数。

void callbackDispatcher() {
  Workmanager.executeTask((task, inputData) {
    _HomeScreenState().updateUserLoc();

    return Future.value(true);
  });
}

这是我的 initstate,我在这里初始化了 workmanager。

void initState() {
    super.initState();

    
    Workmanager.initialize(
      callbackDispatcher,
      isInDebugMode: true,
    );

    Workmanager.registerPeriodicTask(
      "1",
"h"
 
      frequency: Duration(minutes: 15),
    );

这是我的 updateUserLoc() 函数。

updateUserLoc() async {
    await GetusersLocation();

    GeoFirePoint point = geo.point(latitude: lat, longitude: long);
    _firestore.collection('locations').document(widget.userid).setData(
      {'position': point.data},
      merge: true, 
    );

    print("executing the updateUserLoc");
  }

这不起作用,

当我放置 "print("执行 updateUserLoc");"就在函数下方,它会被打印,但在下方,它不会。

我在这里做错了什么。 请帮忙。

【问题讨论】:

    标签: firebase flutter dart android-workmanager


    【解决方案1】:

    你需要好好等待你的未来:

    void callbackDispatcher() {
      Workmanager.executeTask((task, inputData) async {
        await _HomeScreenState().updateUserLoc();
    
        return true;
      });
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-25
      • 2022-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多