ecp_paging 0.0.8+3 copy "ecp_paging: ^0.0.8+3" to clipboard
ecp_paging: ^0.0.8+3 copied to clipboard

分页组件库,整合下拉刷新与上拉加载,自动管理分页状态,支持自定义缺省页、控制器灵活配置。

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:ecp_paging/ecp_paging.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        // This is the theme of your application.
        //
        // Try running your application with "flutter run". You'll see the
        // application has a blue toolbar. Then, without quitting the app, try
        // changing the primarySwatch below to Colors.green and then invoke
        // "hot reload" (press "r" in the console where you ran "flutter run",
        // or simply save your changes to "hot reload" in a Flutter IDE).
        // Notice that the counter didn't reset back to zero; the application
        // is not restarted.
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(
          title: ""), //const MyHomePage(title: 'Flutter Demo Home Page'),
      builder: FlutterSmartDialog.init(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key, required this.title}) : super(key: key);

  // This widget is the home page of your application. It is stateful, meaning
  // that it has a State object (defined below) that contains fields that affect
  // how it looks.

  // This class is the configuration for the state. It holds the values (in this
  // case the title) provided by the parent (in this case the App widget) and
  // used by the build method of the State. Fields in a Widget subclass are
  // always marked "final".

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  late PagingController controller;
  bool firstError = true;
  bool firstEmpty = true;

  @override
  void initState() {
    super.initState();
    controller = PagingController(this);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text("分页测试")),
      body: Paging(
        controller: controller,
        autoRefresh: true,
        task: () => testTask(),
        child: GridView.builder(
          itemBuilder: (context, index) => Padding(
            padding: const EdgeInsets.all(12),
            child: Center(
              child: Text("${controller.getItem(index)} $index"),
            ),
          ),
          // separatorBuilder: (context, index) => const Divider(
          //   color: Colors.black,
          // ),
          itemCount: controller.list.length,
          gridDelegate: const SliverGridDelegateWithMaxCrossAxisExtent(
              maxCrossAxisExtent: 120),
        ),
      ),
      floatingActionButton: FloatingActionButton(
          onPressed: () => controller.refresh(silence: false)),
    );
  }

  Future<List<String>?> testTask() async {
    await Future.delayed(const Duration(seconds: 2));
    if (firstEmpty) {
      firstEmpty = false;
      return List.filled(10, "position");
    }
    if (controller.currentPageIndex == 4) {
      return [];
    }
    List<String> list = [];
    return list..addAll(List.filled(10, "newPosition"));
    // ..addAll(List.filled(100, "position"));
  }
}
0
likes
120
points
1
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

分页组件库,整合下拉刷新与上拉加载,自动管理分页状态,支持自定义缺省页、控制器灵活配置。

Homepage

License

Apache-2.0 (license)

Dependencies

easy_refresh, ecp_net, flutter, flutter_smart_dialog, flutter_status_widget

More

Packages that depend on ecp_paging