choose ep

This commit is contained in:
niuhuan 2021-12-03 17:33:53 +08:00
parent 491f2201f5
commit 57104f7b6d
3 changed files with 93 additions and 4 deletions

View File

@ -6,6 +6,7 @@ import 'package:event/event.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:modal_bottom_sheet/modal_bottom_sheet.dart';
import 'package:photo_view/photo_view_gallery.dart';
import 'package:pikapika/basic/Common.dart';
import 'package:pikapika/basic/Cross.dart';
@ -287,6 +288,18 @@ abstract class _ImageReaderContentState extends State<_ImageReaderContent> {
);
}
/*
IconButton(
onPressed: _onSelectDirection,
icon: Icon(Icons.grid_goldenratio),
),
IconButton(
onPressed: _onSelectReaderType,
icon: Icon(Icons.view_day_outlined),
),
*/
Widget _buildBar() {
return Column(
children: [
@ -296,12 +309,12 @@ abstract class _ImageReaderContentState extends State<_ImageReaderContent> {
backgroundColor: readerAppbarColor2,
actions: [
IconButton(
onPressed: _onSelectDirection,
icon: Icon(Icons.grid_goldenratio),
onPressed: _onChooseEp,
icon: Icon(Icons.menu_open),
),
IconButton(
onPressed: _onSelectReaderType,
icon: Icon(Icons.view_day_outlined),
onPressed: _onMoreSetting,
icon: Icon(Icons.more_horiz),
),
],
),
@ -530,6 +543,27 @@ abstract class _ImageReaderContentState extends State<_ImageReaderContent> {
}
}
Future _onChooseEp() async {
// todo
var mq = MediaQuery.of(context);
showMaterialModalBottomSheet(
context: context,
backgroundColor: Color(0xFF20253B),
builder: (context) => Container(
height: mq.size.height / 2,
child: _EpChooser(
widget.struct.epNameMap,
widget.struct.epOrder,
widget.struct.onChangeEp,
),
),
);
}
Future _onMoreSetting() async {
// todo
}
//
Future _onNextAction() async {
@ -552,6 +586,53 @@ abstract class _ImageReaderContentState extends State<_ImageReaderContent> {
}
}
class _EpChooser extends StatefulWidget {
final Map<int, String> epNameMap;
final int epOrder;
final FutureOr Function(int) onChangeEp;
_EpChooser(this.epNameMap, this.epOrder, this.onChangeEp);
@override
State<StatefulWidget> createState() => _EpChooserState();
}
class _EpChooserState extends State<_EpChooser> {
@override
Widget build(BuildContext context) {
var entries = widget.epNameMap.entries.toList();
entries.sort((a, b) => a.key - b.key);
var widgets = [
Container(height: 20),
...entries.map((e) {
return Container(
margin: EdgeInsets.only(left: 15, right: 15, top: 5, bottom: 5),
decoration: BoxDecoration(
color: widget.epOrder == e.key ? Colors.grey.withAlpha(35) : null,
border: Border.all(
color: Color(0xff484c60),
style: BorderStyle.solid,
width: .5,
),
),
child: MaterialButton(
onPressed: () {
widget.onChangeEp(e.key);
},
textColor: Colors.white,
child: Text('${e.value}'),
),
);
})
];
return ScrollablePositionedList.builder(
initialScrollIndex: widget.epOrder < 2 ? 0 : widget.epOrder - 2,
itemCount: widgets.length,
itemBuilder: (BuildContext context, int index) => widgets[index],
);
}
}
///////////////////////////////////////////////////////////////////////////////
class _WebToonReaderState extends _ImageReaderContentState {

View File

@ -168,6 +168,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.0"
modal_bottom_sheet:
dependency: "direct main"
description:
name: modal_bottom_sheet
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
multi_select_flutter:
dependency: "direct main"
description:

View File

@ -42,6 +42,7 @@ dependencies:
photo_view: ^0.12.0
multi_select_flutter: ^4.0.0
flutter_datetime_picker: ^1.5.1
modal_bottom_sheet: ^2.0.0
dev_dependencies:
flutter_test: