Flutter 带有StateFull小部件的flatterworkmanager后台获取示例
我在StateFull小部件中有一个名为control的函数。我想每隔15分钟与WorkManager一起运行此函数 如何从callbackDispatcher函数调用控制函数? 我静态地向Statefull小部件添加了一个流,然后监听它,但它不起作用 主屏幕.dart文件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
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发送数据。