Paginate Listview
Complete Code For Paginate Listview In Flutter
main.dart
import 'package:flutter/material.dart'; void main() => runApp(new MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, home: MyHomePage(), ); } } class MyHomePage extends StatefulWidget { @override State<StatefulWidget> createState() => MyHomePageState(); } class MyHomePageState extends State<MyHomePage> { static final List<int> _listData = List<int>.generate(200, (i) => i); ScrollController _scrollController = ScrollController(); int _listOffset = 0; int _listLimit = 10; bool _isLoading = false; List<int> _dataForListView = _listData.sublist(0, 30); _scrollListener() { if (_scrollController.position.pixels == _scrollController.position.maxScrollExtent) { setState(() { _isLoading = true; _listLimit += 50; _listOffset = _listLimit + 1; Future.delayed(Duration(seconds: 3)).then((_) { _dataForListView ..addAll( List<int>.from(_listData.sublist(_listOffset, _listLimit))); }); _isLoading = false; }); } } @override void initState() { super.initState(); _scrollController.addListener(_scrollListener); } @override void dispose() { _scrollController.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( backgroundColor: Colors.lightGreen, title: Text('Listview Paginate'), ), body: ListView( controller: _scrollController, padding: EdgeInsets.all(8.0), children: _dataForListView .map((data) => ListTile(title: Text("Item $data"))) .toList() ..add(ListTile( title: _isLoading ? CircularProgressIndicator() : SizedBox()))), ); } }