This commit is contained in:
jyuesong
2022-01-13 18:10:46 +08:00
parent e8956e5ff1
commit 3ef05709ea
3 changed files with 25 additions and 33 deletions

View File

@@ -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 ??"");

View File

@@ -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(

View File

@@ -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();
}
} }