mirror of
https://github.com/lifegpc/eh_downloader_flutter.git
synced 2026-06-06 05:49:03 +08:00
Update task detail page
This commit is contained in:
@@ -6,10 +6,16 @@ class FitText extends StatelessWidget {
|
||||
required this.texts,
|
||||
this.style,
|
||||
this.separator = " ",
|
||||
this.selectable = false,
|
||||
this.overflow,
|
||||
this.maxLines,
|
||||
});
|
||||
final List<(String, int)> texts;
|
||||
final TextStyle? style;
|
||||
final String separator;
|
||||
final bool selectable;
|
||||
final TextOverflow? overflow;
|
||||
final int? maxLines;
|
||||
|
||||
Size _textSize(String text, TextStyle? style) {
|
||||
final TextPainter textPainter = TextPainter(
|
||||
@@ -37,10 +43,13 @@ class FitText extends StatelessWidget {
|
||||
final double maxWidth = constraints.maxWidth;
|
||||
for (int i = sizes.length - 1; i >= 0; i--) {
|
||||
if (sizes[i] <= maxWidth) {
|
||||
return Text(texts[i], style: style);
|
||||
return selectable
|
||||
? SelectableText(texts[i], style: style)
|
||||
: Text(texts[i], style: style, overflow: overflow);
|
||||
}
|
||||
}
|
||||
return Text(texts[0], style: style);
|
||||
return Text(texts[0],
|
||||
style: style, overflow: overflow, maxLines: maxLines);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import 'package:go_router/go_router.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:percent_indicator/linear_percent_indicator.dart';
|
||||
import '../api/task.dart';
|
||||
import '../components/fit_text.dart';
|
||||
import '../components/rate.dart';
|
||||
import '../globals.dart';
|
||||
import '../main.dart';
|
||||
@@ -168,8 +169,10 @@ class _TaskPage extends State<TaskPage> {
|
||||
),
|
||||
Row(mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [
|
||||
Expanded(
|
||||
child: Text(i18n.downloadedSize(
|
||||
"${getFileSize(p.downloadedBytes)}${i18n.comma}${p.downloadedPage}/${p.totalPage}"))),
|
||||
child: FitText(texts: [
|
||||
(i18n.downloadedSize(getFileSize(p.downloadedBytes)), 0),
|
||||
("${p.downloadedPage}/${p.totalPage}", 1)
|
||||
], overflow: TextOverflow.ellipsis, maxLines: 1)),
|
||||
Text("${getFileSize((speed * 1000).toInt())}/s"),
|
||||
]),
|
||||
]);
|
||||
@@ -252,7 +255,17 @@ class _TaskPage extends State<TaskPage> {
|
||||
: avgSpeed
|
||||
: d.speed;
|
||||
return Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
|
||||
SelectableText("${d.name}(${d.width}x${d.height})"),
|
||||
FitText(
|
||||
texts: [
|
||||
("${d.index}.", 2),
|
||||
(d.name, 3),
|
||||
("(${d.width}x${d.height})", 0),
|
||||
(d.isOriginal ? "(${i18n.originalImg})" : "", 1)
|
||||
],
|
||||
selectable: true,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
maxLines: 1,
|
||||
),
|
||||
LinearPercentIndicator(
|
||||
animation: true,
|
||||
animateFromLastPercent: true,
|
||||
@@ -268,7 +281,9 @@ class _TaskPage extends State<TaskPage> {
|
||||
Row(mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [
|
||||
Expanded(
|
||||
child: Text(
|
||||
"${getFileSize(d.downloaded)}/${getFileSize(d.total)}")),
|
||||
"${getFileSize(d.downloaded)}/${getFileSize(d.total)}",
|
||||
maxLines: 1,
|
||||
overflow: TextOverflow.ellipsis)),
|
||||
Text(
|
||||
"${getFileSize((speed * 1000).toInt())}/s${i18n.comma}${fmtDuration(context, eta)}"),
|
||||
]),
|
||||
|
||||
@@ -193,5 +193,6 @@
|
||||
"category": "Category",
|
||||
"uploader": "Uploader",
|
||||
"dlUseAvgSpeed": "Show average speed in task details.",
|
||||
"refresh": "Refresh"
|
||||
"refresh": "Refresh",
|
||||
"originalImg": "Original image"
|
||||
}
|
||||
|
||||
@@ -193,5 +193,6 @@
|
||||
"category": "分类",
|
||||
"uploader": "上传者",
|
||||
"dlUseAvgSpeed": "在任务详情中显示平均速度。",
|
||||
"refresh": "刷新"
|
||||
"refresh": "刷新",
|
||||
"originalImg": "原图"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user