mirror of
https://mirror.ghproxy.com/https://github.com/StarCitizenToolBox/app.git
synced 2024-10-23 11:24:25 +08:00
下载管理器 操作更新
This commit is contained in:
parent
e0ca3377ac
commit
3b025e7b3e
@ -14,6 +14,34 @@ class DownloadsUI extends BaseUI<DownloadsUIModel> {
|
|||||||
content: Column(
|
content: Column(
|
||||||
children: [
|
children: [
|
||||||
const SizedBox(height: 12),
|
const SizedBox(height: 12),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.end,
|
||||||
|
children: [
|
||||||
|
for (final item in <MapEntry<String, IconData>, String>{
|
||||||
|
if (model.tasks.isNotEmpty)
|
||||||
|
const MapEntry("pause_all", FluentIcons.pause): "暂停全部"
|
||||||
|
else
|
||||||
|
const MapEntry("resume_all", FluentIcons.download): "恢复全部",
|
||||||
|
const MapEntry("cancel_all", FluentIcons.cancel): "取消全部",
|
||||||
|
}.entries)
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.only(left: 6, right: 6),
|
||||||
|
child: Button(
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.all(4),
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
Icon(item.key.value),
|
||||||
|
const SizedBox(width: 6),
|
||||||
|
Text(item.value),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
onPressed: () => model.onTapButton(item.key.key)),
|
||||||
|
),
|
||||||
|
const SizedBox(width: 12),
|
||||||
|
],
|
||||||
|
),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: ListView.builder(
|
child: ListView.builder(
|
||||||
itemBuilder: (BuildContext context, int index) {
|
itemBuilder: (BuildContext context, int index) {
|
||||||
@ -26,8 +54,11 @@ class DownloadsUI extends BaseUI<DownloadsUIModel> {
|
|||||||
Column(
|
Column(
|
||||||
children: [
|
children: [
|
||||||
Container(
|
Container(
|
||||||
padding: const EdgeInsets.only(
|
padding: EdgeInsets.only(
|
||||||
left: 24, right: 24, top: 12, bottom: 12),
|
left: 24,
|
||||||
|
right: 24,
|
||||||
|
top: index == 0 ? 0 : 12,
|
||||||
|
bottom: 12),
|
||||||
margin: const EdgeInsets.only(top: 6, bottom: 6),
|
margin: const EdgeInsets.only(top: 6, bottom: 6),
|
||||||
child: Row(
|
child: Row(
|
||||||
children: [
|
children: [
|
||||||
@ -150,8 +181,7 @@ class DownloadsUI extends BaseUI<DownloadsUIModel> {
|
|||||||
size: 14,
|
size: 14,
|
||||||
),
|
),
|
||||||
text: const Text('打开文件夹'),
|
text: const Text('打开文件夹'),
|
||||||
onPressed: () =>
|
onPressed: () => model.openFolder(task)),
|
||||||
model.openFolder(task)),
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
const SizedBox(width: 12),
|
const SizedBox(width: 12),
|
||||||
|
@ -31,7 +31,29 @@ class DownloadsUIModel extends BaseUIModel {
|
|||||||
_listenDownloader();
|
_listenDownloader();
|
||||||
}
|
}
|
||||||
|
|
||||||
onTapButton(String key) {}
|
onTapButton(String key) async {
|
||||||
|
switch (key) {
|
||||||
|
case "pause_all":
|
||||||
|
await Aria2cManager.aria2c.pauseAll();
|
||||||
|
return;
|
||||||
|
case "resume_all":
|
||||||
|
await Aria2cManager.aria2c.unpauseAll();
|
||||||
|
return;
|
||||||
|
case "cancel_all":
|
||||||
|
final userOK = await showConfirmDialogs(
|
||||||
|
context!, "确认取消全部任务?", const Text("如果文件不再需要,你可能需要手动删除下载文件。"));
|
||||||
|
if (userOK == true) {
|
||||||
|
try {
|
||||||
|
for (var value in [...tasks, ...waitingTasks]) {
|
||||||
|
await Aria2cManager.aria2c.remove(value.gid!);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
dPrint("DownloadsUIModel cancel_all Error: $e");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
_listenDownloader() async {
|
_listenDownloader() async {
|
||||||
try {
|
try {
|
||||||
@ -122,7 +144,7 @@ class DownloadsUIModel extends BaseUIModel {
|
|||||||
await Future.delayed(const Duration(milliseconds: 300));
|
await Future.delayed(const Duration(milliseconds: 300));
|
||||||
if (gid != null) {
|
if (gid != null) {
|
||||||
final ok = await showConfirmDialogs(
|
final ok = await showConfirmDialogs(
|
||||||
context!, "确认取消下载?", const Text("你可能需要手动删除下载文件。"));
|
context!, "确认取消下载?", const Text("如果文件不再需要,你可能需要手动删除下载文件。"));
|
||||||
if (ok == true) {
|
if (ok == true) {
|
||||||
await Aria2cManager.aria2c.remove(gid);
|
await Aria2cManager.aria2c.remove(gid);
|
||||||
}
|
}
|
||||||
|
@ -384,13 +384,11 @@ class ToolsUIModel extends BaseUIModel {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
final b64Str = base64Encode(btData.data!);
|
final b64Str = base64Encode(btData.data!);
|
||||||
dPrint(b64Str);
|
|
||||||
final gid = await Aria2cManager.aria2c
|
final gid = await Aria2cManager.aria2c
|
||||||
.addTorrent(b64Str, extraParams: {"dir": savePath});
|
.addTorrent(b64Str, extraParams: {"dir": savePath});
|
||||||
_working = false;
|
_working = false;
|
||||||
dPrint("Aria2cManager.aria2c.addUri resp === $gid");
|
dPrint("Aria2cManager.aria2c.addUri resp === $gid");
|
||||||
await Aria2cManager.aria2c.saveSession();
|
await Aria2cManager.aria2c.saveSession();
|
||||||
await showToast(context!, "创建下载任务成功!");
|
|
||||||
BaseUIContainer(
|
BaseUIContainer(
|
||||||
uiCreate: () => DownloadsUI(),
|
uiCreate: () => DownloadsUI(),
|
||||||
modelCreate: () => DownloadsUIModel()).push(context!);
|
modelCreate: () => DownloadsUIModel()).push(context!);
|
||||||
|
Loading…
Reference in New Issue
Block a user