#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