Как я могу решить эту ошибку: Ошибка диапазона (индекс): Недопустимое значение: Не входит в диапазон 0..13: 14 Флаттер

#flutter

Вопрос:

Я получаю эту ошибку при отображении списка, и я перепробовал все, чтобы исправить ее, но не могу. Пожалуйста, проверьте мой код ниже. У меня есть количество предметов, но ошибка все равно сохраняется. Я также попытался использовать физическую прокрутку внутри своего listview.builder, но все равно она не хочет работать. Пожалуйста, укажите, чего мне не хватает или как это решить.

 class BarcodeItemWidget extends StatelessWidget {
  BarcodeItem item;


  BarcodeItemWidget(this.item);

    List<String> results(){
      List<String> result =[];
    if( barcodeFormatEnumMap[item.barcodeFormat]! == 'PDF_417'){
         result.add("MVL code:"   item.text.split('%')[1] );
         result.add("Auth code:"   item.text.split('%')[2] );
         result.add("License Number:"   item.text.split('%')[3] );
         result.add("Issue Number:"   item.text.split('%')[4] );
         result.add("Disc Number:"   item.text.split('%')[5] );
         result.add("License Plate:"   item.text.split('%')[6] );
         result.add("Vehicle Registration:"   item.text.split('%')[7] );
         result.add("Vehicle Type:"   item.text.split('%')[8] );
         result.add("Make:"   item.text.split('%')[9] );
         result.add("Model:"   item.text.split('%')[10] );
         result.add("Colour:"   item.text.split('%')[11] );
         result.add("VIN:"   item.text.split('%')[12] );
         result.add("Engine Number:"   item.text.split('%')[13] );
         result.add("Disk Expiry:"   item.text.split('%')[14] );

    }else{ if (barcodeFormatEnumMap[item.barcodeFormat]! == 'CODE_128'){
      result.add("item code:"   item.text) ;
    }

    }

    return resu<

}


  @override
  Widget build(BuildContext context) {
    return Card(
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: <Widget>[

          Row(
            children: [
              Padding(
                padding: const EdgeInsets.all(8.0),
                child: Text("Barcode Type:",
                  style: TextStyle(inherit: true, color: Colors.black),
                ),
              ),
              Padding(
                padding: const EdgeInsets.all(8.0),
                child: Text(
                  barcodeFormatEnumMap[item.barcodeFormat]!,
                  style: TextStyle(inherit: true, color: Colors.black),
                ),
              ),
            ],
          ),

          Row(
            children: [
              Expanded(
                child: Padding(
                  padding: const EdgeInsets.all(8.0),
                  child: ListView.builder(
                    // physics: ScrollPhysics (),
                      shrinkWrap: true,
                      itemCount: item.text.length,
                      itemBuilder: (context, position) {
                        return Text(results()[position]);

                      },

                  ),
                ),
              ),
 

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

1. BarcodeItemWidget не удалось получить данные элемента, откуда вы вызываете BarcodeItemWidget?

2. Замените число элементов: item.text.length на число элементов: результат. длина,

3. Спасибо @Yashraj, это сработало.

4. Добро пожаловать @neo…