flutter - 如何对 ListView.builder 进行分页?
问题描述
我正在部署一个社交媒体移动应用程序,我要做的最后一件事是分页。我查看了各种颤振博客等,并试图弄清楚,但是当我尝试这些代码时遇到了很多错误(不幸的是,我无法弄清楚用我的代码实现它们的方法。)
我想要的基本上是,当我在不同数量的帖子(例如 5 个帖子)之后向下滚动时,我的颤振应用程序将启动一个功能,如重新加载更多并给我更多帖子。我该怎么做?
Future<List<Post>> FetchPosts(http.Client client) async {
List<Post> posts;
List<Post> finalposts;
final response = await http.get("$SERVER_IP/api/articles/?format=json");
final parsed = jsonDecode(response.body).cast<Map<String, dynamic>>();
posts = parsed.map<Post>((json) => Post.fromJSON(json)).toList();
return posts;
}
class FeedScreen extends StatefulWidget{...}
class FeedScreenState extends State<FeedScreen> {
FeedScreenState({Key key, this.posts});
final List<Post> posts;
@override
Widget build(BuildContext context) {
return Scaffold(
body: RefreshIndicator(
onRefresh: refreshpage,
child: FutureBuilder<List<Post>>(
future: FetchPosts(http.Client()),
builder: (context, snapshot) {
if (snapshot.hasError) print(snapshot.error);
return snapshot.hasData ?
PostsList(posts: snapshot.data,user:user)
: Center(
child: CircularProgressIndicator(backgroundColor: Colors.pink,valueColor: new AlwaysStoppedAnimation<Color>(Colors.pinkAccent),
),);},),),);}}
class PostsList extends StatefulWidget{...}
class PostsListState extends State<PostsList> {
final List<Post> posts;
PostsListState({Key key, this.posts, this.user});
@override
Widget build(BuildContext context) {
return ListView.builder(
itemCount: posts.length,
physics: ScrollPhysics(),
itemBuilder: (context, index) {
return AspectRatio(...);
},);}}
解决方案
如这个答案所示:Flutter ListView 延迟加载你可以ScrollController
根据ScrollPosition
推荐阅读
- regex - 如何修复此正则表达式以便仅从特定 url 获取 html 标记?
- r - R上的合并问题
- android - Android - 应用程序可能在其主线程上做太多工作 - Fragment,RecyclerView
- python - 将一个非常大的数据框的列拆分为两个(或更多)新列
- cmake - 错误:未定义对 cv::imwrite 的引用,这里有什么问题?
- reactjs - 如何在更改时更新 React State
- emulation - 加倍位 gb-emu
- python - 层 max_pooling2d 的输入 0 与层不兼容:预期 ndim=4,发现 ndim=5。收到的完整形状:[None, 4, 10, 8, 32]
- amazon-web-services - 在 AWS 上查看我的免费套餐的使用量
- python - malloc():未排序的双链表损坏中止(核心转储)python