Padding slider iphone edge
This commit is contained in:
parent
ad3964159c
commit
ec96f238d9
|
@ -53,6 +53,8 @@
|
||||||
<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="pika" />
|
||||||
|
|
||||||
<data
|
<data
|
||||||
android:mimeType="*/*"
|
android:mimeType="*/*"
|
||||||
android:pathPattern=".*\\.pkz"
|
android:pathPattern=".*\\.pkz"
|
||||||
|
|
|
@ -2,6 +2,15 @@
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
|
<key>CFBundleURLTypes</key>
|
||||||
|
<array>
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleURLSchemes</key>
|
||||||
|
<array>
|
||||||
|
<string>pika</string>
|
||||||
|
</array>
|
||||||
|
</dict>
|
||||||
|
</array>
|
||||||
<key>CADisableMinimumFrameDurationOnPhone</key>
|
<key>CADisableMinimumFrameDurationOnPhone</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>CFBundleDevelopmentRegion</key>
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
|
|
|
@ -6,6 +6,7 @@ import 'package:flutter_styled_toast/flutter_styled_toast.dart';
|
||||||
import 'package:uni_links/uni_links.dart';
|
import 'package:uni_links/uni_links.dart';
|
||||||
import 'package:uri_to_file/uri_to_file.dart';
|
import 'package:uri_to_file/uri_to_file.dart';
|
||||||
|
|
||||||
|
import '../screens/ComicInfoScreen.dart';
|
||||||
import '../screens/DownloadOnlyImportScreen.dart';
|
import '../screens/DownloadOnlyImportScreen.dart';
|
||||||
import '../screens/PkzArchiveScreen.dart';
|
import '../screens/PkzArchiveScreen.dart';
|
||||||
import 'config/TimeOffsetHour.dart';
|
import 'config/TimeOffsetHour.dart';
|
||||||
|
@ -297,7 +298,17 @@ Future<String?> inputString(BuildContext context, String title,
|
||||||
StreamSubscription<String?> linkSubscript(BuildContext context) {
|
StreamSubscription<String?> linkSubscript(BuildContext context) {
|
||||||
return linkStream.listen((uri) async {
|
return linkStream.listen((uri) async {
|
||||||
if (uri == null) return;
|
if (uri == null) return;
|
||||||
if (RegExp(r"^.*\.pkz$").allMatches(uri).isNotEmpty) {
|
if (RegExp(r"^pika://comic/([0-9A-z]+)/$").allMatches(uri).isNotEmpty) {
|
||||||
|
String comicId = RegExp(r"^pika://comic/([0-9A-z]+)/$")
|
||||||
|
.allMatches(uri)
|
||||||
|
.first
|
||||||
|
.group(1)!;
|
||||||
|
Navigator.of(context).push(
|
||||||
|
MaterialPageRoute(
|
||||||
|
builder: (BuildContext context) => ComicInfoScreen(comicId: comicId),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
} 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(
|
MaterialPageRoute(
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import 'dart:async';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:pikapika/basic/Common.dart';
|
import 'package:pikapika/basic/Common.dart';
|
||||||
import 'package:pikapika/basic/Cross.dart';
|
import 'package:pikapika/basic/Cross.dart';
|
||||||
|
@ -23,8 +25,10 @@ import 'components/RightClickPop.dart';
|
||||||
// 漫画详情
|
// 漫画详情
|
||||||
class ComicInfoScreen extends StatefulWidget {
|
class ComicInfoScreen extends StatefulWidget {
|
||||||
final String comicId;
|
final String comicId;
|
||||||
|
final bool holdPkz;
|
||||||
|
|
||||||
const ComicInfoScreen({Key? key, required this.comicId}) : super(key: key);
|
const ComicInfoScreen({Key? key, required this.comicId, this.holdPkz = false})
|
||||||
|
: super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<StatefulWidget> createState() => _ComicInfoScreenState();
|
State<StatefulWidget> createState() => _ComicInfoScreenState();
|
||||||
|
@ -36,6 +40,7 @@ class _ComicInfoScreenState extends State<ComicInfoScreen> with RouteAware {
|
||||||
late Key _comicFutureKey = UniqueKey();
|
late Key _comicFutureKey = UniqueKey();
|
||||||
late Future<ViewLog?> _viewFuture = _loadViewLog();
|
late Future<ViewLog?> _viewFuture = _loadViewLog();
|
||||||
late Future<List<Ep>> _epListFuture = _loadEps();
|
late Future<List<Ep>> _epListFuture = _loadEps();
|
||||||
|
StreamSubscription<String?>? _linkSubscription;
|
||||||
|
|
||||||
Future<ComicInfo> _loadComic() async {
|
Future<ComicInfo> _loadComic() async {
|
||||||
return await method.comicInfo(widget.comicId);
|
return await method.comicInfo(widget.comicId);
|
||||||
|
@ -69,8 +74,17 @@ class _ComicInfoScreenState extends State<ComicInfoScreen> with RouteAware {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
if (widget.holdPkz) {
|
||||||
|
_linkSubscription = linkSubscript(context);
|
||||||
|
}
|
||||||
|
super.initState();
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
|
_linkSubscription?.cancel();
|
||||||
routeObserver.unsubscribe(this);
|
routeObserver.unsubscribe(this);
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,6 +33,7 @@ import 'package:pikapika/basic/config/UsingRightClickPop.dart';
|
||||||
import 'package:pikapika/basic/config/Version.dart';
|
import 'package:pikapika/basic/config/Version.dart';
|
||||||
import 'package:pikapika/basic/config/VolumeController.dart';
|
import 'package:pikapika/basic/config/VolumeController.dart';
|
||||||
import 'package:pikapika/basic/config/ShadowCategoriesMode.dart';
|
import 'package:pikapika/basic/config/ShadowCategoriesMode.dart';
|
||||||
|
import 'package:pikapika/screens/ComicInfoScreen.dart';
|
||||||
import 'package:pikapika/screens/PkzArchiveScreen.dart';
|
import 'package:pikapika/screens/PkzArchiveScreen.dart';
|
||||||
import 'package:uni_links/uni_links.dart';
|
import 'package:uni_links/uni_links.dart';
|
||||||
import 'package:uri_to_file/uri_to_file.dart';
|
import 'package:uri_to_file/uri_to_file.dart';
|
||||||
|
@ -107,7 +108,14 @@ class _InitScreenState extends State<InitScreen> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (initUrl != null) {
|
if (initUrl != null) {
|
||||||
if (RegExp(r"^.*\.pkz$").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)!;
|
||||||
|
Navigator.of(context).pushReplacement(MaterialPageRoute(
|
||||||
|
builder: (BuildContext context) =>
|
||||||
|
ComicInfoScreen(comicId: comicId, holdPkz: true),
|
||||||
|
));
|
||||||
|
return;
|
||||||
|
} 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(MaterialPageRoute(
|
||||||
builder: (BuildContext context) =>
|
builder: (BuildContext context) =>
|
||||||
|
|
|
@ -104,14 +104,17 @@ class _KnightLeaderBoard extends StatefulWidget {
|
||||||
|
|
||||||
class _KnightLeaderBoardState extends State<_KnightLeaderBoard> {
|
class _KnightLeaderBoardState extends State<_KnightLeaderBoard> {
|
||||||
Future<List<Knight>> _future = method.leaderboardOfKnight();
|
Future<List<Knight>> _future = method.leaderboardOfKnight();
|
||||||
|
Key _key = UniqueKey();
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return ContentBuilder(
|
return ContentBuilder(
|
||||||
|
key: _key,
|
||||||
future: _future,
|
future: _future,
|
||||||
onRefresh: () async {
|
onRefresh: () async {
|
||||||
setState(() {
|
setState(() {
|
||||||
_future = method.leaderboardOfKnight();
|
_future = method.leaderboardOfKnight();
|
||||||
|
_key = UniqueKey();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
successBuilder: (
|
successBuilder: (
|
||||||
|
|
|
@ -387,6 +387,15 @@ abstract class _ImageReaderContentState extends State<_ImageReaderContent> {
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
widget.struct.fullScreen
|
||||||
|
? Container()
|
||||||
|
: Container(
|
||||||
|
color: const Color(0x88000000),
|
||||||
|
child: SafeArea(
|
||||||
|
top: false,
|
||||||
|
child: Container(),
|
||||||
|
),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
case ReaderSliderPosition.RIGHT:
|
case ReaderSliderPosition.RIGHT:
|
||||||
|
|
Loading…
Reference in New Issue