小编unv*_*per的帖子

Flutter 中的分页/无限滚动,带缓存和实时失效

我已经很久没有开始搜索 Flutter ListView 库,它可以让我以智能的方式使用分页。可悲的是,我没有找到任何符合我的标准的东西:

  1. 智能分页:库不应简单地逐页增加列表,而必须具有固定大小的缓存,该缓存仅加载和保留当前所需的页面。
  2. 异步加载:库应该基本上接受一个函数,该函数返回代表页面的列表的未来。
  3. 实时失效:Dart 有流,所以库应该以某种方式利用它们的能力来处理失效并在数据以反应方式发生变化时重新加载所需的一切。

基本上,我想要一些类似于标准 Android 库中的 PagedListAdapter + DataSource.Factory + LiveData 的东西。我想出了小部件PagedListView:

import 'dart:math';

import 'package:fimber/fimber.dart';
import 'package:flutter/material.dart';

typedef Future<List<T>> PageFuture<T>(int pageIndex);

typedef Widget ItemBuilder<T>(BuildContext context, int index, T entry);
typedef Widget WaitBuilder(BuildContext context);
typedef Widget PlaceholderBuilder(BuildContext context);
typedef Widget EmptyResultBuilder(BuildContext context);
typedef Widget ErrorBuilder(BuildContext context);

class PagedListView<T> extends StatefulWidget {
  final int pageSize;
  final PageFuture<T> pageFuture;
  final Stream<int> countStream;

  final ItemBuilder<T> itemBuilder;
  final WaitBuilder waitBuilder;
  final PlaceholderBuilder placeholderBuilder;
  final …
Run Code Online (Sandbox Code Playgroud)

pagination caching reactive-programming infinite-scroll flutter

5
推荐指数
1
解决办法
5517
查看次数