Flutter Array List 只打印一个项目而不是整个列表

Flutter Array List only prints one item instead of the whole list

我想以列表格式打印数组中的每一项,但它只有 returns 一项,即最后一项。我可以得到帮助吗?这是我下面的代码。 到目前为止,这是我使用 split 方法尝试过的方法,因为我将字符串拆分为数组项。

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 result;

}


  @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',

};

请你检查我做错了什么。您的帮助将不胜感激

从这个 String result = ""; 你期待一个结果 你可以把它做成一个列表 List<String> result =[]; 您的函数将 return 列表 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]
                ),
              )...