Flutter任务管理插件flutter_tasker的使用
Flutter任务管理插件flutter_tasker的使用
使用
首先检查是否具有相关的权限!
使用 FlutterTasker.checkStatus()
获取任务器状态 (TaskerStatus
) 来检查是否可以触发任务。
使用 FlutterTasker.checkCommandPermission()
检查任务器命令系统的权限是否被授予 (bool
)。
请求相关的权限如果需要!
使用 FlutterTasker.requestCommandPermission()
触发一个权限对话框以请求命令系统权限。
使用 FlutterTasker.openExternalAccessSetting()
打开任务器中的外部访问菜单以便用户启用它。
请求并触发任务
使用 FlutterTasker.getTasks()
获取命名任务列表 (List<String>
).
使用 FlutterTasker.triggerTask(String task)
触发一个任务。
通过任务器命令系统发送命令
使用 FlutterTasker.sendCommand(String command)
发送命令。
如何安装
在插件的 Android 清单文件中已经声明了相关的权限:
<uses-permission android:name="net.dinglisch.android.tasker.PERMISSION_SEND_COMMAND"/>
<uses-permission android:name="net.dinglisch.android.tasker.PERMISSION_RUN_TASKS"/>
<queries>
<package android:name="net.dinglisch.android.taskerm" />
</queries>
此外,还需要在任务器设置中启用选项 允许外部访问
。提供辅助函数 (FlutterTasker.checkStatus()
和 FlutterTasker.openExternalAccessSetting()
) 可用于检查此选项是否已启用,并为用户提供打开相关菜单的功能。
示例
查看示例应用程序以获取简单的实现示例。
许可证
本项目根据 BSD-3 Clause 许可证授权,完整的许可证文本可以在包含的 LICENSE 文件中找到。
TaskerIntent.java
文件由任务器开发者在此处提供:https://tasker.joaoapps.com/code/TaskerIntent.java
贡献
问题和拉取请求总是欢迎的!
如果你觉得这个项目对你有帮助,请考虑请我喝杯咖啡。
- PayPal
示例代码
以下是示例代码:
// Copyright 2022 Pepe Tiebosch (byme.dev/Jellepepe). All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:flutter/material.dart';
import 'package:flutter_tasker/flutter_tasker.dart';
void main() {
runApp(
const MaterialApp(
home: MyApp(),
),
);
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String command = '';
bool commandPermission = false;
TaskerStatus status = TaskerStatus.invalid;
List<String> tasks = [];
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('任务器插件示例'),
),
body: Column(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
TextButton(
onPressed: () {
FlutterTasker.checkStatus().then((value) {
setState(() {
status = value;
});
});
},
child: Text('检查状态: $status'),
),
TextButton(
onPressed: () {
FlutterTasker.checkCommandPermission().then((value) {
setState(() {
commandPermission = value;
});
});
},
child: Text("检查命令权限: ${commandPermission ? '已授予' : '缺少'}"),
),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
TextButton(
onPressed: () {
FlutterTasker.openExternalAccessSetting().then((value) {
ScaffoldMessenger.of(context)
.showSnackBar(SnackBar(content: Text('成功打开外部访问菜单: $value')));
});
},
child: const Text('打开外部访问菜单'),
),
TextButton(
onPressed: () {
FlutterTasker.requestCommandPermission().then((value) {
ScaffoldMessenger.of(context)
.showSnackBar(SnackBar(content: Text('成功请求权限: $value')));
});
},
child: const Text('请求命令权限'),
),
],
),
TextButton(
onPressed: () {
FlutterTasker.getTasks().then((value) {
ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text('任务: $value')));
setState(() {
tasks = value ?? [];
});
});
},
child: const Text('获取任务'),
),
Column(
children: [
for (String task in tasks)
TextButton(
onPressed: () {
FlutterTasker.triggerTask(task);
},
child: Text('运行任务: $task'),
)
],
),
const Text('命令:'),
TextField(
decoration: const InputDecoration(
labelText: '命令',
),
onChanged: (value) {
command = value;
},
),
],
),
floatingActionButton: FloatingActionButton(
child: const Icon(Icons.send),
onPressed: () {
try {
FlutterTasker.sendCommand(command).then(
(value) => ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text('命令结果: $value'))),
);
} catch (e) {
ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text('命令失败: $e')));
}
},
),
);
}
}
更多关于Flutter任务管理插件flutter_tasker的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter任务管理插件flutter_tasker的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
flutter_tasker
是一个用于在 Flutter 应用中管理后台任务的插件。它允许你在应用后台执行任务,例如数据同步、定时任务等。以下是如何使用 flutter_tasker
插件的详细步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 flutter_tasker
插件的依赖:
dependencies:
flutter:
sdk: flutter
flutter_tasker: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 配置 Android 和 iOS
为了确保插件在 Android 和 iOS 上正常工作,你需要进行一些配置。
Android 配置
在 android/app/src/main/AndroidManifest.xml
文件中,添加以下权限:
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
iOS 配置
在 ios/Runner/Info.plist
文件中,添加以下键值对:
<key>UIBackgroundModes</key>
<array>
<string>fetch</string>
<string>processing</string>
</array>
3. 初始化插件
在你的 Dart 代码中初始化 flutter_tasker
插件:
import 'package:flutter_tasker/flutter_tasker.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await FlutterTasker.initialize();
runApp(MyApp());
}
4. 定义后台任务
你可以定义一个后台任务,例如每隔一定时间执行一次的任务:
void myBackgroundTask() {
print("Background task is running!");
// 在这里执行你的后台任务逻辑
}
5. 注册后台任务
使用 FlutterTasker
注册你的后台任务:
FlutterTasker.registerTask(
taskName: 'my_background_task',
callback: myBackgroundTask,
frequency: TaskFrequency.every15Minutes, // 设置任务执行频率
);
6. 启动和停止任务
你可以手动启动或停止后台任务:
// 启动任务
FlutterTasker.startTask('my_background_task');
// 停止任务
FlutterTasker.stopTask('my_background_task');
7. 处理任务结果
你可以在任务完成后处理任务结果:
FlutterTasker.onTaskComplete.listen((taskName) {
print('Task $taskName completed');
});
8. 处理设备重启
如果设备重启,你可能需要重新注册任务。可以在应用启动时检查并重新注册任务:
void checkAndRegisterTasks() async {
if (await FlutterTasker.isTaskRegistered('my_background_task')) {
print('Task is already registered');
} else {
FlutterTasker.registerTask(
taskName: 'my_background_task',
callback: myBackgroundTask,
frequency: TaskFrequency.every15Minutes,
);
}
}
9. 示例代码
以下是一个完整的示例代码:
import 'package:flutter/material.dart';
import 'package:flutter_tasker/flutter_tasker.dart';
void myBackgroundTask() {
print("Background task is running!");
// 在这里执行你的后台任务逻辑
}
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await FlutterTasker.initialize();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Flutter Tasker Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: () {
FlutterTasker.registerTask(
taskName: 'my_background_task',
callback: myBackgroundTask,
frequency: TaskFrequency.every15Minutes,
);
FlutterTasker.startTask('my_background_task');
},
child: Text('Start Background Task'),
),
ElevatedButton(
onPressed: () {
FlutterTasker.stopTask('my_background_task');
},
child: Text('Stop Background Task'),
),
],
),
),
),
);
}
}