diff --git a/lib/basic/config/Address.dart b/lib/basic/config/Address.dart index 6206c3f..034ef5f 100644 --- a/lib/basic/config/Address.dart +++ b/lib/basic/config/Address.dart @@ -21,11 +21,11 @@ Future initAddress() async { _currentAddress = await method.getSwitchAddress(); } -String _currentAddressName() { +String currentAddressName() { return _addresses[_currentAddress] ?? ""; } -Future _chooseAddress(BuildContext context) async { +Future chooseAddress(BuildContext context) async { String? choose = await showDialog( context: context, builder: (BuildContext context) { @@ -55,9 +55,9 @@ Widget switchAddressSetting() { builder: (BuildContext context, void Function(void Function()) setState) { return ListTile( title: Text("分流"), - subtitle: Text(_currentAddressName()), + subtitle: Text(currentAddressName()), onTap: () async { - await _chooseAddress(context); + await chooseAddress(context); setState(() {}); }, ); diff --git a/lib/basic/config/ImageAddress.dart b/lib/basic/config/ImageAddress.dart index f8c2941..0769fd0 100644 --- a/lib/basic/config/ImageAddress.dart +++ b/lib/basic/config/ImageAddress.dart @@ -21,11 +21,11 @@ int currentImageAddress() { return int.parse(_currentImageAddress); } -String _currentImageAddressName() { +String currentImageAddressName() { return _imageAddresses[_currentImageAddress] ?? ""; } -Future _chooseImageAddress(BuildContext context) async { +Future chooseImageAddress(BuildContext context) async { String? choose = await showDialog( context: context, builder: (BuildContext context) { @@ -55,9 +55,9 @@ Widget imageSwitchAddressSetting() { builder: (BuildContext context, void Function(void Function()) setState) { return ListTile( title: Text("图片分流"), - subtitle: Text(_currentImageAddressName()), + subtitle: Text(currentImageAddressName()), onTap: () async { - await _chooseImageAddress(context); + await chooseImageAddress(context); setState(() {}); }, ); diff --git a/lib/main.dart b/lib/main.dart index 7128218..9266095 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -36,7 +36,6 @@ class _PikapikaAppState extends State { @override Widget build(BuildContext context) { return MaterialApp( - debugShowCheckedModeBanner: false, theme: currentThemeData(), darkTheme: currentDarkTheme(), navigatorObservers: [navigatorObserver, routeObserver], diff --git a/lib/screens/ComicInfoScreen.dart b/lib/screens/ComicInfoScreen.dart index a33685d..14019fc 100644 --- a/lib/screens/ComicInfoScreen.dart +++ b/lib/screens/ComicInfoScreen.dart @@ -1,4 +1,3 @@ -import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:pikapika/basic/Common.dart'; import 'package:pikapika/basic/Cross.dart'; diff --git a/lib/screens/ComicReaderScreen.dart b/lib/screens/ComicReaderScreen.dart index 69e98d9..53e8572 100644 --- a/lib/screens/ComicReaderScreen.dart +++ b/lib/screens/ComicReaderScreen.dart @@ -10,6 +10,7 @@ import 'package:pikapika/basic/config/FullScreenUI.dart'; import 'package:pikapika/basic/config/Quality.dart'; import 'package:pikapika/screens/components/ContentError.dart'; import 'package:pikapika/screens/components/ContentLoading.dart'; +import 'DownloadConfirmScreen.dart'; import 'components/ImageReader.dart'; // 在线阅读漫画 @@ -107,6 +108,18 @@ class _ComicReaderScreenState extends State { )); } + FutureOr _onDownload() { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => DownloadConfirmScreen( + comicInfo: widget.comicInfo, + epList: widget.epList.reversed.toList(), + ), + ), + ); + } + @override void initState() { // EP @@ -193,6 +206,7 @@ class _ComicReaderScreenState extends State { comicTitle: widget.comicInfo.title, onChangeEp: _onChangeEp, onReloadEp: _onReloadEp, + onDownload: _onDownload, ), ), ); diff --git a/lib/screens/DownloadReaderScreen.dart b/lib/screens/DownloadReaderScreen.dart index ce80aa1..e589e9f 100644 --- a/lib/screens/DownloadReaderScreen.dart +++ b/lib/screens/DownloadReaderScreen.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:pikapika/basic/Common.dart'; import 'package:pikapika/basic/Entities.dart'; import 'package:pikapika/basic/config/AutoFullScreen.dart'; import 'package:pikapika/basic/config/FullScreenUI.dart'; @@ -69,6 +70,10 @@ class _DownloadReaderScreenState extends State { widget.comicInfo.id, _ep.epOrder, _ep.title, position); } + FutureOr _onDownload() async { + defaultToast(context, "您已经在下载阅读"); + } + FutureOr _onChangeEp(int epOrder) { var orderMap = Map(); widget.epList.forEach((element) { @@ -183,6 +188,7 @@ class _DownloadReaderScreenState extends State { comicTitle: widget.comicInfo.title, onReloadEp: _onReloadEp, onChangeEp: _onChangeEp, + onDownload: _onDownload, ), ), ); diff --git a/lib/screens/GameInfoScreen.dart b/lib/screens/GameInfoScreen.dart index 0a9c6e7..3df3833 100644 --- a/lib/screens/GameInfoScreen.dart +++ b/lib/screens/GameInfoScreen.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:flutter_svg/flutter_svg.dart'; import 'package:pikapika/basic/Entities.dart'; import 'package:pikapika/basic/Method.dart'; import 'package:pikapika/screens/components/CommentMainType.dart'; diff --git a/lib/screens/components/ImageReader.dart b/lib/screens/components/ImageReader.dart index fdbf3a5..6737503 100644 --- a/lib/screens/components/ImageReader.dart +++ b/lib/screens/components/ImageReader.dart @@ -12,7 +12,9 @@ import 'package:pikapika/basic/Common.dart'; import 'package:pikapika/basic/Cross.dart'; import 'package:pikapika/basic/Entities.dart'; import 'package:pikapika/basic/Method.dart'; +import 'package:pikapika/basic/config/Address.dart'; import 'package:pikapika/basic/config/FullScreenAction.dart'; +import 'package:pikapika/basic/config/ImageAddress.dart'; import 'package:pikapika/basic/config/KeyboardController.dart'; import 'package:pikapika/basic/config/NoAnimation.dart'; import 'package:pikapika/basic/config/Quality.dart'; @@ -115,6 +117,7 @@ class ImageReaderStruct { final String comicTitle; final FutureOr Function(int) onChangeEp; final FutureOr Function() onReloadEp; + final FutureOr Function() onDownload; const ImageReaderStruct({ required this.images, @@ -127,6 +130,7 @@ class ImageReaderStruct { required this.comicTitle, required this.onChangeEp, required this.onReloadEp, + required this.onDownload, }); } @@ -214,6 +218,8 @@ abstract class _ImageReaderContentState extends State<_ImageReaderContent> { // 记录了是否切换了音量 late bool _listVolume; + // 和初始化与翻页有关 + @override void initState() { _initCurrent(); @@ -277,6 +283,8 @@ abstract class _ImageReaderContentState extends State<_ImageReaderContent> { } } + // 与显示有关的方法 + @override Widget build(BuildContext context) { switch (currentFullScreenAction()) { @@ -562,7 +570,10 @@ abstract class _ImageReaderContentState extends State<_ImageReaderContent> { builder: (context) { return Container( height: MediaQuery.of(context).size.height / 2, - child: _SettingPanel(), + child: _SettingPanel( + widget.struct.onReloadEp, + widget.struct.onDownload, + ), ); }, ); @@ -574,7 +585,7 @@ abstract class _ImageReaderContentState extends State<_ImageReaderContent> { } } - // + // 给子类调用的方法 Future _onNextAction() async { if (widget.struct.epNameMap.containsKey(widget.struct.epOrder + 1)) { @@ -644,6 +655,11 @@ class _EpChooserState extends State<_EpChooser> { } class _SettingPanel extends StatefulWidget { + final FutureOr Function() onReloadEp; + final FutureOr Function() onDownload; + + _SettingPanel(this.onReloadEp, this.onDownload); + @override State createState() => _SettingPanelState(); } @@ -691,6 +707,38 @@ class _SettingPanelState extends State<_SettingPanel> { ], ), ), + Container( + child: Row( + children: [ + _bottomIcon( + icon: Icons.shuffle, + title: currentAddressName(), + onPressed: () async { + await chooseAddress(context); + setState(() {}); + }, + ), + _bottomIcon( + icon: Icons.repeat_one, + title: currentImageAddressName(), + onPressed: () async { + await chooseImageAddress(context); + setState(() {}); + }, + ), + _bottomIcon( + icon: Icons.refresh, + title: "重载页面", + onPressed: widget.onReloadEp, + ), + _bottomIcon( + icon: Icons.file_download, + title: "下载本作", + onPressed: widget.onDownload, + ), + ], + ), + ), ], ); } @@ -799,7 +847,6 @@ class _WebToonReaderState extends _ImageReaderContentState { } Widget _buildList() { - var scaffold = Scaffold.of(context); return LayoutBuilder( builder: (BuildContext context, BoxConstraints constraints) { // reload _images size