#flutter #dart #setstate
Вопрос:
извините за мой английский, я надеюсь, что смогу точно объяснить, чего я хочу. Если я создам переменную imageCount в части else, заданное состояние не произойдет. но если я создам его глобально, он станет установленным состоянием, но на этот раз он изменится на каждом изображении. Это мой код, так же, как и в Instagram, приходят сообщения, они перечислены один под другим. Я также пытаюсь напечатать номера изображений, теперь как я должен определить эту переменную? Какой бы пост пользователь ни прокрутил, его количество увеличится на 1.
Widget _imageDisplay(int index) { if (postsList == null) { return null; } else { int imageCount=1; //this variable return Container( color: Colors.white, width: MediaQuery.of(context).size.width, height: MediaQuery.of(context).size.height * 0.5, child: Stack(children: [ PhotoViewGallery( onPageChanged: (index) { setState(() { imageCount = index 1; }); }, customSize: MediaQuery.of(context).size, backgroundDecoration: BoxDecoration(color: Colors.white), pageOptions: _photoPageOpt(index), ), Align( alignment: Alignment.topRight, child: Text(imageCount.toString() '/' postsList[index].images.length.toString())) ]), ); }
Ответ №1:
Переменная imageCount
должна быть частью состояния вашего виджета с отслеживанием состояния, в противном setState
случае она не будет иметь эффекта. Поэтому он должен быть объявлен в вашем классе, который расширяется Statelt;MyWidgetgt;
.
Когда _imageDisplay
вызывается, если postsList
значение равно null, вам нужно вернуть виджет, вы можете вернуть пустой контейнер, например SizedBox()
.
Теперь, чтобы управлять логикой при обновлении вашей переменной imageCount
, вам нужно поместить логику внутрь setState
функции.
К сожалению, я не очень хорошо понял, чего именно вы хотите достичь, но попробуйте выразить это в условии, которое будет контролировать обновление счетчика изображений, как показано ниже:
setState(() { if(condition) { imageCount = index 1; } });