0

I'm trying to write a code for an interstitial ad, my goal is to go to the selected page when the ad is closed.

But for the "onAdDismissedFullScreenContent" method I need to get to the "int index" value created in the builder.

Briefly i need to get this builder index for me to use in ad controller: var freeGames = freeGameTypeController.freeGames[index];

Ad Controller

class AdController extends GetxController {
  FreeTypeController freeTypeController = Get.find<FreeTypeController>();
  DealsTypeController dealsTypeController = Get.find<DealsTypeController>();

  
  InterstitialAd? interstitialAd;
  int adCounter = 0;

  void onAdLoaded(InterstitialAd ad) {
    interstitialAd = ad;

    interstitialAd?.fullScreenContentCallback = FullScreenContentCallback(
      onAdDismissedFullScreenContent: (ad) {
        interstitialAd?.dispose();
        initAd();
        //todo: get index in freeGames 
        Get.to(
          FreeGamesIndex(),
          arguments: freeTypeController.freeGames,
        );

       
      },
      onAdFailedToShowFullScreenContent: (ad, error) {
        interstitialAd?.dispose();
        initAd();
      },
    );
  }

  void initAd() {
    InterstitialAd.load(
      adUnitId: AdHelper.interstitialAdUnitId,
      request: const AdRequest(),
      adLoadCallback: InterstitialAdLoadCallback(
        onAdLoaded: onAdLoaded,
        onAdFailedToLoad: (error) {},
      ),
    );
  }

  void getAd() {
    if (adCounter % 10 == 0) {
      interstitialAd?.show();
    }
    adCounter++;
  }

  @override
  void onInit() {
    initAd();
    super.onInit();
  }

}

Builder Page

GridView.builder(
                shrinkWrap: true,
                gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
                  childAspectRatio: (itemWidth / itemHeight),
                  crossAxisCount: 1,
                ),
                scrollDirection: Axis.vertical,
                itemCount: freeGameTypeController.freeGames.length,
                itemBuilder: (BuildContext context, int index) {
                //todo: need [index]
                  var freeGames = freeGameTypeController.freeGames[index];
regenin
  • 291
  • 9
  • 18
  • Does this answer your question? [flutter passing multiple data with getx](https://stackoverflow.com/questions/64906620/flutter-passing-multiple-data-with-getx) – ajay Mar 22 '22 at 12:43
  • I was trying to send data to getx controller, so i cant use "Get.to" method – regenin Mar 23 '22 at 16:09
  • Arguments can assess from getx controller, in onInit() method. – ajay May 23 '22 at 07:08

1 Answers1

0

Try this, First you need to define list of pages in the GetMaterialApp() widget

GetMaterialApp(
  home: Home(),
  getPages: [
    GetPage(name: '/home', page: () => HomeView()),
    GetPage(name: '/second', page: () => Second()),
  ],
);

Then use it like below

Get.toNamed("/second", arguments: ["First data", "Second data"]);

Here is an article on it Here

Manishyadav
  • 1,361
  • 1
  • 8
  • 26