【问题标题】:I am getting duplicate data on swipe more in Flutter我在 Flutter 中更多地滑动获得重复数据
【发布时间】:2023-01-12 16:06:16
【问题描述】:

我想使用 REST API 从我的网站获取我的 flutter 应用程序中的分页数据。

我已经集成了分页,现在它开始工作了。

但问题是在加载更多数据时,我得到的是重复数据而不是新数据。

我想我做错了什么来增加页码。在_getAllNews()方法中

这是我的完整代码,我认为我在这方面犯了很小的错误。

class Tedd extends StatefulWidget {
  @override
  _TeddState createState() => _TeddState();
}

class _TeddState extends State<Tedd> {
  List<NewsModel> _newsList = [];
  bool isLoading = true;
  int currentPage = 1;
  bool hasReachedEnd = false;
  ScrollController scrollController = ScrollController();

  _getAllNews(page) async {
    setState(() {
      isLoading = true;
    });
    var articles = await http.get(Uri.parse(
        "https://pkbhai.com/myprojects/kids-stories/api/all-stories?page=${page}"));
    var result = json.decode(articles.body);
    print(result);
    result['data'].forEach((data) {
      var news = NewsModel();
      news.id = data["id"];
      news.articleTitle = data["name"];
      if (mounted) {
        setState(() {
          _newsList.add(news);
          isLoading = false;
          currentPage = currentPage++;
        });
      }
    });
  }
  void handleNext() {
    scrollController.addListener(() async {
      if (scrollController.position.maxScrollExtent ==
          scrollController.position.pixels) {
        _getAllNews(currentPage);
      }
    });
  }


  @override
  void initState() {
    _getAllNews(currentPage);
    handleNext();
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: ListView.builder(
        controller: scrollController,
        itemCount: _newsList.length + (isLoading ? 1 : 0),
        itemBuilder: (context, index) {
          if (index == _newsList.length) {
            return Center(
              child: CircularProgressIndicator(),
            );
          }
          return Container(
              height: 150, child: Text(_newsList[index].articleTitle!));
        },
      ),
    );
  }
}

我究竟做错了什么?

【问题讨论】:

  • print(results) 打印什么?您还可以在 forEach 内部 print(data); 以确保错误不是来自后端。如果它显示一些重复项,这是一个后端错误,它可能是执行查询分页顺序的简单错误。例如 skip -> sort -> limit 可能会重复。您必须先排序,然后跳过(到达第 x 页),然后限制(从第 x 页获取 y 元素)。
  • 您的代码没有任何问题,如果您说如果不断重复数据,请检查您的分页后端实现。顺便说一句,为什么不能控制客户端 sdy 中的分页...
  • @GbengaBAyannuga 这是我的后端 api pkbhai.com/myprojects/kids-stories/api/all-stories
  • @GbengaBAyannuga 请帮助我让它工作

标签: android flutter dart flutter-dependencies


【解决方案1】:

我检查了api,现在重复数据的问题来自api url。

检查 api 并根据这 3 个参数进行测试后,

 current_page= 1,
from=1,
last_page=3,

但不工作...

解决方案: 联系 api 的开发人员并检查 api 或重新创建另一个工作分页 url 供您提出请求

【讨论】:

    猜你喜欢
    • 2013-05-20
    • 2018-03-20
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多