首页 > 解决方案 > 几页后颤振分页不起作用

问题描述

我正在尝试以 Laravel 作为后端来实现分页功能。我面临的问题是在第 5 页之后,颤动没有向服务器发送请求。有什么理由会失败,因为它可以正常工作到第 5 页。或者是否有任何其他解决方案。总共大约有 90 页,但在几页后就停止了。

使用的插件:https ://pub.dev/packages/flutter_paginator api:https ://apptest.factory2homes.com/api/products?page=$page

body: Paginator.gridView(
        key: paginatorGlobalKey,
        pageLoadFuture: sendPagesDataRequest,
        pageItemsGetter: listItemsGetterPages,
        listItemBuilder: listItemBuilder,
        loadingWidgetBuilder: loadingWidgetMaker,
        errorWidgetBuilder: errorWidgetMaker,
        emptyListWidgetBuilder: emptyListWidgetMaker,
        totalItemsGetter: totalPagesGetter,
        pageErrorChecker: pageErrorChecker,
        scrollPhysics: BouncingScrollPhysics(),
        gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
          crossAxisCount: 3,
          childAspectRatio: 0.7,),
      ),

    );
  }



  Future<PagesData> sendPagesDataRequest(int page) async {
    print('page ${page}');
    try {

      String url = Uri.encodeFull("https://apptest.factory2homes.com/api/products?page=$page");
      http.Response response = await http.get(url);
      print('body ${response.body}');

      PagesData pagesData = pagesDataFromJson(response.body);
      return pagesData;
    } catch (e) {
      if (e is IOException) {
        /*return CountriesData.withError(
            'Please check your internet connection.');*/
      } else {
        print(e.toString());
        /*return CountriesData.withError('Something went wrong.');*/
      }
    }
  }



  List<dynamic> listItemsGetterPages(PagesData pagesData) {
    List<Datum> list = [];
    pagesData.data.forEach((value) {
      list.add(value);
    });
    return list;
  }

  Widget listItemBuilder(dynamic item, int index) {
    return InkWell(
      onTap: (){},
      child: Card(
        child: Column(
          children: <Widget>[
            Container(
                height: 125,
                width: double.maxFinite,
                child: Image.network(
                  item.productPhoto,
                  fit: BoxFit.fill,
                )),
          ],
        ),
      ),
    );
  }

  Widget loadingWidgetMaker() {
    return Container(
      alignment: Alignment.center,
      height: 160.0,
      child: CircularProgressIndicator(),
    );
  }

  Widget errorWidgetMaker(PagesData countriesData, retryListener) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        Padding(
          padding: const EdgeInsets.all(16.0),
          child: Text("error"),
        ),
        FlatButton(
          onPressed: retryListener,
          child: Text('Retry'),
        )
      ],
    );
  }

  Widget emptyListWidgetMaker(PagesData countriesData) {
    return Center(
      child: Text('No Products in the list'),
    );
  }

  int totalPagesGetter(PagesData pagesData) {
    return pagesData.lastPage;
  }

  bool pageErrorChecker(PagesData pagesData) {
    //return countriesData.statusCode != 200;
    return false;
  }

标签: flutterpagination

解决方案


推荐阅读