This commit is contained in:
jyuesong
2022-01-13 18:31:00 +08:00
parent 3ef05709ea
commit 6555031948
4 changed files with 44 additions and 7 deletions

View File

@@ -51,4 +51,12 @@ class Api {
static Future<HttpResponse<NullResponse>> delTask(String cron) async {
return await Http.delete<NullResponse>(Url.ADD_TASK, [cron]);
}
static Future<HttpResponse<NullResponse>> pinTask(String cron) async {
return await Http.put<NullResponse>(Url.PIN_TASK, [cron]);
}
static Future<HttpResponse<NullResponse>> unpinTask(String cron) async {
return await Http.put<NullResponse>(Url.UNPIN_TASK, [cron]);
}
}

View File

@@ -5,6 +5,8 @@ class Url {
static const STOP_TASKS = "/api/crons/stop";
static const TASK_DETAIL = "/api/crons/";
static const ADD_TASK = "/api/crons";
static const PIN_TASK = "/api/crons/pin";
static const UNPIN_TASK = "/api/crons/unpin";
static INTIME_LOG(String cronId) {
return "/api/crons/$cronId/log";

View File

@@ -157,10 +157,9 @@ class TaskItemCell extends StatelessWidget {
),
child: Container(
color: bean.isPinned == 1 ? ref.watch(themeProvider).themeColor.searchBarBg() : Colors.transparent,
margin: const EdgeInsets.only(bottom: 7, top: 7),
padding: const EdgeInsets.symmetric(
horizontal: 15,
vertical: 5,
vertical: 8,
),
child: Column(
mainAxisSize: MainAxisSize.min,
@@ -204,7 +203,7 @@ class TaskItemCell extends StatelessWidget {
],
),
const SizedBox(
height: 5,
height: 8,
),
Text(
bean.schedule ?? "",
@@ -324,6 +323,7 @@ class TaskItemCell extends StatelessWidget {
child: Text(bean.isPinned! == 0 ? "置顶" : "取消置顶"),
onPressed: () {
Navigator.pop(context);
pinTask();
},
),
],
@@ -331,6 +331,10 @@ class TaskItemCell extends StatelessWidget {
);
}
void pinTask() {
ref.read(taskProvider).pinTask(bean.sId!, bean.isPinned!);
}
void delTask(BuildContext context, WidgetRef ref) {
showCupertinoDialog(
context: context,

View File

@@ -1,12 +1,8 @@
import 'dart:convert';
import 'dart:math';
import 'package:flutter_riverpod/flutter_riverpod.dart';
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());
@@ -42,6 +38,9 @@ class TaskViewModel extends BaseViewModel {
list.sort((a, b) {
return a.status!.compareTo(b.status!);
});
list.sort((a, b) {
return b.isPinned!.compareTo(a.isPinned!);
});
}
Future<void> runCrons(String cron) async {
@@ -85,4 +84,28 @@ class TaskViewModel extends BaseViewModel {
bean.command = result.command;
notifyListeners();
}
void pinTask(String sId, int isPinned) async {
if (isPinned == 1) {
HttpResponse<NullResponse> response = await Api.unpinTask(sId);
if (response.success) {
list.firstWhere((element) => element.sId == sId).isPinned = 0;
sortList();
success();
} else {
failToast(response.message, notify: true);
}
} else {
HttpResponse<NullResponse> response = await Api.pinTask(sId);
if (response.success) {
list.firstWhere((element) => element.sId == sId).isPinned = 1;
sortList();
success();
} else {
failToast(response.message, notify: true);
}
}
}
}