Untitled

 avatar
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...