This commit is contained in:
niuhuan 2022-08-20 23:16:13 +08:00
parent e290080ba8
commit 0289e964ee
6 changed files with 137 additions and 35 deletions

View File

@ -1 +1 @@
v1.5.8 v1.5.9

View File

@ -1,3 +1,6 @@
v1.5.9
- [x] 下载漫画中显示评论区(设置中寻找)
v1.5.8 v1.5.8
- [x] 解决历史记录图片不刷新的问题 - [x] 解决历史记录图片不刷新的问题
- [x] 增加退出是增加提示的选项(设置中寻找) - [x] 增加退出是增加提示的选项(设置中寻找)

View File

@ -0,0 +1,41 @@
import 'package:flutter/material.dart';
import '../Common.dart';
import '../Method.dart';
const _propertyName = "showCommentAtDownload";
late bool _showCommentAtDownload;
Future initShowCommentAtDownload() async {
_showCommentAtDownload = (await method.loadProperty(_propertyName, "false")) == "true";
}
bool showCommentAtDownload() {
return _showCommentAtDownload;
}
Future<void> _chooseShowCommentAtDownload(BuildContext context) async {
String? result =
await chooseListDialog<String>(context, "在下载显示评论区", ["", ""]);
if (result != null) {
var target = result == "";
await method.saveProperty(_propertyName, "$target");
_showCommentAtDownload = target;
}
}
Widget showCommentAtDownloadSetting() {
return StatefulBuilder(
builder: (BuildContext context, void Function(void Function()) setState) {
return ListTile(
title: const Text("在下载显示评论区"),
subtitle: Text(_showCommentAtDownload ? "" : ""),
onTap: () async {
await _chooseShowCommentAtDownload(context);
setState(() {});
},
);
},
);
}

View File

@ -4,15 +4,19 @@ import 'package:flutter/material.dart';
import 'package:pikapika/basic/Entities.dart'; import 'package:pikapika/basic/Entities.dart';
import 'package:pikapika/basic/Navigator.dart'; import 'package:pikapika/basic/Navigator.dart';
import 'package:pikapika/basic/Method.dart'; import 'package:pikapika/basic/Method.dart';
import '../basic/config/ShowCommentAtDownload.dart';
import 'ComicInfoScreen.dart'; import 'ComicInfoScreen.dart';
import 'DownloadExportToFileScreen.dart'; import 'DownloadExportToFileScreen.dart';
import 'DownloadReaderScreen.dart'; import 'DownloadReaderScreen.dart';
import 'components/ComicDescriptionCard.dart'; import 'components/ComicDescriptionCard.dart';
import 'components/ComicTagsCard.dart'; import 'components/ComicTagsCard.dart';
import 'components/CommentList.dart';
import 'components/CommentMainType.dart';
import 'components/ContentError.dart'; import 'components/ContentError.dart';
import 'components/ContentLoading.dart'; import 'components/ContentLoading.dart';
import 'components/ContinueReadButton.dart'; import 'components/ContinueReadButton.dart';
import 'components/DownloadInfoCard.dart'; import 'components/DownloadInfoCard.dart';
import 'components/Recommendation.dart';
// //
class DownloadInfoScreen extends StatefulWidget { class DownloadInfoScreen extends StatefulWidget {
@ -117,51 +121,101 @@ class _DownloadInfoScreenState extends State<DownloadInfoScreen>
} }
List<dynamic> tagsDynamic = json.decode(_task.tags); List<dynamic> tagsDynamic = json.decode(_task.tags);
List<String> tags = tagsDynamic.map((e) => "$e").toList(); List<String> tags = tagsDynamic.map((e) => "$e").toList();
return ListView( var list = ListView(
children: [ children: [
DownloadInfoCard(task: _task, linkItem: true), DownloadInfoCard(task: _task, linkItem: true),
ComicTagsCard(tags), ComicTagsCard(tags),
ComicDescriptionCard(description: _task.description), ComicDescriptionCard(description: _task.description),
Container(height: 5), Container(height: 5),
Wrap( _bottom(),
spacing: 10,
runSpacing: 10,
alignment: WrapAlignment.spaceAround,
children: [
ContinueReadButton(
viewFuture: _viewFuture,
onChoose: (int? epOrder, int? pictureRank) {
if (epOrder != null && pictureRank != null) {
for (var i in _epList) {
if (i.epOrder == epOrder) {
_push(_task, _epList, epOrder, pictureRank);
return;
}
}
} else {
_push(_task, _epList, _epList.first.epOrder, null);
}
},
),
..._epList.map((e) {
return MaterialButton(
onPressed: () {
_push(_task, _epList, e.epOrder, null);
},
color: Colors.white,
child: Text(e.title,
style: const TextStyle(color: Colors.black)),
);
}),
],
),
], ],
); );
// todo only pika task
if (showCommentAtDownload()) {
return DefaultTabController(
length: 3,
child: list,
);
}
return list;
}, },
), ),
); );
} }
var _tabIndex = 0;
Widget _bottom() {
// todo only pika task
if (showCommentAtDownload()) {
final theme = Theme.of(context);
var _tabs = <Widget>[
Tab(text: '章节 (${_epList.length})'),
const Tab(text: '评论'),
const Tab(text: '推荐'),
];
var _views = <Widget>[
_chapters(),
CommentList(CommentMainType.COMIC, widget.comicId),
Recommendation(comicId: widget.comicId),
];
return Column(children: [
Container(
height: 40,
color: theme.colorScheme.secondary.withOpacity(.025),
child: TabBar(
tabs: _tabs,
indicatorColor: theme.colorScheme.secondary,
labelColor: theme.colorScheme.secondary,
onTap: (val) async {
setState(() {
_tabIndex = val;
});
},
),
),
Container(height: 15),
_views[_tabIndex],
Container(height: 5),
]);
}
return _chapters();
}
Widget _chapters() {
return Wrap(
spacing: 10,
runSpacing: 10,
alignment: WrapAlignment.spaceAround,
children: [
ContinueReadButton(
viewFuture: _viewFuture,
onChoose: (int? epOrder, int? pictureRank) {
if (epOrder != null && pictureRank != null) {
for (var i in _epList) {
if (i.epOrder == epOrder) {
_push(_task, _epList, epOrder, pictureRank);
return;
}
}
} else {
_push(_task, _epList, _epList.first.epOrder, null);
}
},
),
..._epList.map((e) {
return MaterialButton(
onPressed: () {
_push(_task, _epList, e.epOrder, null);
},
color: Colors.white,
child: Text(e.title, style: const TextStyle(color: Colors.black)),
);
}),
],
);
}
void _push( void _push(
DownloadComic task, DownloadComic task,
List<DownloadEp> epList, List<DownloadEp> epList,

View File

@ -25,6 +25,7 @@ import 'package:pikapika/basic/config/ReaderDirection.dart';
import 'package:pikapika/basic/config/ReaderSliderPosition.dart'; import 'package:pikapika/basic/config/ReaderSliderPosition.dart';
import 'package:pikapika/basic/config/ReaderType.dart'; import 'package:pikapika/basic/config/ReaderType.dart';
import 'package:pikapika/basic/config/ShadowCategories.dart'; import 'package:pikapika/basic/config/ShadowCategories.dart';
import 'package:pikapika/basic/config/ShowCommentAtDownload.dart';
import 'package:pikapika/basic/config/Themes.dart'; import 'package:pikapika/basic/config/Themes.dart';
import 'package:pikapika/basic/Method.dart'; import 'package:pikapika/basic/Method.dart';
import 'package:pikapika/basic/config/ListLayout.dart'; import 'package:pikapika/basic/config/ListLayout.dart';
@ -99,6 +100,7 @@ class _InitScreenState extends State<InitScreen> {
await reloadIsPro(); await reloadIsPro();
autoCheckNewVersion(); autoCheckNewVersion();
await initWillPopNotice(); await initWillPopNotice();
await initShowCommentAtDownload();
String? initUrl; String? initUrl;
if (Platform.isAndroid || Platform.isIOS) { if (Platform.isAndroid || Platform.isIOS) {

View File

@ -22,6 +22,7 @@ import 'package:pikapika/basic/config/ReaderDirection.dart';
import 'package:pikapika/basic/config/ReaderSliderPosition.dart'; import 'package:pikapika/basic/config/ReaderSliderPosition.dart';
import 'package:pikapika/basic/config/ReaderType.dart'; import 'package:pikapika/basic/config/ReaderType.dart';
import 'package:pikapika/basic/config/ShadowCategories.dart'; import 'package:pikapika/basic/config/ShadowCategories.dart';
import 'package:pikapika/basic/config/ShowCommentAtDownload.dart';
import 'package:pikapika/basic/config/Themes.dart'; import 'package:pikapika/basic/config/Themes.dart';
import 'package:pikapika/basic/config/TimeOffsetHour.dart'; import 'package:pikapika/basic/config/TimeOffsetHour.dart';
import 'package:pikapika/basic/config/Version.dart'; import 'package:pikapika/basic/config/Version.dart';
@ -110,6 +111,7 @@ class SettingsScreen extends StatelessWidget {
chooserRootSetting(), chooserRootSetting(),
downloadThreadCountSetting(), downloadThreadCountSetting(),
downloadAndExportPathSetting(), downloadAndExportPathSetting(),
showCommentAtDownloadSetting(),
exportRenameSetting(), exportRenameSetting(),
fontSetting(), fontSetting(),
usingRightClickPopSetting(), usingRightClickPopSetting(),