Flutter任务管理插件growerp_task的使用
Flutter任务管理插件growerp_task的使用
这是GrowERP系统中的任务/工作流部分。它包含以下文件维护屏幕:
- 工作流
- 待办事项
集成测试
集成测试在示例组件中可用。
它使用本地后端系统。
你也可以使用我们的测试后端系统,设置在 example/assets/cfg/app_settings.json
文件中:
"databaseUrlDebug": "https://backend.growerp.org",
"chatUrlDebug": "wss://chat.growerp.org"
启动测试需要安装并激活 melos
(运行 dart global activate melos
):
melos build_all
melos l10n
cd example
flutter test integration_test
使用示例组件
与集成测试一样,你可以使用本地后端或我们的测试后端。
在使用核心组件之前,你需要创建一个公司,该操作会发送一封包含密码的邮件。使用这个密码登录,然后核心组件会出现在主菜单中。
示例代码
以下是一个完整的示例代码,展示了如何使用 growerp_task
插件:
/*
* This GrowERP software is in the public domain under CC0 1.0 Universal plus a
* Grant of Patent License.
*
* To the extent possible under law, the author(s) have dedicated all
* copyright and related and neighboring rights to this software to the
* public domain worldwide. This software is distributed without any
* warranty.
*
* You should have received a copy of the CC0 Public Domain Dedication
* along with this software (see the LICENSE.md file). If not, see
* <http://creativecommons.org/publicdomain/zero/1.0/>.
*/
import 'package:growerp_core/growerp_core.dart';
import 'package:growerp_models/growerp_models.dart';
import 'package:growerp_order_accounting/growerp_order_accounting.dart';
import 'package:growerp_task/growerp_task.dart';
import 'package:growerp_user_company/growerp_user_company.dart';
import 'package:hive_flutter/hive_flutter.dart';
import 'menu_options.dart';
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:global_configuration/global_configuration.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'router.dart' as router;
import 'package:http/http.dart' as http;
import 'package:package_info_plus/package_info_plus.dart';
Future main() async {
WidgetsFlutterBinding.ensureInitialized();
await GlobalConfiguration().loadFromAsset('app_settings');
PackageInfo packageInfo = await PackageInfo.fromPlatform();
GlobalConfiguration().updateValue('appName', packageInfo.appName);
GlobalConfiguration().updateValue('packageName', packageInfo.packageName);
GlobalConfiguration().updateValue('version', packageInfo.version);
GlobalConfiguration().updateValue('build', packageInfo.buildNumber);
// 可以通过长按主屏幕标题更改后端URL。
SharedPreferences prefs = await SharedPreferences.getInstance();
String ip = prefs.getString('ip') ?? '';
String chat = prefs.getString('chat') ?? '';
String singleCompany = prefs.getString('companyPartyId') ?? '';
if (ip.isNotEmpty) {
late http.Response response;
try {
response = await http.get(Uri.parse('${ip}rest/s1/growerp/Ping'));
if (response.statusCode == 200) {
GlobalConfiguration().updateValue('databaseUrl', ip);
GlobalConfiguration().updateValue('chatUrl', chat);
GlobalConfiguration().updateValue('singleCompany', singleCompany);
debugPrint(
'=== New ip: $ip , chat: $chat company: $singleCompany Updated!');
}
} catch (error) {
debugPrint('===$ip does not respond...not updating databaseUrl: $error');
}
}
await Hive.initFlutter();
Bloc.observer = AppBlocObserver();
runApp(TopApp(
restClient: RestClient(await buildDioClient()),
classificationId: GlobalConfiguration().get("classificationId"),
chatServer: ChatServer(),
title: 'GrowERP Workflow Management.',
router: router.generateRoute,
menuOptions: menuOptions,
extraDelegates: extraDelegates,
screens: screens,
));
}
List<LocalizationsDelegate<dynamic>> extraDelegates = const [
UserCompanyLocalizations.delegate,
];
Map<String, Widget> screens = taskScreens..addAll(orderAccountingScreens);
// {'editTask', TaskServices().editTask(Task())} as Map<String, Widget>;
更多关于Flutter任务管理插件growerp_task的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter任务管理插件growerp_task的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
growerp_task
是一个为 Flutter 应用设计的任务管理插件,旨在帮助开发者轻松集成任务管理功能到他们的应用中。它提供了创建、更新、删除和查询任务的基本功能,适用于各种任务管理场景。
安装插件
首先,你需要在 pubspec.yaml
文件中添加 growerp_task
插件的依赖:
dependencies:
flutter:
sdk: flutter
growerp_task: ^1.0.0 # 请根据实际情况使用最新版本
然后运行 flutter pub get
来安装依赖。
基本用法
1. 初始化插件
在应用启动时,你需要初始化 growerp_task
插件。通常可以在 main.dart
文件的 main
函数中进行初始化。
import 'package:flutter/material.dart';
import 'package:growerp_task/growerp_task.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await GrowerpTask.initialize();
runApp(MyApp());
}
2. 创建任务
你可以使用 GrowerpTask.createTask
方法来创建一个新的任务。
import 'package:growerp_task/growerp_task.dart';
void createTask() async {
Task task = Task(
id: '1',
title: '完成 Flutter 项目',
description: '完成 Flutter 项目的任务管理模块',
dueDate: DateTime.now().add(Duration(days: 7)),
status: TaskStatus.pending,
);
await GrowerpTask.createTask(task);
}
3. 更新任务
你可以使用 GrowerpTask.updateTask
方法来更新一个已有的任务。
void updateTask() async {
Task task = Task(
id: '1',
title: '完成 Flutter 项目',
description: '完成 Flutter 项目的任务管理模块',
dueDate: DateTime.now().add(Duration(days: 7)),
status: TaskStatus.completed,
);
await GrowerpTask.updateTask(task);
}
4. 删除任务
你可以使用 GrowerpTask.deleteTask
方法来删除一个任务。
void deleteTask() async {
await GrowerpTask.deleteTask('1');
}
5. 查询任务
你可以使用 GrowerpTask.getTasks
方法来获取所有任务。
void getTasks() async {
List<Task> tasks = await GrowerpTask.getTasks();
tasks.forEach((task) {
print('Task: ${task.title}, Status: ${task.status}');
});
}
任务状态
growerp_task
插件支持以下几种任务状态:
TaskStatus.pending
: 任务待办TaskStatus.inProgress
: 任务进行中TaskStatus.completed
: 任务已完成
示例应用
以下是一个简单的 Flutter 应用示例,展示了如何使用 growerp_task
插件来管理任务。
import 'package:flutter/material.dart';
import 'package:growerp_task/growerp_task.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await GrowerpTask.initialize();
runApp(TaskManagerApp());
}
class TaskManagerApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: TaskListScreen(),
);
}
}
class TaskListScreen extends StatefulWidget {
[@override](/user/override)
_TaskListScreenState createState() => _TaskListScreenState();
}
class _TaskListScreenState extends State<TaskListScreen> {
List<Task> tasks = [];
[@override](/user/override)
void initState() {
super.initState();
_loadTasks();
}
void _loadTasks() async {
List<Task> loadedTasks = await GrowerpTask.getTasks();
setState(() {
tasks = loadedTasks;
});
}
void _addTask() async {
Task newTask = Task(
id: DateTime.now().toString(),
title: '新任务',
description: '这是一个新任务',
dueDate: DateTime.now().add(Duration(days: 7)),
status: TaskStatus.pending,
);
await GrowerpTask.createTask(newTask);
_loadTasks();
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('任务管理'),
),
body: ListView.builder(
itemCount: tasks.length,
itemBuilder: (context, index) {
Task task = tasks[index];
return ListTile(
title: Text(task.title),
subtitle: Text(task.description),
trailing: IconButton(
icon: Icon(Icons.delete),
onPressed: () async {
await GrowerpTask.deleteTask(task.id);
_loadTasks();
},
),
);
},
),
floatingActionButton: FloatingActionButton(
onPressed: _addTask,
child: Icon(Icons.add),
),
);
}
}