Список массивов флаттера печатает только один элемент вместо всего списка

#flutter #arraylist

Вопрос:

Я хочу распечатать каждый элемент массива в формате списка, но он возвращает только один элемент, который является последним. Могу я, пожалуйста, обратиться за помощью? Это мой код ниже. Это то, что я пробовал до сих пор, используя метод разделения, потому что я разбивал строку на элементы массива.

 class BarcodeItemWidget extends StatelessWidget {
  BarcodeItem item;

  BarcodeItemWidget(this.item);

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

    }else{ if (barcodeFormatEnumMap[item.barcodeFormat]! == 'CODE_128'){
      result = "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: [
              Padding(
                padding: const EdgeInsets.all(8.0),
                child: Text(
                    results()
                ),
              ),
const barcodeFormatEnumMap = {
  BarcodeFormat.AZTEC: 'AZTEC',
  BarcodeFormat.CODABAR: 'CODABAR',
  BarcodeFormat.CODE_39: 'CODE_39',
  BarcodeFormat.CODE_93: 'CODE_93',
  BarcodeFormat.CODE_128: 'CODE_128',
  BarcodeFormat.DATA_MATRIX: 'DATA_MATRIX',
  BarcodeFormat.EAN_8: 'EAN_8',
  BarcodeFormat.EAN_13: 'EAN_13',
  BarcodeFormat.ITF: 'ITF',
  BarcodeFormat.PDF_417: 'PDF_417',
  BarcodeFormat.QR_CODE: 'QR_CODE',
  BarcodeFormat.RSS_14: 'RSS_14',

};
 

Пожалуйста, проверьте, что я делаю не так. Ваша помощь будет оценена по достоинству

Ответ №1:

из этого String result = ""; вы ожидаете одного результата, вы можете сделать его списком List<String> result =[]; , ваша функция также вернет список List<String> results(){...

затем вы можете добавить свои данные в список следующим образом result.add( "MVL code:" item.text.split('%')[1] );

где вы показываете результаты

 Row(
            children: [
              Padding(
                padding: const EdgeInsets.all(8.0),
                child: Text(
                    results()
                ),
              ),
 

вам нужно использовать listview.builder

 Listview.builder( 
itemCount:results.length
itemBuilder:(_,i){
return Padding(
                padding: const EdgeInsets.all(8.0),
                child: Text(
                    results[i]
                ),
              )...
 

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

1. Привет, Гриффины, спасибо за ответ. Пожалуйста, скажите мне, как я могу использовать listview.builder, где я показываю результаты. Спасибо

2. привет тоже, я обновил ответ с помощью listview builder