【问题标题】:How can i paginate ListView.builder?如何对 ListView.builder 进行分页?
【发布时间】:2021-04-15 02:37:40
【问题描述】:

我正在部署一个社交媒体移动应用程序,我要做的最后一件事是分页。我查看了各种颤振博客等,并试图弄清楚,但是当我尝试这些代码时遇到了很多错误(不幸的是,我无法弄清楚用我的代码实现它们的方法。)

我想要的基本上是,当我在不同数量的帖子(例如 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


    【解决方案1】:

    如这个答案所示:Flutter ListView lazy loading你可以听一个ScrollController并根据ScrollPosition获取更多帖子

    【讨论】:

    • 它看起来像在运行,但它不会从 json 中获取帖子,而是自己生成它。我需要一个函数,就像我在“fetchposts”中所做的那样,它从 json 中获取帖子
    • @umarbeyoglu 为什么不在滚动监听器中添加“fetchposts”并在 setState 中刷新列表
    • Done.Lastly,我如何配置该功能,使其每次提取仅加载 3 个帖子?
    • 您可以配置您的 API 以接受选项以加载特定数量的帖子。
    • 不,我的 api 是这样严格的。我只需要在后端执行此操作(如flutter&dart)
    猜你喜欢
    • 2022-08-05
    • 2021-07-26
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-27
    • 2010-10-21
    • 2019-06-09
    • 2016-11-06
    相关资源
    最近更新 更多