mirror of
https://github.com/venera-app/venera.git
synced 2025-09-27 07:47:24 +00:00
fix #52
This commit is contained in:
@@ -829,6 +829,7 @@ class ComicList extends StatefulWidget {
|
||||
this.trailingSliver,
|
||||
this.errorLeading,
|
||||
this.menuBuilder,
|
||||
this.controller,
|
||||
});
|
||||
|
||||
final Future<Res<List<Comic>>> Function(int page)? loadPage;
|
||||
@@ -843,6 +844,8 @@ class ComicList extends StatefulWidget {
|
||||
|
||||
final List<MenuEntry> Function(Comic)? menuBuilder;
|
||||
|
||||
final ScrollController? controller;
|
||||
|
||||
@override
|
||||
State<ComicList> createState() => ComicListState();
|
||||
}
|
||||
@@ -1064,6 +1067,7 @@ class ComicListState extends State<ComicList> {
|
||||
);
|
||||
}
|
||||
return SmoothCustomScrollView(
|
||||
controller: widget.controller,
|
||||
slivers: [
|
||||
if (widget.leadingSliver != null) widget.leadingSliver!,
|
||||
if (_maxPage != 1) _buildSliverPageSelector(),
|
||||
|
@@ -47,10 +47,16 @@ class NaviPane extends StatefulWidget {
|
||||
final GlobalKey<NavigatorState> navigatorKey;
|
||||
|
||||
@override
|
||||
State<NaviPane> createState() => _NaviPaneState();
|
||||
State<NaviPane> createState() => NaviPaneState();
|
||||
|
||||
static NaviPaneState of(BuildContext context) {
|
||||
return context.findAncestorStateOfType<NaviPaneState>()!;
|
||||
}
|
||||
}
|
||||
|
||||
class _NaviPaneState extends State<NaviPane>
|
||||
typedef NaviItemTapListener = void Function(int);
|
||||
|
||||
class NaviPaneState extends State<NaviPane>
|
||||
with SingleTickerProviderStateMixin {
|
||||
late int _currentPage = widget.initialPage;
|
||||
|
||||
@@ -66,6 +72,16 @@ class _NaviPaneState extends State<NaviPane>
|
||||
|
||||
late AnimationController controller;
|
||||
|
||||
final _naviItemTapListeners = <NaviItemTapListener>[];
|
||||
|
||||
void addNaviItemTapListener(NaviItemTapListener listener) {
|
||||
_naviItemTapListeners.add(listener);
|
||||
}
|
||||
|
||||
void removeNaviItemTapListener(NaviItemTapListener listener) {
|
||||
_naviItemTapListeners.remove(listener);
|
||||
}
|
||||
|
||||
static const _kBottomBarHeight = 58.0;
|
||||
|
||||
static const _kFoldedSideBarWidth = 80.0;
|
||||
@@ -85,9 +101,15 @@ class _NaviPaneState extends State<NaviPane>
|
||||
}
|
||||
|
||||
void updatePage(int index) {
|
||||
for (var listener in _naviItemTapListeners) {
|
||||
listener(index);
|
||||
}
|
||||
if (widget.observer.routes.length > 1) {
|
||||
widget.navigatorKey.currentState!.popUntil((route) => route.isFirst);
|
||||
}
|
||||
if (currentPage == index) {
|
||||
return;
|
||||
}
|
||||
setState(() {
|
||||
currentPage = index;
|
||||
});
|
||||
@@ -670,14 +692,14 @@ class _NaviPopScope extends StatelessWidget {
|
||||
class _NaviMainView extends StatefulWidget {
|
||||
const _NaviMainView({required this.state});
|
||||
|
||||
final _NaviPaneState state;
|
||||
final NaviPaneState state;
|
||||
|
||||
@override
|
||||
State<_NaviMainView> createState() => _NaviMainViewState();
|
||||
}
|
||||
|
||||
class _NaviMainViewState extends State<_NaviMainView> {
|
||||
_NaviPaneState get state => widget.state;
|
||||
NaviPaneState get state => widget.state;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
|
Reference in New Issue
Block a user