Получить значение из экземпляра во флаттере - PullRequest
0 голосов
/ 17 февраля 2020

Я делаю запрос поиска в Списке с шаблоном Provider.

List<Device> _devices = [
    Device(one: 'Apple', two: 'iphone'),
    Device(one: 'Samsung', two: 'Galaxy')
];

И Query похож на это

List<Device> queryQuery(String value) {
return _devices
    .where((device) => device.one.toLowerCase().contains(value.toLowerCase()))
    .toList();

результат, который я ожидаю получить, равен iphone когда я передал значение Apple .

Но результат на экране, который я получил, - [экземпляр 'Device'] , когда я код вроде этого

child: Text('${deviceData.getDevice('Apple')}'

Я знаю, что должен использовать какой-то ключ, используя two ... но я понятия не имею: - (

Ответы [ 2 ]

3 голосов
/ 17 февраля 2020

Вы сериализовали неправильный объект.

То, что вы сделали, в конечном итоге было похоже на:

Text(Device(one: 'Apple', two: 'iphone').toString());

Но вы не хотите делать Device.toString(). Вместо этого вы хотите передать Device.two вашему Text.

Таким образом, ваш конечный результат:

Text('${chordData.chordExpand('Apple').two}')
0 голосов
/ 17 февраля 2020

С виду [Экземпляр 'Device'] кажется, что функция возвращает список, поэтому неплохо проверить, является ли список пустым или нет. если он не пустой, один из элементов все еще должен быть выбран. Я предполагаю, что это должен быть Text ('$ {chordData.chordExpand (' Apple ') [0] .two}') на случай, если список не пустой.

Чтобы подвести итог, используйте что-то подобное для обработки случай, когда список пуст

// Inside your build method before returning the widget
var l = chordData.chordExpand('Apple'); // Returns a list of devices
String textToWrite; // Here we will store the text that needs to be written
if(l.isEmpty) textToWrite = 'No results'; // If the filter resulted in an empty list
else textToWrite = l[0].two; // l[0] is an instance of a device which has a property called two. You can select any instance from the list provided it exists

return <Your Widget>(
.....
Text(textToWrite),
.....
);
...