add reader menu actions

This commit is contained in:
niuhuan 2021-12-04 09:06:52 +08:00
parent c4b116087e
commit 046a9e8f50
8 changed files with 78 additions and 14 deletions

View File

@ -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(() {});
},
);

View File

@ -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(() {});
},
);

View File

@ -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],

View File

@ -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';

View File

@ -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,
),
),
);

View File

@ -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,
),
),
);

View File

@ -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';

View File

@ -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