异步功能在WorkManager中不起作用

问题描述

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

这是我的顶层功能

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

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

这是我的初始化状态,是我初始化工作经理的地方。

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(” execute updateUserLoc“);”时在功能下方,它会被打印,但是在功能下方,它不会被打印。

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

解决方法

您需要适当地等待您的未来:

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

    return true;
  });
}