showAdsInGridView function

dynamic showAdsInGridView({
  1. required RxList list,
  2. required int crossAxisCount,
  3. required int adsDistance,
  4. required IndexedWidgetBuilder itemBuilder,
  5. bool isNativeAds = true,
  6. AdSize bannerSize = AdSize.leaderboard,
  7. Size? nativeAdSize,
  8. Color nativeAdbackgroundColor = const Color(0xFFFFFFFF),
  9. Color nativeAdborderColor = const Color(0xFFFFFFFF),
  10. double nativeAdborderwidth = 1.0,
  11. BorderStyle nativeAdborderstyle = BorderStyle.solid,
  12. double nativeAdborderRadius = 12,
  13. double mainAxisSpacing = 0.0,
  14. double crossAxisSpacing = 0.0,
  15. EdgeInsetsGeometry? widgetMargin,
  16. required GetxController controller,
})

Implementation

showAdsInGridView(
    {required RxList<dynamic> list,
    required int crossAxisCount,
    required int adsDistance,
    required IndexedWidgetBuilder itemBuilder,
    bool isNativeAds = true,
    AdSize bannerSize = AdSize.leaderboard,
    Size? nativeAdSize,
    Color nativeAdbackgroundColor = const Color(0xFFFFFFFF),
    Color nativeAdborderColor = const Color(0xFFFFFFFF),
    double nativeAdborderwidth = 1.0,
    BorderStyle nativeAdborderstyle = BorderStyle.solid,
    double nativeAdborderRadius = 12,
    double mainAxisSpacing = 0.0,
    double crossAxisSpacing = 0.0,
    EdgeInsetsGeometry? widgetMargin,
    required GetxController controller}) {
  final distance = (adsDistance * crossAxisCount) + 1;

  _setAdsinList(list, distance);

  return Obx(() => StaggeredGridView.countBuilder(
        crossAxisCount: crossAxisCount,
        itemCount: list.length,
        itemBuilder: (BuildContext context, int index) {
          if (list[index] == null) {
            if (isNativeAds) {
              if (nativeAdSize != null) {
                showMediumNativeAds(
                    backgroundColor: nativeAdbackgroundColor,
                    borderColor: nativeAdborderColor,
                    borderRadius: nativeAdborderRadius,
                    widgetMargin: widgetMargin,
                    borderstyle: nativeAdborderstyle,
                    borderwidth: nativeAdborderwidth,
                    size: nativeAdSize,
                    onAdLoadedCallback: (nativeAd) {
                      list[index] = nativeAd;
                      controller.refresh();
                    });
              } else {
                showMediumNativeAds(
                    backgroundColor: nativeAdbackgroundColor,
                    borderColor: nativeAdborderColor,
                    borderRadius: nativeAdborderRadius,
                    borderstyle: nativeAdborderstyle,
                    borderwidth: nativeAdborderwidth,
                    onAdLoadedCallback: (nativeAd) {
                      list[index] = nativeAd;
                      controller.refresh();
                    });
              }
            } else {
              showBannerAds(
                  size: bannerSize,
                  onAdLoadedCallback: (bannerAd) {
                    list[index] = bannerAd;
                    controller.refresh();
                  });
            }
            return Container(height: 0);
          } else if (list[index] is Widget) {
            return list[index];
          }
          return itemBuilder(context, index);
        },
        staggeredTileBuilder: (int index) => StaggeredTile.count(
            ((list[index] == null) ||
                    (list[index] != null && list[index] is Widget))
                ? crossAxisCount
                : 1,
            1),
        mainAxisSpacing: mainAxisSpacing,
        crossAxisSpacing: crossAxisSpacing,
      ));
}