тип аргумента 'int' не может быть назначен для флаттера строки параметра

Aug 19 2020

Я работаю над флаттером, и я могу правильно проанализировать свой запрос api, используя дио, но после листинга моего элемента вместо сохранения общей суммы в базе данных я хочу показать пользователю сумму двух столбцов из базы данных, но я сталкиваюсь с типом аргумента int 'не может быть назначен на ошибку строки параметра вот мой код

? ListView.builder(
            itemCount: filteredItems.length,
            itemBuilder: (BuildContext context, int index) {
              return GestureDetector(

                onTap: () {
                 
                Navigator.of(context).pushNamed(PostDetail.routeName, arguments: filteredItems[index]);
                },
                child: Card(

                  elevation: 10,
                  child: Padding(
                    padding: const EdgeInsets.symmetric(
                        vertical: 10, horizontal: 8),
                    child: Column(
                      children: <Widget>[

                        Text(
                          filteredItems[index]['product_name'],
                          style: TextStyle(fontSize: 18),
                        ),
                        Text(
                          // here i need to display two columans from database but error appers here
         int.parse( filteredItems[index]['priceOne'])- int parse(filteredItems[index]['priceDisc']); 
                               
                                              
                        ),
                      ],
                    ),

                  ),
                ),
              );
            })

Ответы

1 Uni Aug 19 2020 at 18:32

Это определенно не будет отображать текст, потому что Textвиджет требует a String. Что вам нужно сделать, так это преобразовать это intв, Stringчтобы отобразить его. Вот пример:

 Text((int.parse(filteredItems[index]['priceOne'])- int.parse(filteredItems[index]['priceDisc'])).toString()), 
1 Captivity Aug 19 2020 at 18:34

Вы не можете отображать в тексте: Text( int.parse( filteredItems[index]['priceOne'])- int parse(filteredItems[index]['priceDisc']); )

Вы должны написать, например:

Row(
   children: [
    Text(
filteredItems[index]['priceOne'] + ' - '),
    Text(filteredItems[index]['priceDisc'])
]
                           
  or:

          Text((int.parse(filteredItems[index]['priceOne'])- int.parse(filteredItems[index]['priceDisc'])).toString()),