Как показывать нативную рекламу в listview.builder в flutter с разбиением на страницы?

#firebase #flutter #google-cloud-firestore #pagination #native-ads

#firebase #flutter #google-облако-firestore #разбиение на страницы #нативная реклама

Вопрос:

Я использую приведенный ниже код для извлечения списка в приложении flutter, используя разбивку на страницы с firestore в качестве базы данных, которая работает нормально. Я имею в виду flutter_native_admob зависимость для нативной рекламы. но я не могу понять, как я могу реализовать это в listview.builder и в то же время мне нужно реализовать разбивку на страницы. Как и в Instagram, когда после определенного количества постов появляется нативная реклама, мне нужно показать добавление аналогичным образом. Как это возможно?

   _getProducts() async {
    query = Firestore.instance.collection("users").document(uid).collection('my_favorites').orderBy("timestamp", descending: true).limit(5);
    setState(() {

      _loadingnotifications = true ;
    });

    QuerySnapshot _querySnapshot = await query.getDocuments();


    _lastDocument = _querySnapshot.documents[_querySnapshot.documents.length - 1];

    _notifications = _querySnapshot.documents;
    setState(() {
      _loadingnotifications = false;
    });

  }

  _getMoreNotifications() async {
    print("new docs loaded");
    if(_moreProductsAvailable == false ){
      return;
    }

    if(_loadingMore == true ){

      return;
    }

    _loadingMore = true;
  
    query = Firestore.instance.collection("users").document(uid).collection('my_favorites').orderBy("timestamp", descending: true).startAfter([_lastDocument.data['timestamp']]).limit(5);
    QuerySnapshot _querySnapshot = await query.getDocuments();

    if (_querySnapshot.documents.length <5){
      _moreProductsAvailable = false;
    }
    _lastDocument = _querySnapshot.documents[_querySnapshot.documents.length - 1];

    _notifications.addAll(_querySnapshot.documents);
  
    setState(() {
          _loadingnotifications = false;
    });

    _loadingMore = false;


  }
  

ПРОСМОТР списка.Конструктор

 Flexible(
                          child:_loadingnotifications == true ? Container(child: Center(child: Text("Loading..."),),) :Container(child:  _notifications.length == 0? Center(
                          child: Text("No Marked Posts Yet!"),) :
             new ListView.builder(
              controller: _scrollController,
              itemCount: _notifications.length,
              itemBuilder: (BuildContext ctx, int index){


                String itemTitle = _notifications[index].data['itemTitle'];
               

                              return ItemCard(itemTitle: itemTitle,                         );

              }),)
                        ),
  

Я знаю, как создать учетную запись admob и инициализировать flutter_native_admob в приложении, но не имею ни малейшего представления, как поместить ее в список, как instagram, с разбиением на страницы.

Комментарии:

1. Есть решения? Я ищу то же самое.

Ответ №1:

Вы можете добавить переменную counter в цикле, и перед добавлением виджетов в окончательный список вы можете проверить, что всякий раз, когда переменная counter кратна 5, добавьте виджет ad, иначе добавьте обычный виджет, это добавит рекламу в ваш список после каждых 5 обычных виджетов.

Вы можете проверить это для справки: https://medium.com/@vitopiegari/embedding-ads-into-flutters-widget-tree-with-admob-flutter-ae59c3a66492

Ответ №2:

Вместо ListView.builder используйте ListView.separated .

Затем в свойстве separatorBuilder вы можете добавлять объявления.

Например:

 ListView.separated(
            physics: BouncingScrollPhysics(),
            shrinkWrap: true,
            itemBuilder: (context, i) {
              return ListTile();
            },
            separatorBuilder: (context, index) {
              if (index % 10 == 9 amp;amp; index != 0) return BannerAd();
              return const SizedBox();
            },
            itemCount: _listLength,
          ),