import 'dart:async'; import 'package:photo_manager/photo_manager.dart'; class AssetProvider { Map _dataMap = {}; AssetPathEntity _current; AssetPathEntity get current => _current; set current(AssetPathEntity current) { _current = current; if (_dataMap[current] == null) { final paging = AssetPaging(current); _dataMap[current] = paging; } } List get data => _dataMap[current]?.data ?? []; Future loadMore() async { final paging = getPaging(); if (paging != null) { await paging.loadMore(); } } AssetPaging getPaging() => _dataMap[current]; bool get noMore => getPaging()?.noMore ?? false; int get count => data?.length ?? 0; } class AssetPaging { int page = 0; List data = []; final AssetPathEntity path; final int pageCount; bool noMore = false; AssetPaging(this.path, {this.pageCount = 50}); Future loadMore() async { if (noMore == true) { print('noMore'); return; } var data = await path.getAssetListPaged(page, pageCount); if (data.length == 0) { print('数据长度为0'); noMore = true; } page++; this.data.addAll(data); } }