mirror of
https://github.com/lifegpc/eh_downloader_flutter.git
synced 2026-06-14 01:44:17 +08:00
Add new settings dlUseAvgSpeed
This commit is contained in:
@@ -137,8 +137,14 @@ class _TaskPage extends State<TaskPage> {
|
||||
return Text(i18n.fetchingMetadata);
|
||||
}
|
||||
double speed = 0;
|
||||
for (final e in p.details) {
|
||||
speed += e.speed;
|
||||
final dlUseAvgSpeed = prefs.getBool("dlUseAvgSpeed") ?? false;
|
||||
if (dlUseAvgSpeed) {
|
||||
final now = DateTime.now().millisecondsSinceEpoch;
|
||||
if (now > p.started) speed = p.downloadedBytes / (now - p.started);
|
||||
} else {
|
||||
for (final e in p.details) {
|
||||
speed += e.speed;
|
||||
}
|
||||
}
|
||||
if (p.failedPage == 0) {
|
||||
final percent = p.downloadedPage / p.totalPage;
|
||||
@@ -221,6 +227,7 @@ class _TaskPage extends State<TaskPage> {
|
||||
final p = task.progress as TaskDownloadProgess;
|
||||
if (p.details.isEmpty) return SliverToBoxAdapter(child: Container());
|
||||
final i18n = AppLocalizations.of(context)!;
|
||||
final dlUseAvgSpeed = prefs.getBool("dlUseAvgSpeed") ?? false;
|
||||
return SliverList.builder(
|
||||
itemCount: p.details.length,
|
||||
itemBuilder: (context, index) {
|
||||
@@ -235,6 +242,11 @@ class _TaskPage extends State<TaskPage> {
|
||||
final eta = d.total == 0
|
||||
? double.infinity
|
||||
: (d.total - d.downloaded) / avgSpeed;
|
||||
final speed = dlUseAvgSpeed
|
||||
? d.total == 0
|
||||
? 0.0
|
||||
: avgSpeed
|
||||
: d.speed;
|
||||
return Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
|
||||
SelectableText("${d.name}(${d.width}x${d.height})"),
|
||||
LinearPercentIndicator(
|
||||
@@ -254,7 +266,7 @@ class _TaskPage extends State<TaskPage> {
|
||||
child: Text(
|
||||
"${getFileSize(d.downloaded)}/${getFileSize(d.total)}")),
|
||||
Text(
|
||||
"${getFileSize((d.speed * 1000).toInt())}/s${i18n.comma}${fmtDuration(context, eta)}"),
|
||||
"${getFileSize((speed * 1000).toInt())}/s${i18n.comma}${fmtDuration(context, eta)}"),
|
||||
]),
|
||||
]);
|
||||
},
|
||||
|
||||
@@ -191,5 +191,6 @@
|
||||
}
|
||||
},
|
||||
"category": "Category",
|
||||
"uploader": "Uploader"
|
||||
"uploader": "Uploader",
|
||||
"dlUseAvgSpeed": "Show average speed in task details."
|
||||
}
|
||||
|
||||
@@ -191,5 +191,6 @@
|
||||
}
|
||||
},
|
||||
"category": "分类",
|
||||
"uploader": "上传者"
|
||||
"uploader": "上传者",
|
||||
"dlUseAvgSpeed": "在任务详情中显示平均速度。"
|
||||
}
|
||||
|
||||
@@ -24,12 +24,14 @@ class _SettingsPage extends State<SettingsPage> with ThemeModeWidget {
|
||||
bool _oriShowNsfw = false;
|
||||
bool _oriShowTranslatedTag = false;
|
||||
bool _oriUseTitleJpn = false;
|
||||
bool _oriDlUseAvgSpeed = false;
|
||||
bool _displayAd = false;
|
||||
Lang _lang = Lang.system;
|
||||
bool _preventScreenCapture = false;
|
||||
bool _showNsfw = false;
|
||||
bool _showTranslatedTag = false;
|
||||
bool _useTitleJpn = false;
|
||||
bool _dlUseAvgSpeed = false;
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
@@ -82,6 +84,14 @@ class _SettingsPage extends State<SettingsPage> with ThemeModeWidget {
|
||||
_oriPreventScreenCapture = false;
|
||||
_preventScreenCapture = false;
|
||||
}
|
||||
try {
|
||||
_oriDlUseAvgSpeed = prefs.getBool("dlUseAvgSpeed") ?? false;
|
||||
_dlUseAvgSpeed = _oriDlUseAvgSpeed;
|
||||
} catch (e) {
|
||||
_log.warning("Failed to get dlUseAvgSpeed:", e);
|
||||
_oriDlUseAvgSpeed = false;
|
||||
_dlUseAvgSpeed = false;
|
||||
}
|
||||
}
|
||||
|
||||
void fallback(BuildContext context) {
|
||||
@@ -99,6 +109,7 @@ class _SettingsPage extends State<SettingsPage> with ThemeModeWidget {
|
||||
_displayAd = false;
|
||||
_showTranslatedTag = _oriLang.toLocale().languageCode == "zh";
|
||||
_preventScreenCapture = false;
|
||||
_dlUseAvgSpeed = false;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -159,6 +170,14 @@ class _SettingsPage extends State<SettingsPage> with ThemeModeWidget {
|
||||
}
|
||||
}
|
||||
}
|
||||
if (_dlUseAvgSpeed != _oriDlUseAvgSpeed) {
|
||||
if (!await prefs.setBool("dlUseAvgSpeed", _dlUseAvgSpeed)) {
|
||||
re = false;
|
||||
_log.warning("Failed to save dlUseAvgSpeed.");
|
||||
} else {
|
||||
_oriDlUseAvgSpeed = _dlUseAvgSpeed;
|
||||
}
|
||||
}
|
||||
return re;
|
||||
}
|
||||
|
||||
@@ -297,6 +316,21 @@ class _SettingsPage extends State<SettingsPage> with ThemeModeWidget {
|
||||
),
|
||||
)
|
||||
: Container(),
|
||||
Container(
|
||||
padding: const EdgeInsets.symmetric(vertical: 8),
|
||||
child: CheckboxMenuButton(
|
||||
value: _dlUseAvgSpeed,
|
||||
onChanged: (bool? value) {
|
||||
if (value != null) {
|
||||
setState(() {
|
||||
_dlUseAvgSpeed = value;
|
||||
});
|
||||
}
|
||||
},
|
||||
child: Text(AppLocalizations.of(context)!
|
||||
.dlUseAvgSpeed),
|
||||
),
|
||||
),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
|
||||
Reference in New Issue
Block a user