我正在尝试通过按钮触发一些后台任务,但发现Flutter的workmanager插件非常难以调试。它偶尔可以工作,但这种情况很少。
我正在使用这个基本应用程序进行测试:
import 'package:flutter/material.dart';
import 'package:workmanager/workmanager.dart';
const task1 = "simpleTask";
void main() {
WidgetsFlutterBinding.ensureInitialized();
Workmanager.initialize(
callbackDispatcher,
isInDebugMode: true,
);
//Workmanager.registerPeriodicTask("1", task1, initialDelay: Duration(seconds: 10), frequency: Duration(minutes: 15));
//Workmanager.registerOneOffTask("1", task1, initialDelay: Duration(seconds: 5));
runApp(MaterialApp(
home: Scaffold(
body: Container(
color: Colors.blueAccent[400],
child: Center(
child: RaisedButton(
child: Text("create notification in five seconds"),
onPressed: () {
Workmanager.registerOneOffTask("1", task1, initialDelay: Duration(seconds: 5));
},
),
),
),
),
));}
void callbackDispatcher() {
Workmanager.executeTask((task, inputData) {
print("it's doing the task");
switch (task) {
case task1:
print(task1);
break;
case Workmanager.iOSBackgroundTask:
print("iOS background fetch delegate ran");
break;
}
return Future.value(true);
});
}
我试图从一个按钮中触发一个后台任务,因为之前注释掉的两行代码方式不能正常工作。而且我之前从来没有让Workmanager.registerPeriodicTask
起作用过。可能是由于初始延迟时间不会在结束时启动第一个任务,而是开始15分钟的计时器,但测试非常麻烦,因为我必须等待至少15分钟。
我是否遗漏了某个命令或者缺失了必要的await
或其他内容?
编辑:我刚刚在Android Studio模拟器上进行了测试,所有通知都按照单次和周期性任务的预期工作,所以我认为问题可能与手机有关。但我真的不确定该怎么做。