Показать количество(количество) каждого элемента списка по общему количеству элементов в flutter

#list #flutter #dart #count #items

Вопрос:

Я хочу отобразить номер каждого элемента, который находится в списке, на карточке, я нашел пример, в котором они сказали, что вы должны сделать это с помощью цикла for (), и я сделал именно это, но число вообще не увеличивается, может кто-нибудь показать мне, что я делаю неправильно?

Мой код:

 child: ScrollablePositionedList.builder(  itemScrollController: itemController,  itemCount: selectedChallenge.contestantsList.length,  shrinkWrap: true,  itemBuilder: (context, index) {   final sortedList = selectedChallenge.contestantsList  ..sort((itemOne, itemTwo) =gt;  itemTwo.points.compareTo(itemOne.points));   final data = sortedList[index];   // My for loop  for (var i = 0;  i lt; selectedChallenge.contestantsList.length;  i  ,) {  return Card(  child: Row(  mainAxisAlignment: MainAxisAlignment.spaceBetween,  crossAxisAlignment: CrossAxisAlignment.center,  children: [  Row(  children: [  Padding(  padding: const EdgeInsets.all(10.0),  child: Text('${i}'),  ),  SizedBox(  height: 35,  width: 35,  child: CachedNetworkImage(  imageUrl: data.avatar,  ),  ),  SizedBox(  width: 12,  ),  Text(  data.firstName   ' '   data.lastName,  ),  ],  ),   Text(data.points.toString()),  ],  ),  );  }  },  ),  

Что у меня есть:

введите описание изображения здесь

What I want:

]введите описание изображения здесь

Ответ №1:

Используйте индекс вашего конструктора и удалите цикл for

 ScrollablePositionedList.builder(  itemScrollController: itemController,  itemCount: selectedChallenge.contestantsList.length,  shrinkWrap: true,  itemBuilder: (context, index) {   final sortedList = selectedChallenge.contestantsList  ..sort((itemOne, itemTwo) =gt;  itemTwo.points.compareTo(itemOne.points));   final data = sortedList[index];   return Card(  child: Row(  mainAxisAlignment: MainAxisAlignment.spaceBetween,  crossAxisAlignment: CrossAxisAlignment.center,  children: [  Row(  children: [  Padding(  padding: const EdgeInsets.all(10.0),  child: Text('${index   1}'),  ), // rest of the code  

Еще одно предложение-сначала отсортировать список, прежде чем создавать его.

 // sort the list first in a method or something  final sortedList = selectedChallenge.contestantsList  ..sort((itemOne, itemTwo) =gt;  itemTwo.points.compareTo(itemOne.points));  // build it  ScrollablePositionedList.builder(  itemScrollController: itemController,  itemCount: sortedList.length,  

Ответ №2:

Попробуйте приведенный ниже код, надеюсь, он вам поможет.

объявите одну переменную int

 int index = 1;  

Ваш Виджет.

 Text(  (index   1).toString(),  ),  

Весь Виджет.

 SingleChildScrollView(  child: Column(  children: lt;Widgetgt;[  Row(  crossAxisAlignment: CrossAxisAlignment.center,  mainAxisAlignment: MainAxisAlignment.center,  children: [  Padding(  padding: const EdgeInsetsDirectional.only(  top: 18, bottom: 18),  child: Text("Powered By:",  style: new TextStyle(fontSize: 18.0)),  )  ],  ),  ListView.builder(  padding: EdgeInsets.zero,  shrinkWrap: true,  physics: NeverScrollableScrollPhysics(),  itemCount: 10,  itemBuilder: (BuildContext context, int index) {  return Card(  margin: EdgeInsets.zero,  elevation: 0.4,  shape: RoundedRectangleBorder(  borderRadius: BorderRadius.circular(0),  ),  child: Container(  child: ListTile(  leading: Expanded(  child: Text(  (index   1).toString(),  ),  ),  title: Text(  "Coconut Oil",  style: TextStyle(  color: Colors.black87,  fontWeight: FontWeight.bold),  ),  subtitle: Row(  children: lt;Widgetgt;[  Icon(Icons.linear_scale,  color: Colors.greenAccent),  Text("Go Green!",  style: TextStyle(  color: Colors.black87))  ],  ),  )));  })  ],  ),  ),  

Ваш экран результатов, как-gt;введите описание изображения здесь