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/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/common_dialog.dart';
|
||||||
import 'package:qinglong_app/base/http/api.dart';
|
import 'package:qinglong_app/base/http/api.dart';
|
||||||
import 'package:qinglong_app/base/http/http.dart';
|
import 'package:qinglong_app/base/http/http.dart';
|
||||||
import 'package:qinglong_app/base/ql_app_bar.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_bean.dart';
|
||||||
import 'package:qinglong_app/module/task/task_detail/task_detail_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;
|
final TaskBean? taskBean;
|
||||||
|
|
||||||
const AddTaskPage({Key? key, this.taskBean}) : super(key: key);
|
const AddTaskPage({Key? key, this.taskBean}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<AddTaskPage> createState() => _AddTaskPageState();
|
ConsumerState<AddTaskPage> createState() => _AddTaskPageState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _AddTaskPageState extends State<AddTaskPage> {
|
class _AddTaskPageState extends ConsumerState<AddTaskPage> {
|
||||||
late TaskBean taskBean;
|
late TaskBean taskBean;
|
||||||
|
|
||||||
final TextEditingController _nameController = TextEditingController();
|
final TextEditingController _nameController = TextEditingController();
|
||||||
@@ -192,7 +193,8 @@ class _AddTaskPageState extends State<AddTaskPage> {
|
|||||||
|
|
||||||
if (response.success) {
|
if (response.success) {
|
||||||
successDialog(context, "操作成功").then((value) {
|
successDialog(context, "操作成功").then((value) {
|
||||||
Navigator.of(context).pop(response.bean);
|
ref.read(taskProvider).updateBean(taskBean);
|
||||||
|
Navigator.of(context).pop();
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
failDialog(context, response.message ??"");
|
failDialog(context, response.message ??"");
|
||||||
|
|||||||
@@ -33,7 +33,6 @@ class _TaskPageState extends State<TaskPage> {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return BaseStateWidget<TaskViewModel>(
|
return BaseStateWidget<TaskViewModel>(
|
||||||
builder: (ref, model, child) {
|
builder: (ref, model, child) {
|
||||||
|
|
||||||
return RefreshIndicator(
|
return RefreshIndicator(
|
||||||
onRefresh: () async {
|
onRefresh: () async {
|
||||||
return model.loadData(false);
|
return model.loadData(false);
|
||||||
@@ -48,7 +47,7 @@ class _TaskPageState extends State<TaskPage> {
|
|||||||
TaskBean item = model.list[index - 1];
|
TaskBean item = model.list[index - 1];
|
||||||
|
|
||||||
if ((item.name == null || item.name!.contains(_searchKey ?? "")) || (item.command == null || item.command!.contains(_searchKey ?? ""))) {
|
if ((item.name == null || item.name!.contains(_searchKey ?? "")) || (item.command == null || item.command!.contains(_searchKey ?? ""))) {
|
||||||
return TaskItemCell(item);
|
return TaskItemCell(item, ref);
|
||||||
} else {
|
} else {
|
||||||
return const SizedBox.shrink();
|
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 TaskBean bean;
|
||||||
|
final WidgetRef ref;
|
||||||
|
|
||||||
const TaskItemCell(this.bean, {Key? key}) : super(key: key);
|
const TaskItemCell(this.bean, this.ref, {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();
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@@ -317,15 +304,7 @@ class _TaskItemCellState extends ConsumerState<TaskItemCell> {
|
|||||||
child: const Text('编辑'),
|
child: const Text('编辑'),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
Navigator.pop(context);
|
Navigator.pop(context);
|
||||||
Navigator.of(context).pushNamed(Routes.route_AddTask, arguments: bean).then((value) {
|
Navigator.of(context).pushNamed(Routes.route_AddTask, arguments: bean);
|
||||||
if (value != null) {
|
|
||||||
var result = value as TaskDetailBean;
|
|
||||||
bean.name = result.name;
|
|
||||||
bean.schedule = result.schedule;
|
|
||||||
bean.command = result.command;
|
|
||||||
setState(() {});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
CupertinoActionSheetAction(
|
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/api.dart';
|
||||||
import 'package:qinglong_app/base/http/http.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_bean.dart';
|
||||||
|
import 'package:qinglong_app/module/task/task_detail/task_detail_bean.dart';
|
||||||
|
|
||||||
var taskProvider = ChangeNotifierProvider((ref) => TaskViewModel());
|
var taskProvider = ChangeNotifierProvider((ref) => TaskViewModel());
|
||||||
|
|
||||||
class TaskViewModel extends BaseViewModel {
|
class TaskViewModel extends BaseViewModel {
|
||||||
List<TaskBean> list = [];
|
List<TaskBean> list = [];
|
||||||
|
|
||||||
String temp = "sadad";
|
|
||||||
|
|
||||||
Future<void> loadData([isLoading = true]) async {
|
Future<void> loadData([isLoading = true]) async {
|
||||||
if (isLoading) {
|
if (isLoading) {
|
||||||
loading(notify: true);
|
loading(notify: true);
|
||||||
@@ -74,4 +73,16 @@ class TaskViewModel extends BaseViewModel {
|
|||||||
failed(result.message, notify: true);
|
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