Untitled
unknown
plain_text
3 years ago
2.1 kB
8
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...