【问题标题】:Load new data form server on scrolling | Pagination | Flutter/Dart在滚动时加载新的数据表单服务器 |分页 |颤振/飞镖
【发布时间】:2021-06-22 16:12:23
【问题描述】:

我正在尝试在我的颤振应用程序上实现分页。任务是在滚动时加载/获取新数据。我能够在每次滚动时从服务器获取数据,但问题是每次获取相同的数据。

这是我的代码供您查看:

Future<Map<String, dynamic>> fetchEvents(String accessToken,int vehicleId,) async {
    String url = '${AppConstants.baseUrl}v2/event/paginated?size=10&offset=${offset++}&eventsId=${widget.eventsId}';

    final response = await get(
      Uri.parse('$url'),
      headers: {
        'Authorization': "bearer $accessToken",
      },
    );

    Map<String, dynamic> responseBody = json.decode(response.body);
    fetchedEvents = [...responseBody['eventResponses']];
    for (var event in fetchedEvents) {
      setState(() {
        events.add(event);
      });
    }
    return responseBody;
  }

每次滚动时,偏移量都会更新,但返回相同的数据。

但是在 Postman 上,如果我更改偏移量,则会获取新的数据集。我哪里错了?

这是我的 initState() 的代码:

@override
  initState() {
    super.initState();
    loadMoreData(); //initial data is fetched
    _controller.addListener(() {
      if (_controller.position.pixels == _controller.position.maxScrollExtent) { //data fetched on scroll
        loadMoreData();
      }
    });
  }

这里是 laodMoreData():

loadMoreData() {
    fetchEvents(widget.accessToken, widget.eventId);
  }

请帮助我克服这个问题。提前致谢。

【问题讨论】:

    标签: flutter pagination flutter-layout


    【解决方案1】:

    您不必为此使用控制器 您可以将 itemCount 加 1 以加载下一页

       ListView.builder(
          itemCount: list.length+1,
          itemBuilder: (context, i) {
            if(i<list.length)
               {
               return listItem()
                }
            else{
              loadMoreData()//this function will be called with the last listitem 
              return Loader()  //loader for pagination
                }
            },
        )
    

    【讨论】:

    • 感谢您的指导。我会试试这个并更新你。
    猜你喜欢
    • 1970-01-01
    • 2021-07-21
    • 2021-09-27
    • 1970-01-01
    • 2019-06-26
    • 2020-11-05
    • 1970-01-01
    • 2020-08-12
    • 2018-09-10
    相关资源
    最近更新 更多