Flutter 带有StateFull小部件的flatterworkmanager后台获取示例

Flutter 带有StateFull小部件的flatterworkmanager后台获取示例,flutter,background-fetch,flutter-workmanager,Flutter,Background Fetch,Flutter Workmanager,我在StateFull小部件中有一个名为control的函数。我想每隔15分钟与WorkManager一起运行此函数 如何从callbackDispatcher函数调用控制函数? 我静态地向Statefull小部件添加了一个流,然后监听它,但它不起作用 主屏幕.dart文件 import 'package:flutter/material.dart'; import 'package:workmanager/workmanager.dart'; const taskKontrol = &quo

我在StateFull小部件中有一个名为control的函数。我想每隔15分钟与WorkManager一起运行此函数

如何从callbackDispatcher函数调用控制函数? 我静态地向Statefull小部件添加了一个流,然后监听它,但它不起作用

主屏幕.dart文件

import 'package:flutter/material.dart';
import 'package:workmanager/workmanager.dart';

const taskKontrol = "control";

class HomeScreen extends StatefulWidget {
  @override
  _HomeScreenState createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  @override
  Widget build(BuildContext context) {
    return Container();
  }

  @override
  void initState() {
    super.initState();
    setupWorkManager();
  }

  void control() async
  {
    //... my code control is here
  }

}

void setupWorkManager() async {
  await Workmanager.initialize(callbackDispatcher, isInDebugMode: true);
  Workmanager.registerPeriodicTask(taskKontrol, taskKontrol,
      frequency: Duration(seconds: 10),
      existingWorkPolicy: ExistingWorkPolicy.append
  );
}


void callbackDispatcher() {
  Workmanager.executeTask((taskName, inputData) async {
    switch(taskName)
    {
      case taskKontrol:
        // How can I call the control function from here?
        print("control from workmanager");
        break;
    }
    return Future.value(true);
  });
}
导入“包装:颤振/材料.省道”;
导入“包:workmanager/workmanager.dart”;
const taskKontrol=“控制”;
类主屏幕扩展StatefulWidget{
@凌驾
_HomeScreenState createState()=>\u HomeScreenState();
}
类_homescrenstate扩展状态{
@凌驾
小部件构建(构建上下文){
返回容器();
}
@凌驾
void initState(){
super.initState();
setupWorkManager();
}
void control()异步
{
//…我的代码控制在这里
}
}
void setupWorkManager()异步{
等待Workmanager.initialize(callbackDispatcher,isInDebugMode:true);
Workmanager.RegisterPeriodictTask(taskKontrol,taskKontrol,
频率:持续时间(秒:10),
existingWorkPolicy:existingWorkPolicy.append
);
}
void callbackDispatcher(){
Workmanager.executeTask((任务名,输入数据)异步{
开关(任务名称)
{
案例任务控制:
//如何从这里调用控制函数?
打印(“来自workmanager的控制”);
打破
}
返回未来值(true);
});
}

用于向workmanager发送数据和从workmanager发送数据。