add reader menu actions
This commit is contained in:
parent
c4b116087e
commit
046a9e8f50
|
@ -21,11 +21,11 @@ Future<void> initAddress() async {
|
|||
_currentAddress = await method.getSwitchAddress();
|
||||
}
|
||||
|
||||
String _currentAddressName() {
|
||||
String currentAddressName() {
|
||||
return _addresses[_currentAddress] ?? "";
|
||||
}
|
||||
|
||||
Future<void> _chooseAddress(BuildContext context) async {
|
||||
Future<void> chooseAddress(BuildContext context) async {
|
||||
String? choose = await showDialog<String>(
|
||||
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(() {});
|
||||
},
|
||||
);
|
||||
|
|
|
@ -21,11 +21,11 @@ int currentImageAddress() {
|
|||
return int.parse(_currentImageAddress);
|
||||
}
|
||||
|
||||
String _currentImageAddressName() {
|
||||
String currentImageAddressName() {
|
||||
return _imageAddresses[_currentImageAddress] ?? "";
|
||||
}
|
||||
|
||||
Future<void> _chooseImageAddress(BuildContext context) async {
|
||||
Future<void> chooseImageAddress(BuildContext context) async {
|
||||
String? choose = await showDialog<String>(
|
||||
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(() {});
|
||||
},
|
||||
);
|
||||
|
|
|
@ -36,7 +36,6 @@ class _PikapikaAppState extends State<PikapikaApp> {
|
|||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return MaterialApp(
|
||||
debugShowCheckedModeBanner: false,
|
||||
theme: currentThemeData(),
|
||||
darkTheme: currentDarkTheme(),
|
||||
navigatorObservers: [navigatorObserver, routeObserver],
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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<ComicReaderScreen> {
|
|||
));
|
||||
}
|
||||
|
||||
FutureOr<dynamic> _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<ComicReaderScreen> {
|
|||
comicTitle: widget.comicInfo.title,
|
||||
onChangeEp: _onChangeEp,
|
||||
onReloadEp: _onReloadEp,
|
||||
onDownload: _onDownload,
|
||||
),
|
||||
),
|
||||
);
|
||||
|
|
|
@ -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<DownloadReaderScreen> {
|
|||
widget.comicInfo.id, _ep.epOrder, _ep.title, position);
|
||||
}
|
||||
|
||||
FutureOr<dynamic> _onDownload() async {
|
||||
defaultToast(context, "您已经在下载阅读");
|
||||
}
|
||||
|
||||
FutureOr<dynamic> _onChangeEp(int epOrder) {
|
||||
var orderMap = Map<int, DownloadEp>();
|
||||
widget.epList.forEach((element) {
|
||||
|
@ -183,6 +188,7 @@ class _DownloadReaderScreenState extends State<DownloadReaderScreen> {
|
|||
comicTitle: widget.comicInfo.title,
|
||||
onReloadEp: _onReloadEp,
|
||||
onChangeEp: _onChangeEp,
|
||||
onDownload: _onDownload,
|
||||
),
|
||||
),
|
||||
);
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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<dynamic> Function(int) onChangeEp;
|
||||
final FutureOr<dynamic> Function() onReloadEp;
|
||||
final FutureOr<dynamic> 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<StatefulWidget> 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
|
||||
|
|
Loading…
Reference in New Issue