letsar / flutter_staggered_grid_view

A Flutter staggered grid view
MIT License
3.12k stars 508 forks source link

Problems when scrolling up #327

Open koperdasV opened 10 months ago

koperdasV commented 10 months ago

Hi, this is my first issue, so sorry if something is wrong. When you scroll to top you are able to see issues with product items? list screen code:


  final RefreshController refreshController;
  final Set<Offer> servicesList;
  final ScrollController? scrollController;
  final VoidCallback onRefresh;
  final FirebaseFacebookAnalytics? analytic;

  const ServicesList({
    Key? key,
    required this.refreshController,
    required this.servicesList,
    required this.scrollController,
    required this.onRefresh,
    required this.analytic,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return SmartRefresher(
      header: const ClassicHeader(
        idleText: '',
        refreshingText: '',
        failedText: '',
        releaseText: '',
        completeText: '',
      ),
      controller: refreshController,
      enablePullDown: true,
      onRefresh: onRefresh,
      child: servicesList.length >= AppConstants.minSmallOfferItemCount
          ? MasonryGridView.count(
            controller: scrollController,
            crossAxisCount: 2,
            itemCount: servicesList.length,
            shrinkWrap: true,
            padding: AppStyles.paddingSafeAreaOfferView(context),
            itemBuilder: (BuildContext context, int i) {
              return OfferMain(
                service: servicesList.elementAt(i),
              );
            },
          )
          : servicesList.isNotEmpty
              ? ListView.builder(
                  // controller: scrollController,
                  itemCount: servicesList.length,
                  shrinkWrap: true,
                  padding: AppStyles.paddingSafeAreaOfferView(context),
                  itemBuilder: (BuildContext context, int i) {
                    return OfferMain(
                      minRatio: false,
                      progressPadding: const EdgeInsets.symmetric(
                        vertical: AppDimens.paddingXXXXL,
                      ),
                      service: servicesList.elementAt(i),
                    );
                  },
                )
              : PlaceholderWidget(
                  text: AppLocalizations.of(context)
                      ?.notCategoryDiscountsSeventeen,
                ),
    );
  }
}```

code where servicesList is used:
`body: ReactiveBuilder(
        stream: locator.get<ServicesManager>().getAllServices!.results,
        placeHolderBuilder: (BuildContext context) {
          return const OffersShimmer();
        },
        errorBuilder: (BuildContext context, Object error) {
          return Center(child: Text(error.toString()));
        },
        builder: (BuildContext context,
            CommandResult<AwsParamModel, List<Offer>> snapshot) {
          if (snapshot.isExecuting &&
              (snapshot.data == null || snapshot.data!.isEmpty) &&
              flag) {
            return const OffersShimmer();
          }
          if (!snapshot.hasData) {
            _page = 1;
            return RefreshButton(
              onPressed: () {
                _fetchServices(false, _requestId, _priceSort);
              },
            );
          }
          if (snapshot.data!.isNotEmpty &&
              !snapshot.hasError &&
              !snapshot.isExecuting) {
            _page++;
          }
          if (!snapshot.isExecuting) {
            _refreshController.refreshCompleted();
          }
          flag = false;
          servicesList.addAll(snapshot.data!);
          return Stack(
            alignment: Alignment.bottomCenter,
            children: <Widget>[
              ServicesList(
                analytic: analytic,
                refreshController: _refreshController,
                scrollController: _scrollController,
                servicesList: servicesList,
                onRefresh: () {
                  _fetchServices(true, _requestId, _priceSort);
                },
              ),`
https://github.com/letsar/flutter_staggered_grid_view/assets/52140022/ff4aba9b-d700-40be-8631-f6c45ec08f58