🚀 v1.6.4

This commit is contained in:
niuhuan 2023-01-31 18:50:51 +08:00
parent 718fbfcccf
commit 4f2c4ec90d
34 changed files with 155 additions and 116 deletions

View File

@ -48,40 +48,38 @@
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter> </intent-filter>
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="pika" />
</intent-filter>
<intent-filter> <intent-filter>
<action android:name="android.intent.action.VIEW" /> <action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" /> <category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="content" />
<data android:scheme="pika" /> <data android:mimeType="*/*" />
<data android:pathPattern=".*\\.pkz" />
<data <data android:host="*" />
android:mimeType="*/*" </intent-filter>
android:pathPattern=".*\\.pkz" <intent-filter>
android:scheme="content" /> <action android:name="android.intent.action.VIEW" />
<data <category android:name="android.intent.category.DEFAULT" />
android:mimeType="*/*" <category android:name="android.intent.category.BROWSABLE" />
android:pathPattern=".*\\.pkz" <data android:scheme="content" />
android:scheme="file" /> <data android:mimeType="*/*" />
<data android:pathPattern=".*\\.pki" />
<data <data android:host="*" />
android:mimeType="*/*" </intent-filter>
android:pathPattern=".*\\.pki" <intent-filter>
android:scheme="content" /> <action android:name="android.intent.action.VIEW" />
<data <category android:name="android.intent.category.DEFAULT" />
android:mimeType="*/*" <category android:name="android.intent.category.BROWSABLE" />
android:pathPattern=".*\\.pki" <data android:scheme="content" />
android:scheme="file" /> <data android:mimeType="*/*" />
<data android:pathPattern=".*\\.zip" />
<data <data android:host="*" />
android:mimeType="*/*"
android:pathPattern=".*\\.zip"
android:scheme="content" />
<data
android:mimeType="*/*"
android:pathPattern=".*\\.zip"
android:scheme="file" />
</intent-filter> </intent-filter>
</activity> </activity>
<!-- Don't delete the meta-data below. <!-- Don't delete the meta-data below.

View File

@ -1 +1 @@
v1.6.1 v1.6.4

View File

@ -1,5 +1,6 @@
v1.6.2 v1.6.4
- [x] ♻使用分流1和CDN-3分流进行直连 - [x] ✨去掉UI动画的选项 (对阅读器友好)
- [x] ♻升级flutter - [x] ♻️去掉无用文件关联
- [x] 🚀下载支持搜索 - [x] ✨安卓支持 pika://comic/id 模式分享链接 (ios早已支持)
- [x] 🚀优化安卓配置文件

View File

@ -9,6 +9,7 @@ import 'package:uri_to_file/uri_to_file.dart';
import '../screens/ComicInfoScreen.dart'; import '../screens/ComicInfoScreen.dart';
import '../screens/DownloadOnlyImportScreen.dart'; import '../screens/DownloadOnlyImportScreen.dart';
import '../screens/PkzArchiveScreen.dart'; import '../screens/PkzArchiveScreen.dart';
import 'config/IconLoading.dart';
import 'config/TimeOffsetHour.dart'; import 'config/TimeOffsetHour.dart';
/// ///
@ -304,14 +305,14 @@ StreamSubscription<String?> linkSubscript(BuildContext context) {
.first .first
.group(1)!; .group(1)!;
Navigator.of(context).push( Navigator.of(context).push(
MaterialPageRoute( mixRoute(
builder: (BuildContext context) => ComicInfoScreen(comicId: comicId), builder: (BuildContext context) => ComicInfoScreen(comicId: comicId),
), ),
); );
} else if (RegExp(r"^.*\.pkz$").allMatches(uri).isNotEmpty) { } else if (RegExp(r"^.*\.pkz$").allMatches(uri).isNotEmpty) {
File file = await toFile(uri); File file = await toFile(uri);
Navigator.of(context).push( Navigator.of(context).push(
MaterialPageRoute( mixRoute(
builder: (BuildContext context) => builder: (BuildContext context) =>
PkzArchiveScreen(pkzPath: file.path), PkzArchiveScreen(pkzPath: file.path),
), ),
@ -319,7 +320,7 @@ StreamSubscription<String?> linkSubscript(BuildContext context) {
} else if (RegExp(r"^.*\.((pki)|(zip))$").allMatches(uri).isNotEmpty) { } else if (RegExp(r"^.*\.((pki)|(zip))$").allMatches(uri).isNotEmpty) {
File file = await toFile(uri); File file = await toFile(uri);
Navigator.of(context).push( Navigator.of(context).push(
MaterialPageRoute( mixRoute(
builder: (BuildContext context) => builder: (BuildContext context) =>
DownloadOnlyImportScreen(path: file.path), DownloadOnlyImportScreen(path: file.path),
), ),

View File

@ -2,6 +2,7 @@
import 'dart:async'; import 'dart:async';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:pikapika/basic/config/IconLoading.dart';
// //
// (await Navigator.push pushReplacement时结束阻塞) // (await Navigator.push pushReplacement时结束阻塞)
@ -37,12 +38,12 @@ Future<dynamic> navPushOrReplace(
if (_depth < _depthMax) { if (_depth < _depthMax) {
return Navigator.push( return Navigator.push(
context, context,
MaterialPageRoute(builder: builder), mixRoute(builder: builder),
); );
} else { } else {
return Navigator.pushReplacement( return Navigator.pushReplacement(
context, context,
MaterialPageRoute(builder: builder), mixRoute(builder: builder),
); );
} }
} }

View File

@ -9,8 +9,7 @@ const _propertyName = "iconLoading";
late bool _iconLoading; late bool _iconLoading;
Future<void> initIconLoading() async { Future<void> initIconLoading() async {
_iconLoading = _iconLoading = (await method.loadProperty(_propertyName, "false")) == "true";
(await method.loadProperty(_propertyName, "false")) == "true";
} }
bool currentIconLoading() { bool currentIconLoading() {
@ -19,7 +18,7 @@ bool currentIconLoading() {
Future<void> _chooseIconLoading(BuildContext context) async { Future<void> _chooseIconLoading(BuildContext context) async {
String? result = String? result =
await chooseListDialog<String>(context, "使用静态图标代替加载动画", ["", ""]); await chooseListDialog<String>(context, "尽量减少UI动画", ["", ""]);
if (result != null) { if (result != null) {
var target = result == ""; var target = result == "";
await method.saveProperty(_propertyName, "$target"); await method.saveProperty(_propertyName, "$target");
@ -31,7 +30,7 @@ Widget iconLoadingSetting() {
return StatefulBuilder( return StatefulBuilder(
builder: (BuildContext context, void Function(void Function()) setState) { builder: (BuildContext context, void Function(void Function()) setState) {
return ListTile( return ListTile(
title: const Text("使用静态图标代替加载动画"), title: const Text("尽量减少UI动画"),
subtitle: Text(_iconLoading ? "" : ""), subtitle: Text(_iconLoading ? "" : ""),
onTap: () async { onTap: () async {
await _chooseIconLoading(context); await _chooseIconLoading(context);
@ -41,3 +40,14 @@ Widget iconLoadingSetting() {
}, },
); );
} }
Route<T> mixRoute<T>({required WidgetBuilder builder}) {
if (currentIconLoading()) {
return PageRouteBuilder(
pageBuilder: (context, animation1, animation2) => builder.call(context),
transitionDuration: Duration.zero,
reverseTransitionDuration: Duration.zero,
);
}
return MaterialPageRoute(builder: builder);
}

View File

@ -13,6 +13,7 @@ import 'package:pikapika/screens/RegisterScreen.dart';
import 'package:pikapika/screens/SettingsScreen.dart'; import 'package:pikapika/screens/SettingsScreen.dart';
import 'package:pikapika/screens/components/NetworkSetting.dart'; import 'package:pikapika/screens/components/NetworkSetting.dart';
import '../basic/config/IconLoading.dart';
import '../basic/config/Version.dart'; import '../basic/config/Version.dart';
import 'AppScreen.dart'; import 'AppScreen.dart';
import 'DownloadListScreen.dart'; import 'DownloadListScreen.dart';
@ -88,7 +89,7 @@ class _AccountScreenState extends State<AccountScreen> {
onPressed: () { onPressed: () {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( mixRoute(
builder: (context) => const SettingsScreen( builder: (context) => const SettingsScreen(
hiddenAccountInfo: true, hiddenAccountInfo: true,
), ),
@ -101,7 +102,7 @@ class _AccountScreenState extends State<AccountScreen> {
onPressed: () { onPressed: () {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( mixRoute(
builder: (context) => const AboutScreen( builder: (context) => const AboutScreen(
), ),
), ),
@ -114,7 +115,7 @@ class _AccountScreenState extends State<AccountScreen> {
if (androidNightModeDisplay) { if (androidNightModeDisplay) {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute(builder: (context) => const ThemeScreen()), mixRoute(builder: (context) => const ThemeScreen()),
); );
} else { } else {
chooseLightTheme(context); chooseLightTheme(context);
@ -186,7 +187,7 @@ class _AccountScreenState extends State<AccountScreen> {
recognizer: TapGestureRecognizer() recognizer: TapGestureRecognizer()
..onTap = () => Navigator.push( ..onTap = () => Navigator.push(
context, context,
MaterialPageRoute( mixRoute(
builder: (BuildContext context) => builder: (BuildContext context) =>
const RegisterScreen()), const RegisterScreen()),
).then((value) => _loadProperties()), ).then((value) => _loadProperties()),
@ -209,7 +210,7 @@ class _AccountScreenState extends State<AccountScreen> {
await reloadIsPro(); await reloadIsPro();
Navigator.pushReplacement( Navigator.pushReplacement(
context, context,
MaterialPageRoute(builder: (context) => const AppScreen()), mixRoute(builder: (context) => const AppScreen()),
); );
} catch (e, s) { } catch (e, s) {
print("$e\n$s"); print("$e\n$s");
@ -239,7 +240,7 @@ class _AccountScreenState extends State<AccountScreen> {
_toDownloadList() { _toDownloadList() {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute(builder: (context) => const DownloadListScreen()), mixRoute(builder: (context) => const DownloadListScreen()),
); );
} }
} }

View File

@ -12,6 +12,7 @@ import 'package:pikapika/screens/SearchScreen.dart';
import 'package:pikapika/screens/components/ContentError.dart'; import 'package:pikapika/screens/components/ContentError.dart';
import 'package:pikapika/basic/Method.dart'; import 'package:pikapika/basic/Method.dart';
import '../basic/config/CategoriesColumnCount.dart'; import '../basic/config/CategoriesColumnCount.dart';
import '../basic/config/IconLoading.dart';
import 'ComicsScreen.dart'; import 'ComicsScreen.dart';
import 'GamesScreen.dart'; import 'GamesScreen.dart';
import 'RandomComicsScreen.dart'; import 'RandomComicsScreen.dart';
@ -35,7 +36,7 @@ class _CategoriesScreenState extends State<CategoriesScreen> {
if (value.isNotEmpty) { if (value.isNotEmpty) {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( mixRoute(
builder: (context) => SearchScreen(keyword: value), builder: (context) => SearchScreen(keyword: value),
), ),
); );
@ -211,7 +212,7 @@ class _CategoriesScreenState extends State<CategoriesScreen> {
() { () {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( mixRoute(
builder: (context) => const ComicCollectionsScreen(), builder: (context) => const ComicCollectionsScreen(),
), ),
); );
@ -300,7 +301,7 @@ class _CategoriesScreenState extends State<CategoriesScreen> {
() { () {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute(builder: (context) => const RankingsScreen()), mixRoute(builder: (context) => const RankingsScreen()),
); );
}, },
); );
@ -312,7 +313,7 @@ class _CategoriesScreenState extends State<CategoriesScreen> {
() { () {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute(builder: (context) => const RandomComicsScreen()), mixRoute(builder: (context) => const RandomComicsScreen()),
); );
}, },
); );
@ -324,7 +325,7 @@ class _CategoriesScreenState extends State<CategoriesScreen> {
() { () {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute(builder: (context) => const GamesScreen()), mixRoute(builder: (context) => const GamesScreen()),
); );
}, },
); );
@ -335,7 +336,7 @@ class _CategoriesScreenState extends State<CategoriesScreen> {
void _navigateToCategory(String? categoryTitle) { void _navigateToCategory(String? categoryTitle) {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( mixRoute(
builder: (context) => ComicsScreen(category: categoryTitle), builder: (context) => ComicsScreen(category: categoryTitle),
), ),
); );

View File

@ -11,6 +11,7 @@ import 'package:pikapika/screens/components/CommentMainType.dart';
import 'package:pikapika/screens/components/ItemBuilder.dart'; import 'package:pikapika/screens/components/ItemBuilder.dart';
import 'package:pikapika/screens/components/Recommendation.dart'; import 'package:pikapika/screens/components/Recommendation.dart';
import '../basic/config/IconLoading.dart';
import 'ComicReaderScreen.dart'; import 'ComicReaderScreen.dart';
import 'DownloadConfirmScreen.dart'; import 'DownloadConfirmScreen.dart';
import 'components/ComicDescriptionCard.dart'; import 'components/ComicDescriptionCard.dart';
@ -285,7 +286,7 @@ class _ComicInfoScreenState extends State<ComicInfoScreen> with RouteAware {
onPressed: () async { onPressed: () async {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( mixRoute(
builder: (context) => DownloadConfirmScreen( builder: (context) => DownloadConfirmScreen(
comicInfo: _comicInfo, comicInfo: _comicInfo,
epList: _epList.reversed.toList(), epList: _epList.reversed.toList(),
@ -356,7 +357,7 @@ class _ComicInfoScreenState extends State<ComicInfoScreen> with RouteAware {
void _push(ComicInfo comicInfo, List<Ep> epList, int order, int? rank) { void _push(ComicInfo comicInfo, List<Ep> epList, int order, int? rank) {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( mixRoute(
builder: (context) => ComicReaderScreen( builder: (context) => ComicReaderScreen(
comicInfo: comicInfo, comicInfo: comicInfo,
epList: epList, epList: epList,

View File

@ -10,6 +10,7 @@ import 'package:pikapika/basic/config/FullScreenUI.dart';
import 'package:pikapika/basic/config/Quality.dart'; import 'package:pikapika/basic/config/Quality.dart';
import 'package:pikapika/screens/components/ContentError.dart'; import 'package:pikapika/screens/components/ContentError.dart';
import 'package:pikapika/screens/components/ContentLoading.dart'; import 'package:pikapika/screens/components/ContentLoading.dart';
import '../basic/config/IconLoading.dart';
import 'DownloadConfirmScreen.dart'; import 'DownloadConfirmScreen.dart';
import 'components/ImageReader.dart'; import 'components/ImageReader.dart';
import 'components/RightClickPop.dart'; import 'components/RightClickPop.dart';
@ -86,7 +87,7 @@ class _ComicReaderScreenState extends State<ComicReaderScreen> {
if (orderMap.containsKey(epOrder)) { if (orderMap.containsKey(epOrder)) {
_replacement = true; _replacement = true;
Navigator.of(context).pushReplacement( Navigator.of(context).pushReplacement(
MaterialPageRoute( mixRoute(
builder: (context) => ComicReaderScreen( builder: (context) => ComicReaderScreen(
comicInfo: widget.comicInfo, comicInfo: widget.comicInfo,
epList: widget.epList, epList: widget.epList,
@ -100,7 +101,7 @@ class _ComicReaderScreenState extends State<ComicReaderScreen> {
FutureOr<dynamic> _onReloadEp() { FutureOr<dynamic> _onReloadEp() {
_replacement = true; _replacement = true;
Navigator.of(context).pushReplacement(MaterialPageRoute( Navigator.of(context).pushReplacement(mixRoute(
builder: (context) => ComicReaderScreen( builder: (context) => ComicReaderScreen(
comicInfo: widget.comicInfo, comicInfo: widget.comicInfo,
epList: widget.epList, epList: widget.epList,
@ -115,7 +116,7 @@ class _ComicReaderScreenState extends State<ComicReaderScreen> {
FutureOr<dynamic> _onDownload() { FutureOr<dynamic> _onDownload() {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( mixRoute(
builder: (context) => DownloadConfirmScreen( builder: (context) => DownloadConfirmScreen(
comicInfo: widget.comicInfo, comicInfo: widget.comicInfo,
epList: widget.epList.reversed.toList(), epList: widget.epList.reversed.toList(),

View File

@ -7,6 +7,7 @@ import 'package:pikapika/basic/store/Categories.dart';
import 'package:pikapika/basic/config/ListLayout.dart'; import 'package:pikapika/basic/config/ListLayout.dart';
import 'package:pikapika/basic/Method.dart'; import 'package:pikapika/basic/Method.dart';
import '../basic/Entities.dart'; import '../basic/Entities.dart';
import '../basic/config/IconLoading.dart';
import 'SearchScreen.dart'; import 'SearchScreen.dart';
import 'components/ComicPager.dart'; import 'components/ComicPager.dart';
import 'components/RightClickPop.dart'; import 'components/RightClickPop.dart';
@ -41,7 +42,7 @@ class _ComicsScreenState extends State<ComicsScreen> {
if (value.isNotEmpty) { if (value.isNotEmpty) {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( mixRoute(
builder: (context) => builder: (context) =>
SearchScreen(keyword: value, category: widget.category), SearchScreen(keyword: value, category: widget.category),
), ),
@ -84,7 +85,7 @@ class _ComicsScreenState extends State<ComicsScreen> {
if (category == categoryTitle(null)) { if (category == categoryTitle(null)) {
category = null; category = null;
} }
Navigator.of(context).pushReplacement(MaterialPageRoute( Navigator.of(context).pushReplacement(mixRoute(
builder: (context) { builder: (context) {
return ComicsScreen( return ComicsScreen(
category: category, category: category,

View File

@ -3,6 +3,7 @@ import 'package:pikapika/basic/Common.dart';
import '../basic/Entities.dart'; import '../basic/Entities.dart';
import '../basic/Method.dart'; import '../basic/Method.dart';
import '../basic/config/IconLoading.dart';
import 'DownloadExportingGroupScreen.dart'; import 'DownloadExportingGroupScreen.dart';
import 'components/ContentLoading.dart'; import 'components/ContentLoading.dart';
import 'components/DownloadInfoCard.dart'; import 'components/DownloadInfoCard.dart';
@ -104,7 +105,10 @@ class _DownloadExportGroupScreenState extends State<DownloadExportGroupScreen> {
selected.contains(e.id) selected.contains(e.id)
? Icons.check_circle_sharp ? Icons.check_circle_sharp
: Icons.circle_outlined, : Icons.circle_outlined,
color: Theme.of(context).colorScheme.secondary, color: Theme
.of(context)
.colorScheme
.secondary,
), ),
), ),
]), ]),
@ -151,8 +155,9 @@ class _DownloadExportGroupScreenState extends State<DownloadExportGroupScreen> {
return; return;
} }
final exported = await Navigator.of(context).push( final exported = await Navigator.of(context).push(
MaterialPageRoute( mixRoute(
builder: (context) => DownloadExportingGroupScreen( builder: (context) =>
DownloadExportingGroupScreen(
idList: selected, idList: selected,
), ),
), ),

View File

@ -11,6 +11,7 @@ import 'package:pikapika/basic/Method.dart';
import 'package:pikapika/basic/config/ExportRename.dart'; import 'package:pikapika/basic/config/ExportRename.dart';
import 'package:pikapika/screens/DownloadExportToSocketScreen.dart'; import 'package:pikapika/screens/DownloadExportToSocketScreen.dart';
import '../basic/config/IconLoading.dart';
import 'components/ContentError.dart'; import 'components/ContentError.dart';
import 'components/ContentLoading.dart'; import 'components/ContentLoading.dart';
import 'components/DownloadInfoCard.dart'; import 'components/DownloadInfoCard.dart';
@ -111,7 +112,7 @@ class _DownloadExportToFileScreenState
MaterialButton( MaterialButton(
onPressed: () async { onPressed: () async {
Navigator.of(context).push( Navigator.of(context).push(
MaterialPageRoute( mixRoute(
builder: (context) => DownloadExportToSocketScreen( builder: (context) => DownloadExportToSocketScreen(
task: _task, task: _task,
comicId: widget.comicId, comicId: widget.comicId,

View File

@ -9,6 +9,7 @@ import 'package:pikapika/basic/Method.dart';
import 'package:pikapika/basic/config/ChooserRoot.dart'; import 'package:pikapika/basic/config/ChooserRoot.dart';
import '../basic/Cross.dart'; import '../basic/Cross.dart';
import '../basic/config/IconLoading.dart';
import '../basic/config/IsPro.dart'; import '../basic/config/IsPro.dart';
import 'PkzArchiveScreen.dart'; import 'PkzArchiveScreen.dart';
import 'components/ContentLoading.dart'; import 'components/ContentLoading.dart';
@ -120,7 +121,7 @@ class _DownloadImportScreenState extends State<DownloadImportScreen> {
if (path != null) { if (path != null) {
if (path.endsWith(".pkz")) { if (path.endsWith(".pkz")) {
Navigator.of(context).push( Navigator.of(context).push(
MaterialPageRoute( mixRoute(
builder: (BuildContext context) => builder: (BuildContext context) =>
PkzArchiveScreen(pkzPath: path!), PkzArchiveScreen(pkzPath: path!),
), ),

View File

@ -4,6 +4,7 @@ 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/IconLoading.dart';
import '../basic/config/ShowCommentAtDownload.dart'; import '../basic/config/ShowCommentAtDownload.dart';
import 'ComicInfoScreen.dart'; import 'ComicInfoScreen.dart';
import 'DownloadExportToFileScreen.dart'; import 'DownloadExportToFileScreen.dart';
@ -78,7 +79,7 @@ class _DownloadInfoScreenState extends State<DownloadInfoScreen>
onPressed: () async { onPressed: () async {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( mixRoute(
builder: (context) => DownloadExportToFileScreen( builder: (context) => DownloadExportToFileScreen(
comicId: widget.comicId, comicId: widget.comicId,
comicTitle: widget.comicTitle, comicTitle: widget.comicTitle,
@ -92,7 +93,7 @@ class _DownloadInfoScreenState extends State<DownloadInfoScreen>
onPressed: () { onPressed: () {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( mixRoute(
builder: (context) => ComicInfoScreen( builder: (context) => ComicInfoScreen(
comicId: widget.comicId, comicId: widget.comicId,
), ),
@ -224,7 +225,7 @@ class _DownloadInfoScreenState extends State<DownloadInfoScreen>
) { ) {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( mixRoute(
builder: (context) => DownloadReaderScreen( builder: (context) => DownloadReaderScreen(
comicInfo: _task, comicInfo: _task,
epList: _epList, epList: _epList,

View File

@ -8,6 +8,7 @@ import 'package:pikapika/basic/Common.dart';
import 'package:pikapika/basic/Entities.dart'; import 'package:pikapika/basic/Entities.dart';
import 'package:pikapika/basic/Method.dart'; import 'package:pikapika/basic/Method.dart';
import 'package:pikapika/screens/DownloadExportGroupScreen.dart'; import 'package:pikapika/screens/DownloadExportGroupScreen.dart';
import '../basic/config/IconLoading.dart';
import 'DownloadImportScreen.dart'; import 'DownloadImportScreen.dart';
import 'DownloadInfoScreen.dart'; import 'DownloadInfoScreen.dart';
import 'components/ContentLoading.dart'; import 'components/ContentLoading.dart';
@ -143,7 +144,7 @@ class _DownloadListScreenState extends State<DownloadListScreen> {
} }
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( mixRoute(
builder: (context) => DownloadInfoScreen( builder: (context) => DownloadInfoScreen(
comicId: e.id, comicId: e.id,
comicTitle: e.title, comicTitle: e.title,
@ -170,7 +171,7 @@ class _DownloadListScreenState extends State<DownloadListScreen> {
onPressed: () async { onPressed: () async {
await Navigator.push( await Navigator.push(
context, context,
MaterialPageRoute( mixRoute(
builder: (context) => const DownloadExportGroupScreen(), builder: (context) => const DownloadExportGroupScreen(),
), ),
); );
@ -197,7 +198,7 @@ class _DownloadListScreenState extends State<DownloadListScreen> {
onPressed: () async { onPressed: () async {
await Navigator.push( await Navigator.push(
context, context,
MaterialPageRoute( mixRoute(
builder: (context) => const DownloadImportScreen(), builder: (context) => const DownloadImportScreen(),
), ),
); );

View File

@ -10,6 +10,7 @@ import 'package:pikapika/basic/config/FullScreenUI.dart';
import 'package:pikapika/basic/config/ReaderDirection.dart'; import 'package:pikapika/basic/config/ReaderDirection.dart';
import 'package:pikapika/basic/config/ReaderType.dart'; import 'package:pikapika/basic/config/ReaderType.dart';
import 'package:pikapika/basic/Method.dart'; import 'package:pikapika/basic/Method.dart';
import '../basic/config/IconLoading.dart';
import 'components/ContentError.dart'; import 'components/ContentError.dart';
import 'components/ContentLoading.dart'; import 'components/ContentLoading.dart';
import 'components/ImageReader.dart'; import 'components/ImageReader.dart';
@ -87,7 +88,7 @@ class _DownloadReaderScreenState extends State<DownloadReaderScreen> {
if (orderMap.containsKey(epOrder)) { if (orderMap.containsKey(epOrder)) {
_replacement = true; _replacement = true;
Navigator.of(context).pushReplacement( Navigator.of(context).pushReplacement(
MaterialPageRoute( mixRoute(
builder: (context) => DownloadReaderScreen( builder: (context) => DownloadReaderScreen(
comicInfo: widget.comicInfo, comicInfo: widget.comicInfo,
epList: widget.epList, epList: widget.epList,
@ -102,7 +103,7 @@ class _DownloadReaderScreenState extends State<DownloadReaderScreen> {
FutureOr<dynamic> _onReloadEp() { FutureOr<dynamic> _onReloadEp() {
_replacement = true; _replacement = true;
Navigator.of(context).pushReplacement( Navigator.of(context).pushReplacement(
MaterialPageRoute( mixRoute(
builder: (context) => DownloadReaderScreen( builder: (context) => DownloadReaderScreen(
comicInfo: widget.comicInfo, comicInfo: widget.comicInfo,
epList: widget.epList, epList: widget.epList,

View File

@ -6,6 +6,7 @@ import 'package:pikapika/screens/components/ContentError.dart';
import 'package:pikapika/screens/components/ContentLoading.dart'; import 'package:pikapika/screens/components/ContentLoading.dart';
import 'package:pikapika/screens/components/Images.dart'; import 'package:pikapika/screens/components/Images.dart';
import '../basic/config/IconLoading.dart';
import 'GameDownloadScreen.dart'; import 'GameDownloadScreen.dart';
import 'components/CommentList.dart'; import 'components/CommentList.dart';
import 'components/GameTitleCard.dart'; import 'components/GameTitleCard.dart';
@ -97,7 +98,7 @@ class _GameInfoScreenState extends State<GameInfoScreen> {
onPressed: () { onPressed: () {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( mixRoute(
builder: (context) => GameDownloadScreen(info), builder: (context) => GameDownloadScreen(info),
), ),
); );

View File

@ -4,6 +4,7 @@ import 'package:pikapika/basic/Entities.dart';
import 'package:pikapika/basic/Method.dart'; import 'package:pikapika/basic/Method.dart';
import 'package:pikapika/screens/components/ContentBuilder.dart'; import 'package:pikapika/screens/components/ContentBuilder.dart';
import '../basic/config/IconLoading.dart';
import 'GameInfoScreen.dart'; import 'GameInfoScreen.dart';
import 'components/Images.dart'; import 'components/Images.dart';
import 'components/RightClickPop.dart'; import 'components/RightClickPop.dart';
@ -222,7 +223,7 @@ class GameCard extends StatelessWidget {
onTap: () { onTap: () {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( mixRoute(
builder: (context) => GameInfoScreen(info.id)), builder: (context) => GameInfoScreen(info.id)),
); );
}, },

View File

@ -124,14 +124,14 @@ class _InitScreenState extends State<InitScreen> {
if (initUrl != null) { if (initUrl != null) {
if (RegExp(r"^pika://comic/([0-9A-z]+)/$").allMatches(initUrl!).isNotEmpty) { if (RegExp(r"^pika://comic/([0-9A-z]+)/$").allMatches(initUrl!).isNotEmpty) {
String comicId = RegExp(r"^pika://comic/([0-9A-z]+)/$").allMatches(initUrl!).first.group(1)!; String comicId = RegExp(r"^pika://comic/([0-9A-z]+)/$").allMatches(initUrl!).first.group(1)!;
Navigator.of(context).pushReplacement(MaterialPageRoute( Navigator.of(context).pushReplacement(mixRoute(
builder: (BuildContext context) => builder: (BuildContext context) =>
ComicInfoScreen(comicId: comicId, holdPkz: true), ComicInfoScreen(comicId: comicId, holdPkz: true),
)); ));
return; return;
} else if (RegExp(r"^.*\.pkz$").allMatches(initUrl!).isNotEmpty) { } else if (RegExp(r"^.*\.pkz$").allMatches(initUrl!).isNotEmpty) {
File file = await toFile(initUrl!); File file = await toFile(initUrl!);
Navigator.of(context).pushReplacement(MaterialPageRoute( Navigator.of(context).pushReplacement(mixRoute(
builder: (BuildContext context) => builder: (BuildContext context) =>
PkzArchiveScreen(pkzPath: file.path, holdPkz: true), PkzArchiveScreen(pkzPath: file.path, holdPkz: true),
)); ));
@ -139,7 +139,7 @@ class _InitScreenState extends State<InitScreen> {
} else if (RegExp(r"^.*\.((pki)|(zip))$").allMatches(initUrl!).isNotEmpty) { } else if (RegExp(r"^.*\.((pki)|(zip))$").allMatches(initUrl!).isNotEmpty) {
File file = await toFile(initUrl!); File file = await toFile(initUrl!);
Navigator.of(context).pushReplacement( Navigator.of(context).pushReplacement(
MaterialPageRoute( mixRoute(
builder: (BuildContext context) => builder: (BuildContext context) =>
DownloadOnlyImportScreen(path: file.path, holdPkz: true), DownloadOnlyImportScreen(path: file.path, holdPkz: true),
), ),
@ -197,13 +197,13 @@ class _InitScreenState extends State<InitScreen> {
// token或username+password有效则直接进入登录好的界面 // token或username+password有效则直接进入登录好的界面
Navigator.pushReplacement( Navigator.pushReplacement(
context, context,
MaterialPageRoute(builder: (context) => const AppScreen()), mixRoute(builder: (context) => const AppScreen()),
); );
} else { } else {
// //
Navigator.pushReplacement( Navigator.pushReplacement(
context, context,
MaterialPageRoute(builder: (context) => const AccountScreen()), mixRoute(builder: (context) => const AccountScreen()),
); );
} }
} }

View File

@ -13,6 +13,7 @@ import 'package:uri_to_file/uri_to_file.dart';
import '../basic/Common.dart'; import '../basic/Common.dart';
import '../basic/Navigator.dart'; import '../basic/Navigator.dart';
import '../basic/config/IconLoading.dart';
import 'PkzComicInfoScreen.dart'; import 'PkzComicInfoScreen.dart';
class PkzArchiveScreen extends StatefulWidget { class PkzArchiveScreen extends StatefulWidget {
@ -80,7 +81,7 @@ class _PkzArchiveScreenState extends State<PkzArchiveScreen> with RouteAware {
} }
_info = await method.pkzInfo(widget.pkzPath); _info = await method.pkzInfo(widget.pkzPath);
if (_info.comics.length == 1) { if (_info.comics.length == 1) {
Navigator.of(context).pushReplacement(MaterialPageRoute( Navigator.of(context).pushReplacement(mixRoute(
builder: (BuildContext context) => PkzComicInfoScreen( builder: (BuildContext context) => PkzComicInfoScreen(
pkzPath: widget.pkzPath, pkzPath: widget.pkzPath,
pkzComic: _info.comics.first, pkzComic: _info.comics.first,
@ -118,7 +119,7 @@ class _PkzArchiveScreenState extends State<PkzArchiveScreen> with RouteAware {
.map((e) => GestureDetector( .map((e) => GestureDetector(
behavior: HitTestBehavior.opaque, behavior: HitTestBehavior.opaque,
onTap: () { onTap: () {
Navigator.of(context).push(MaterialPageRoute( Navigator.of(context).push(mixRoute(
builder: (BuildContext context) { builder: (BuildContext context) {
return PkzComicInfoScreen( return PkzComicInfoScreen(
pkzComic: e, pkzComic: e,

View File

@ -11,6 +11,7 @@ import 'package:uri_to_file/uri_to_file.dart';
import '../basic/Common.dart'; import '../basic/Common.dart';
import '../basic/Navigator.dart'; import '../basic/Navigator.dart';
import '../basic/config/IconLoading.dart';
import 'PkzArchiveScreen.dart'; import 'PkzArchiveScreen.dart';
import 'components/PkzComicInfoCard.dart'; import 'components/PkzComicInfoCard.dart';
@ -89,7 +90,7 @@ class _PkzComicInfoScreenState extends State<PkzComicInfoScreen>
for (var chapter in volume.chapters) { for (var chapter in volume.chapters) {
chapterButtons.add(MaterialButton( chapterButtons.add(MaterialButton(
onPressed: () { onPressed: () {
Navigator.of(context).push(MaterialPageRoute( Navigator.of(context).push(mixRoute(
builder: (BuildContext context) { builder: (BuildContext context) {
return PkzReaderScreen( return PkzReaderScreen(
comicInfo: widget.pkzComic, comicInfo: widget.pkzComic,
@ -206,7 +207,7 @@ class _PkzComicInfoScreenState extends State<PkzComicInfoScreen>
child: MaterialButton( child: MaterialButton(
onPressed: () { onPressed: () {
if (chapters.containsKey(_log?.lastViewEpId)) { if (chapters.containsKey(_log?.lastViewEpId)) {
Navigator.of(context).push(MaterialPageRoute( Navigator.of(context).push(mixRoute(
builder: (BuildContext context) { builder: (BuildContext context) {
return PkzReaderScreen( return PkzReaderScreen(
comicInfo: widget.pkzComic, comicInfo: widget.pkzComic,
@ -218,7 +219,7 @@ class _PkzComicInfoScreenState extends State<PkzComicInfoScreen>
)); ));
return; return;
} }
Navigator.of(context).push(MaterialPageRoute( Navigator.of(context).push(mixRoute(
builder: (BuildContext context) { builder: (BuildContext context) {
return PkzReaderScreen( return PkzReaderScreen(
comicInfo: widget.pkzComic, comicInfo: widget.pkzComic,

View File

@ -11,6 +11,7 @@ import 'package:pikapika/basic/config/FullScreenUI.dart';
import 'package:pikapika/basic/config/ReaderDirection.dart'; import 'package:pikapika/basic/config/ReaderDirection.dart';
import 'package:pikapika/basic/config/ReaderType.dart'; import 'package:pikapika/basic/config/ReaderType.dart';
import 'package:pikapika/basic/Method.dart'; import 'package:pikapika/basic/Method.dart';
import '../basic/config/IconLoading.dart';
import 'components/ContentError.dart'; import 'components/ContentError.dart';
import 'components/ContentLoading.dart'; import 'components/ContentLoading.dart';
import 'components/ImageReader.dart'; import 'components/ImageReader.dart';
@ -127,7 +128,7 @@ class _PkzReaderScreenState extends State<PkzReaderScreen> {
final ep = widget.epList[epOrder]; final ep = widget.epList[epOrder];
_replacement = true; _replacement = true;
Navigator.of(context).pushReplacement( Navigator.of(context).pushReplacement(
MaterialPageRoute( mixRoute(
builder: (context) => PkzReaderScreen( builder: (context) => PkzReaderScreen(
comicInfo: widget.comicInfo, comicInfo: widget.comicInfo,
pkzPath: widget.pkzPath, pkzPath: widget.pkzPath,
@ -141,7 +142,7 @@ class _PkzReaderScreenState extends State<PkzReaderScreen> {
FutureOr<dynamic> _onReloadEp() { FutureOr<dynamic> _onReloadEp() {
_replacement = true; _replacement = true;
Navigator.of(context).pushReplacement( Navigator.of(context).pushReplacement(
MaterialPageRoute( mixRoute(
builder: (context) => PkzReaderScreen( builder: (context) => PkzReaderScreen(
comicInfo: widget.comicInfo, comicInfo: widget.comicInfo,
currentEpId: widget.currentEpId, currentEpId: widget.currentEpId,

View File

@ -7,6 +7,7 @@ import 'package:pikapika/basic/config/ListLayout.dart';
import 'package:pikapika/basic/Method.dart'; import 'package:pikapika/basic/Method.dart';
import 'package:pikapika/screens/components/RightClickPop.dart'; import 'package:pikapika/screens/components/RightClickPop.dart';
import '../basic/Entities.dart'; import '../basic/Entities.dart';
import '../basic/config/IconLoading.dart';
import 'components/ComicPager.dart'; import 'components/ComicPager.dart';
// //
@ -36,7 +37,7 @@ class _SearchScreenState extends State<SearchScreen> {
if (value.isNotEmpty) { if (value.isNotEmpty) {
Navigator.pushReplacement( Navigator.pushReplacement(
context, context,
MaterialPageRoute( mixRoute(
builder: (context) => SearchScreen( builder: (context) => SearchScreen(
keyword: value, keyword: value,
category: widget.category, category: widget.category,
@ -71,7 +72,7 @@ class _SearchScreenState extends State<SearchScreen> {
if (category == categoryTitle(null)) { if (category == categoryTitle(null)) {
category = null; category = null;
} }
Navigator.of(context).pushReplacement(MaterialPageRoute( Navigator.of(context).pushReplacement(mixRoute(
builder: (context) { builder: (context) {
return SearchScreen( return SearchScreen(
category: category, category: category,

View File

@ -67,7 +67,7 @@ class SettingsScreen extends StatelessWidget {
onTap: () async { onTap: () async {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( mixRoute(
builder: (context) => const ModifyPasswordScreen()), builder: (context) => const ModifyPasswordScreen()),
); );
}, },
@ -103,7 +103,7 @@ class SettingsScreen extends StatelessWidget {
onTap: () { onTap: () {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute(builder: (context) => const CleanScreen()), mixRoute(builder: (context) => const CleanScreen()),
); );
}, },
title: const Text('清除缓存'), title: const Text('清除缓存'),
@ -147,7 +147,7 @@ class SettingsScreen extends StatelessWidget {
await confirmDialog(context, "文件迁移", "此功能菜单保存后, 需要重启程序, 您确认吗"); await confirmDialog(context, "文件迁移", "此功能菜单保存后, 需要重启程序, 您确认吗");
if (f) { if (f) {
Navigator.of(context).pushAndRemoveUntil( Navigator.of(context).pushAndRemoveUntil(
MaterialPageRoute(builder: (BuildContext context) { mixRoute(builder: (BuildContext context) {
return const MigrateScreen(); return const MigrateScreen();
}), }),
(route) => false, (route) => false,

View File

@ -10,6 +10,7 @@ import 'package:pikapika/screens/ThemeScreen.dart';
import 'package:pikapika/screens/ViewLogsScreen.dart'; import 'package:pikapika/screens/ViewLogsScreen.dart';
import 'package:pikapika/basic/Method.dart'; import 'package:pikapika/basic/Method.dart';
import '../basic/config/IconLoading.dart';
import '../basic/config/IsPro.dart'; import '../basic/config/IsPro.dart';
import '../basic/config/Themes.dart'; import '../basic/config/Themes.dart';
import 'SettingsScreen.dart'; import 'SettingsScreen.dart';
@ -58,7 +59,7 @@ class _SpaceScreenState extends State<SpaceScreen> {
await method.setPassword(""); await method.setPassword("");
Navigator.pushReplacement( Navigator.pushReplacement(
context, context,
MaterialPageRoute( mixRoute(
builder: (context) => const AccountScreen()), builder: (context) => const AccountScreen()),
); );
} }
@ -69,7 +70,7 @@ class _SpaceScreenState extends State<SpaceScreen> {
onPressed: () { onPressed: () {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute(builder: (context) => const AboutScreen()), mixRoute(builder: (context) => const AboutScreen()),
); );
}, },
icon: Badged( icon: Badged(
@ -80,7 +81,7 @@ class _SpaceScreenState extends State<SpaceScreen> {
IconButton( IconButton(
onPressed: () { onPressed: () {
Navigator.of(context) Navigator.of(context)
.push(MaterialPageRoute(builder: (BuildContext context) { .push(mixRoute(builder: (BuildContext context) {
return const ProScreen(); return const ProScreen();
})); }));
}, },
@ -92,7 +93,7 @@ class _SpaceScreenState extends State<SpaceScreen> {
onPressed: () { onPressed: () {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute(builder: (context) => const SettingsScreen()), mixRoute(builder: (context) => const SettingsScreen()),
); );
}, },
icon: const Icon(Icons.settings), icon: const Icon(Icons.settings),
@ -109,7 +110,7 @@ class _SpaceScreenState extends State<SpaceScreen> {
if (androidNightModeDisplay) { if (androidNightModeDisplay) {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute(builder: (context) => const ThemeScreen()), mixRoute(builder: (context) => const ThemeScreen()),
); );
} else { } else {
chooseLightTheme(context); chooseLightTheme(context);
@ -122,7 +123,7 @@ class _SpaceScreenState extends State<SpaceScreen> {
onTap: () { onTap: () {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( mixRoute(
builder: (context) => const FavouritePaperScreen()), builder: (context) => const FavouritePaperScreen()),
); );
}, },
@ -133,7 +134,7 @@ class _SpaceScreenState extends State<SpaceScreen> {
onTap: () { onTap: () {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute(builder: (context) => const ViewLogsScreen()), mixRoute(builder: (context) => const ViewLogsScreen()),
); );
}, },
title: const Text('浏览记录'), title: const Text('浏览记录'),
@ -143,7 +144,7 @@ class _SpaceScreenState extends State<SpaceScreen> {
onTap: () { onTap: () {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( mixRoute(
builder: (context) => const DownloadListScreen()), builder: (context) => const DownloadListScreen()),
); );
}, },
@ -154,7 +155,7 @@ class _SpaceScreenState extends State<SpaceScreen> {
onTap: () { onTap: () {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute(builder: (context) => const ProScreen()), mixRoute(builder: (context) => const ProScreen()),
); );
}, },
title: const Text('发电'), title: const Text('发电'),
@ -164,7 +165,7 @@ class _SpaceScreenState extends State<SpaceScreen> {
onTap: () { onTap: () {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute(builder: (context) => const AboutScreen()), mixRoute(builder: (context) => const AboutScreen()),
); );
}, },
title: Badged( title: Badged(

View File

@ -7,6 +7,7 @@ import 'package:pikapika/screens/components/ComicInfoCard.dart';
import 'package:pikapika/screens/components/RightClickPop.dart'; import 'package:pikapika/screens/components/RightClickPop.dart';
import '../basic/Entities.dart'; import '../basic/Entities.dart';
import '../basic/config/IconLoading.dart';
import 'ComicInfoScreen.dart'; import 'ComicInfoScreen.dart';
import 'components/Images.dart'; import 'components/Images.dart';
@ -159,7 +160,7 @@ class _ViewLogsScreenState extends State<ViewLogsScreen> {
void _chooseComic(String comicId) { void _chooseComic(String comicId) {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( mixRoute(
builder: (context) => ComicInfoScreen( builder: (context) => ComicInfoScreen(
comicId: comicId, comicId: comicId,
), ),

View File

@ -5,6 +5,7 @@ import 'package:pikapika/basic/Entities.dart' as e;
import 'package:pikapika/screens/CommentScreen.dart'; import 'package:pikapika/screens/CommentScreen.dart';
import 'package:pikapika/screens/components/ItemBuilder.dart'; import 'package:pikapika/screens/components/ItemBuilder.dart';
import 'package:pikapika/basic/Method.dart'; import 'package:pikapika/basic/Method.dart';
import '../../basic/config/IconLoading.dart';
import 'CommentItem.dart'; import 'CommentItem.dart';
import 'CommentMainType.dart'; import 'CommentMainType.dart';
@ -82,7 +83,7 @@ class _CommentListState extends State<CommentList> {
return InkWell( return InkWell(
onTap: () { onTap: () {
Navigator.of(context).push( Navigator.of(context).push(
MaterialPageRoute( mixRoute(
builder: (context) => builder: (context) =>
CommentScreen(widget.mainType, widget.mainId, comment), CommentScreen(widget.mainType, widget.mainId, comment),
), ),

View File

@ -23,6 +23,7 @@ import 'package:pikapika/basic/config/ReaderType.dart';
import 'package:pikapika/basic/config/VolumeController.dart'; import 'package:pikapika/basic/config/VolumeController.dart';
import 'package:pikapika/screens/components/PkzImages.dart'; import 'package:pikapika/screens/components/PkzImages.dart';
import 'package:scrollable_positioned_list/scrollable_positioned_list.dart'; import 'package:scrollable_positioned_list/scrollable_positioned_list.dart';
import '../../basic/config/IconLoading.dart';
import '../FilePhotoViewScreen.dart'; import '../FilePhotoViewScreen.dart';
import 'gesture_zoom_box.dart'; import 'gesture_zoom_box.dart';
@ -1680,7 +1681,7 @@ class _GalleryReaderState extends _ImageReaderContentState {
case '预览图片': case '预览图片':
try { try {
var file = await load(); var file = await load();
Navigator.of(context).push(MaterialPageRoute( Navigator.of(context).push(mixRoute(
builder: (context) => FilePhotoViewScreen(file), builder: (context) => FilePhotoViewScreen(file),
)); ));
} catch (e) { } catch (e) {

View File

@ -10,6 +10,7 @@ import 'package:pikapika/basic/config/ImageAddress.dart';
import 'dart:io'; import 'dart:io';
import 'dart:ui' as ui show Codec; import 'dart:ui' as ui show Codec;
import '../../basic/config/IconLoading.dart';
import '../FilePhotoViewScreen.dart'; import '../FilePhotoViewScreen.dart';
// //
@ -343,7 +344,7 @@ Widget buildFile(String file, double? width, double? height,
String? choose = await chooseListDialog(context, '请选择', ['预览图片', '保存图片']); String? choose = await chooseListDialog(context, '请选择', ['预览图片', '保存图片']);
switch (choose) { switch (choose) {
case '预览图片': case '预览图片':
Navigator.of(context).push(MaterialPageRoute( Navigator.of(context).push(mixRoute(
builder: (context) => FilePhotoViewScreen(file), builder: (context) => FilePhotoViewScreen(file),
)); ));
break; break;

View File

@ -3,6 +3,7 @@ import 'package:pikapika/basic/Entities.dart';
import 'package:pikapika/screens/ComicInfoScreen.dart'; import 'package:pikapika/screens/ComicInfoScreen.dart';
import 'package:pikapika/basic/Method.dart'; import 'package:pikapika/basic/Method.dart';
import '../../basic/config/IconLoading.dart';
import 'ItemBuilder.dart'; import 'ItemBuilder.dart';
import 'Images.dart'; import 'Images.dart';
@ -37,7 +38,7 @@ class _RecommendationState extends State<Recommendation> {
var i = 0; var i = 0;
Navigator.pushAndRemoveUntil( Navigator.pushAndRemoveUntil(
context, context,
MaterialPageRoute( mixRoute(
builder: (context) => builder: (context) =>
ComicInfoScreen(comicId: e.id)), ComicInfoScreen(comicId: e.id)),
(route) => i++ < 10); (route) => i++ < 10);

View File

@ -13,6 +13,7 @@ import 'package:pikapika/screens/components/Avatar.dart';
import 'package:pikapika/screens/components/Images.dart'; import 'package:pikapika/screens/components/Images.dart';
import 'package:pikapika/screens/components/ItemBuilder.dart'; import 'package:pikapika/screens/components/ItemBuilder.dart';
import '../../basic/config/IconLoading.dart';
import 'DesktopCropper.dart'; import 'DesktopCropper.dart';
const double _cardHeight = 180; const double _cardHeight = 180;
@ -216,7 +217,7 @@ class _UserProfileCardState extends State<UserProfileCard> {
); );
if (result != null) { if (result != null) {
List<int>? buff = await Navigator.of(context).push( List<int>? buff = await Navigator.of(context).push(
MaterialPageRoute(builder: (BuildContext context) { mixRoute(builder: (BuildContext context) {
return DesktopCropper( return DesktopCropper(
file: result.files.first.path!, file: result.files.first.path!,
aspectRatio: 1, aspectRatio: 1,

View File

@ -14,7 +14,7 @@ packages:
name: archive name: archive
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.3.5" version: "3.3.6"
async: async:
dependency: transitive dependency: transitive
description: description:
@ -543,7 +543,7 @@ packages:
name: url_launcher_windows name: url_launcher_windows
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.0.2" version: "3.0.3"
vector_math: vector_math:
dependency: transitive dependency: transitive
description: description:

View File

@ -15,7 +15,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at # Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 1.6.1+9 version: 1.6.4+10
environment: environment:
sdk: ">=2.12.0 <3.0.0" sdk: ">=2.12.0 <3.0.0"