From 21d3a262628b9a0373cb9831106d92437c3deae9 Mon Sep 17 00:00:00 2001 From: Yinsee Date: Fri, 2 Oct 2020 18:45:00 +0800 Subject: [PATCH] Update page_turn.dart - fix exception when going Prev() at the first page - optimize rendering by hiding invisible pages using Offstage --- lib/page_turn.dart | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/page_turn.dart b/lib/page_turn.dart index 077987f..c54a686 100644 --- a/lib/page_turn.dart +++ b/lib/page_turn.dart @@ -113,7 +113,7 @@ class PageTurnState extends State with TickerProviderStateMixin { } else { await _controllers[pageNumber].forward(); } - } else { + } else if (pageNumber > 0) { print( 'Val:${_controllers[pageNumber - 1].value} -> ${widget.cutoff + 0.28}'); if (!_isFirstPage && @@ -170,6 +170,7 @@ class PageTurnState extends State with TickerProviderStateMixin { @override Widget build(BuildContext context) { + int i = 0; return Material( child: LayoutBuilder( builder: (context, dimens) => GestureDetector( @@ -184,7 +185,13 @@ class PageTurnState extends State with TickerProviderStateMixin { widget.lastPage, ], if (pages != null) - ...pages + ...pages.map((p) { + i++; + final pn = pages.length - pageNumber; + final ret = Offstage( + offstage: !(i >= pn - 1 && i <= pn + 1), child: p); + return ret; + }).toList() else ...[ Container(child: CircularProgressIndicator()), ],