2023-10-09 09:32:07 +08:00
|
|
|
import 'package:file_sizes/file_sizes.dart';
|
|
|
|
import 'package:starcitizen_doctor/base/ui.dart';
|
|
|
|
|
|
|
|
import 'downloader_dialog_ui_model.dart';
|
|
|
|
|
|
|
|
class DownloaderDialogUI extends BaseUI<DownloaderDialogUIModel> {
|
|
|
|
@override
|
|
|
|
Widget? buildBody(BuildContext context, DownloaderDialogUIModel model) {
|
|
|
|
return ContentDialog(
|
|
|
|
constraints:
|
|
|
|
BoxConstraints(maxWidth: MediaQuery.of(context).size.width * .54),
|
|
|
|
title: const Text("文件下载..."),
|
|
|
|
content: Column(
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
mainAxisSize: MainAxisSize.min,
|
|
|
|
children: [
|
|
|
|
Text("文件名:${model.fileName}"),
|
|
|
|
const SizedBox(height: 6),
|
|
|
|
Text("保存位置:${model.savePath}"),
|
|
|
|
const SizedBox(height: 6),
|
|
|
|
Text("线程数:${model.threadCount}"),
|
|
|
|
const SizedBox(height: 6),
|
|
|
|
Text(
|
|
|
|
"文件大小: ${FileSize.getSize(model.count ?? 0)} / ${FileSize.getSize(model.total ?? 0)}"),
|
|
|
|
const SizedBox(height: 6),
|
|
|
|
Text("下载速度: ${FileSize.getSize(model.speed?.toInt() ?? 0)}/s"),
|
|
|
|
const SizedBox(height: 12),
|
|
|
|
Row(
|
|
|
|
children: [
|
|
|
|
Text(getStatus(model)),
|
|
|
|
const SizedBox(width: 24),
|
|
|
|
Expanded(
|
|
|
|
child: ProgressBar(
|
|
|
|
value: model.progress == 100 ? null : model.progress,
|
|
|
|
)),
|
|
|
|
const SizedBox(width: 24),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
actions: [
|
|
|
|
FilledButton(
|
|
|
|
child: const Padding(
|
|
|
|
padding: EdgeInsets.only(left: 8, right: 8, top: 2, bottom: 2),
|
|
|
|
child: Text("取消下载"),
|
|
|
|
),
|
|
|
|
onPressed: () => model.doCancel()),
|
|
|
|
],
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
String getUITitle(BuildContext context, DownloaderDialogUIModel model) => "";
|
|
|
|
|
|
|
|
String getStatus(DownloaderDialogUIModel model) {
|
|
|
|
if (model.progress == null && !model.isInMerging) return "准备中...";
|
2023-11-05 15:56:48 +08:00
|
|
|
if (model.isInMerging) return "正在处理文件...";
|
2023-10-09 09:32:07 +08:00
|
|
|
return "${model.progress?.toStringAsFixed(2) ?? "0"}% ";
|
|
|
|
}
|
|
|
|
}
|