Untitled
unknown
plain_text
2 years ago
2.1 kB
4
Indexable
import 'package:flutter/material.dart'; import 'package:kaya_friends/src/helpers/klog.dart'; class InfiniteScrollingListView extends StatefulWidget { const InfiniteScrollingListView({super.key}); @override State<InfiniteScrollingListView> createState() => _InfiniteScrollingListViewState(); } class _InfiniteScrollingListViewState extends State<InfiniteScrollingListView> { final controller = ScrollController(); List<String> data = List.generate( 30, (index) => 'Item ${index + 1}', ); @override void initState() { // TODO: implement initState controller.addListener(scrollListener); super.initState(); } Future fatch() async { await Future.delayed(Duration(seconds: 1)); data.addAll(['Item A', 'Item B', 'Item C', 'Item D']); setState(() {}); } @override void dispose() { // TODO: implement dispose controller.dispose(); super.dispose(); } Future<void> scrollListener() async { if (controller.position.maxScrollExtent == controller.offset) { fatch(); } else { kLog('data 22222'); } } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(), body: SingleChildScrollView( controller: controller, child: Column( children: [ ListView.builder( // controller: controller, itemCount: data.length + 1, shrinkWrap: true, primary: false, itemBuilder: (BuildContext context, int index) { if (index < data.length) { final item = data[index]; return ListTile( title: Text(item), ); } else { return Padding( padding: EdgeInsets.symmetric(vertical: 32), child: Center( child: CircularProgressIndicator(), ), ); } }, ), ], ), ), ); } }
Editor is loading...