choose ep
This commit is contained in:
parent
491f2201f5
commit
57104f7b6d
|
@ -6,6 +6,7 @@ import 'package:event/event.dart';
|
||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.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:photo_view/photo_view_gallery.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';
|
||||||
|
@ -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() {
|
Widget _buildBar() {
|
||||||
return Column(
|
return Column(
|
||||||
children: [
|
children: [
|
||||||
|
@ -296,12 +309,12 @@ abstract class _ImageReaderContentState extends State<_ImageReaderContent> {
|
||||||
backgroundColor: readerAppbarColor2,
|
backgroundColor: readerAppbarColor2,
|
||||||
actions: [
|
actions: [
|
||||||
IconButton(
|
IconButton(
|
||||||
onPressed: _onSelectDirection,
|
onPressed: _onChooseEp,
|
||||||
icon: Icon(Icons.grid_goldenratio),
|
icon: Icon(Icons.menu_open),
|
||||||
),
|
),
|
||||||
IconButton(
|
IconButton(
|
||||||
onPressed: _onSelectReaderType,
|
onPressed: _onMoreSetting,
|
||||||
icon: Icon(Icons.view_day_outlined),
|
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 {
|
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 {
|
class _WebToonReaderState extends _ImageReaderContentState {
|
||||||
|
|
|
@ -168,6 +168,13 @@ packages:
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.0"
|
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:
|
multi_select_flutter:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
|
|
@ -42,6 +42,7 @@ dependencies:
|
||||||
photo_view: ^0.12.0
|
photo_view: ^0.12.0
|
||||||
multi_select_flutter: ^4.0.0
|
multi_select_flutter: ^4.0.0
|
||||||
flutter_datetime_picker: ^1.5.1
|
flutter_datetime_picker: ^1.5.1
|
||||||
|
modal_bottom_sheet: ^2.0.0
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
|
|
Loading…
Reference in New Issue