mirror of
https://github.com/qinglong-app/qinglong_app.git
synced 2025-10-09 16:48:19 +08:00
add
This commit is contained in:
@@ -1,22 +1,23 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:qinglong_app/base/common_dialog.dart';
|
||||
import 'package:qinglong_app/base/http/api.dart';
|
||||
import 'package:qinglong_app/base/http/http.dart';
|
||||
import 'package:qinglong_app/base/ql_app_bar.dart';
|
||||
import 'package:qinglong_app/module/task/task_bean.dart';
|
||||
import 'package:qinglong_app/module/task/task_detail/task_detail_bean.dart';
|
||||
import 'package:qinglong_app/module/task/task_viewmodel.dart';
|
||||
|
||||
class AddTaskPage extends StatefulWidget {
|
||||
class AddTaskPage extends ConsumerStatefulWidget {
|
||||
final TaskBean? taskBean;
|
||||
|
||||
const AddTaskPage({Key? key, this.taskBean}) : super(key: key);
|
||||
|
||||
@override
|
||||
State<AddTaskPage> createState() => _AddTaskPageState();
|
||||
ConsumerState<AddTaskPage> createState() => _AddTaskPageState();
|
||||
}
|
||||
|
||||
class _AddTaskPageState extends State<AddTaskPage> {
|
||||
class _AddTaskPageState extends ConsumerState<AddTaskPage> {
|
||||
late TaskBean taskBean;
|
||||
|
||||
final TextEditingController _nameController = TextEditingController();
|
||||
@@ -192,7 +193,8 @@ class _AddTaskPageState extends State<AddTaskPage> {
|
||||
|
||||
if (response.success) {
|
||||
successDialog(context, "操作成功").then((value) {
|
||||
Navigator.of(context).pop(response.bean);
|
||||
ref.read(taskProvider).updateBean(taskBean);
|
||||
Navigator.of(context).pop();
|
||||
});
|
||||
} else {
|
||||
failDialog(context, response.message ??"");
|
||||
|
||||
@@ -33,7 +33,6 @@ class _TaskPageState extends State<TaskPage> {
|
||||
Widget build(BuildContext context) {
|
||||
return BaseStateWidget<TaskViewModel>(
|
||||
builder: (ref, model, child) {
|
||||
|
||||
return RefreshIndicator(
|
||||
onRefresh: () async {
|
||||
return model.loadData(false);
|
||||
@@ -48,7 +47,7 @@ class _TaskPageState extends State<TaskPage> {
|
||||
TaskBean item = model.list[index - 1];
|
||||
|
||||
if ((item.name == null || item.name!.contains(_searchKey ?? "")) || (item.command == null || item.command!.contains(_searchKey ?? ""))) {
|
||||
return TaskItemCell(item);
|
||||
return TaskItemCell(item, ref);
|
||||
} else {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
@@ -102,23 +101,11 @@ class _TaskPageState extends State<TaskPage> {
|
||||
}
|
||||
}
|
||||
|
||||
class TaskItemCell extends ConsumerStatefulWidget {
|
||||
class TaskItemCell extends StatelessWidget {
|
||||
final TaskBean bean;
|
||||
final WidgetRef ref;
|
||||
|
||||
const TaskItemCell(this.bean, {Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
_TaskItemCellState createState() => _TaskItemCellState();
|
||||
}
|
||||
|
||||
class _TaskItemCellState extends ConsumerState<TaskItemCell> {
|
||||
late TaskBean bean;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
bean = widget.bean;
|
||||
super.initState();
|
||||
}
|
||||
const TaskItemCell(this.bean, this.ref, {Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
@@ -317,15 +304,7 @@ class _TaskItemCellState extends ConsumerState<TaskItemCell> {
|
||||
child: const Text('编辑'),
|
||||
onPressed: () {
|
||||
Navigator.pop(context);
|
||||
Navigator.of(context).pushNamed(Routes.route_AddTask, arguments: bean).then((value) {
|
||||
if (value != null) {
|
||||
var result = value as TaskDetailBean;
|
||||
bean.name = result.name;
|
||||
bean.schedule = result.schedule;
|
||||
bean.command = result.command;
|
||||
setState(() {});
|
||||
}
|
||||
});
|
||||
Navigator.of(context).pushNamed(Routes.route_AddTask, arguments: bean);
|
||||
},
|
||||
),
|
||||
CupertinoActionSheetAction(
|
||||
|
||||
@@ -6,14 +6,13 @@ import 'package:qinglong_app/base/base_viewmodel.dart';
|
||||
import 'package:qinglong_app/base/http/api.dart';
|
||||
import 'package:qinglong_app/base/http/http.dart';
|
||||
import 'package:qinglong_app/module/task/task_bean.dart';
|
||||
import 'package:qinglong_app/module/task/task_detail/task_detail_bean.dart';
|
||||
|
||||
var taskProvider = ChangeNotifierProvider((ref) => TaskViewModel());
|
||||
|
||||
class TaskViewModel extends BaseViewModel {
|
||||
List<TaskBean> list = [];
|
||||
|
||||
String temp = "sadad";
|
||||
|
||||
Future<void> loadData([isLoading = true]) async {
|
||||
if (isLoading) {
|
||||
loading(notify: true);
|
||||
@@ -74,4 +73,16 @@ class TaskViewModel extends BaseViewModel {
|
||||
failed(result.message, notify: true);
|
||||
}
|
||||
}
|
||||
|
||||
void updateBean(TaskBean result) {
|
||||
if (result.sId == null) {
|
||||
loadData(false);
|
||||
return;
|
||||
}
|
||||
TaskBean bean = list.firstWhere((element) => element.sId == result.sId);
|
||||
bean.name = result.name;
|
||||
bean.schedule = result.schedule;
|
||||
bean.command = result.command;
|
||||
notifyListeners();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user