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]
),
)...
我想以列表格式打印数组中的每一项,但它只有 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]
),
)...