#flutter #dart
Вопрос:
У меня есть карусельный слайдер со множеством элементов на нем, и если пользователь дважды щелкнет по экрану, он должен будет запустить анимацию. Проблема в том, что это работает только в первом элементе карусели… если я дважды нажму на другой элемент, он не сработает.
это и есть код:
CarouselSlider.builder( itemCount: snapshot.data.length 1, options: CarouselOptions( autoPlay: false, onPageChanged: (index, reason) { setState(() { selected = -1; }); }, height: MediaQuery.of(context).size.height, initialPage: 0, enableInfiniteScroll: false, viewportFraction: 1.0, ), itemBuilder: (BuildContext context, int i){ if(Provider.oflt;Favoritegt;(context, listen: false).itemsSelected == null){ Provider.oflt;Favoritegt;(context, listen: false).itemsSelected = []; } if (i lt; snapshot.data.length) { setIsLiked(Provider.oflt;Favoritegt;(context, listen: false).itemsSelected, snapshot.data[i]); snapshot.data[i].selectedItems.forEach((Product product) { }); return StatefulBuilder( builder: (BuildContext context, StateSetter setState) { return GestureDetector( onDoubleTap: () async { if(snapshot.data[i].selectedItems == null || snapshot.data[i].selectedItems.isEmpty){ ScaffoldMessenger.of(context).showSnackBar(SnackBar( content: Text("You have to select one item"), duration: Duration(seconds: 2), )); }else{ if(snapshot.data[i].selectedItems != null){ setState(() { snapshot.data[i].isLiked = !snapshot.data[i].isLiked; setLike(snapshot.data[i]); }); } flareControls.play("like"); } }, child: Row( children: lt;Widgetgt;[ Expanded( flex: 7, child: Stack( children: [ Container( child: CachedNetworkImage( fit: BoxFit.fitHeight, height: MediaQuery.of(context).size.height, width: MediaQuery.of(context).size.width, imageUrl: '${BASE_ROUTE_URL}/${ROUTE_SLASH_FOTOS}/${snapshot.data[i].image}', placeholder: (ctx, url) =gt; Center(child: CircularProgressIndicator()), errorWidget: (context, url, error) =gt; Image.asset(ASSET_NO_PHOTO_PROFILE, fit: BoxFit.fitHeight), ), ), Container( child: Center( child: SizedBox( width: 80, height: 80, child: FlareActor( 'assets/images/fv/like.flr', controller: flareControls, animation: 'idle', ), ), ), ), ] ) ),
Как я могу это исправить и показать анимацию в каждом элементе моего карусельного слайдера?