Дротик/трепетание Есть ли способ найти индекс моей карусели?

#flutter #dart #indexing #carousel

Вопрос:

Есть ли способ найти индекс элемента карусели, чтобы я мог использовать его для извлечения соответствующего текста и ссылки, связанной с показанными элементами??

Итак, у меня есть 3 списка: список изображений, список текста и список URL-адресов.

Есть ли способ найти соответствующий индекс/ключ для повторного использования??

          child: Container(
                      child: CarouselSlider(
                        options: CarouselOptions(
                          enlargeCenterPage: true,
                          enableInfiniteScroll: true,
                          autoPlay: true,
                          // pageSnapping: true,
                        ),
                        items: listThumbs.map((e) => ClipRRect(
                          borderRadius: BorderRadius.circular(8),
                          child: Stack(
                            //fit: StackFit.expand,
                            children: <Widget>[
                            Image.network(e,
                            width: 1050,
                            height: 350,
                            fit: BoxFit.cover,
                            ),
                          Text(videObj.results[INDEX].name),
                         ] ),
                        )).toList(),
                      )),
 

Ответ №1:

Вы можете вызвать «indexOf» в области итерации карты.

 int idx = listThumbs.indexOf(e);
 
          child: Container(
                      child: CarouselSlider(
                        options: CarouselOptions(
                          enlargeCenterPage: true,
                          enableInfiniteScroll: true,
                          autoPlay: true,
                          // pageSnapping: true,
                        ),
                        items: listThumbs.map((e) {
                          // Here you can find item index.
                          int idx = listThumbs.indexOf(e);

                          return ClipRRect(
                            borderRadius: BorderRadius.circular(8),
                            child: Stack(
                              //fit: StackFit.expand,
                              children: <Widget>[
                                Image.network(e,
                                  width: 1050,
                                  height: 350,
                                  fit: BoxFit.cover,
                                ),
                                Text(videObj.results[INDEX].name),
                              ]),
                             );
                            }
                          )).toList(),
                      )),
 

Ответ №2:

Вы можете попробовать использовать метод конструктора.

Пример карусельщика

 
CarouselSlider.builder(
  itemCount: 15,
  itemBuilder: (BuildContext context, int itemIndex, int pageViewIndex) =>
    Container(
      child: Text(itemIndex.toString()),
    ),
)
 

Этот метод даст представление index о каждом элементе.