Adding new pages to a PageView while swiping. I got to this point, and I am kind of close, but not close enough…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | import 'package:flutter/material.dart'; void main() => runApp(LimeApp()); class LimeApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Pageview Test', home: MainPage(), ); } } int _lowerCount = -1; int _upperCount = 1; class MainPage extends StatefulWidget { MainPage({ Key key, }) : super(key: key); @override _MainPageState createState() => _MainPageState(); } class _MainPageState extends State<MainPage> { final List<int> _pages = <int>[-1, 0, 1]; final PageController pageController = PageController(initialPage: 1); Widget _buildPages(page) { return Center( child: Text(page.toString(), style: new TextStyle(fontSize: 60.0)), ); } @override void initState() { // TODO: implement initState super.initState(); pageController.addListener(() { print("inside listener"); }); } @override Widget build(BuildContext context) { return Scaffold( body: Container( margin: EdgeInsets.symmetric( vertical: 50.0, ), child: PageView( onPageChanged: (pageId) { if (pageId == _pages.length - 1) { print("Last page, add page to end"); _upperCount = _upperCount + 1; setState(() { _pages.add(_upperCount); }); } if (pageId == 0) { print("First page, add page to start"); _lowerCount = _lowerCount - 1; setState(() { _pages.insert(0, _lowerCount); }); pageController.jumpToPage(1); } print(_pages); }, controller: pageController, children: List<Widget>.generate(_pages.length, (index) { return _buildPages(_pages[index]); }), ), ), ); } } |
If you like this question & answer and want to contribute, then write your question & answer and email to freewebmentor[@]gmail.com. Your question and answer will appear on FreeWebMentor.com and help other developers.