gpt4 book ai didi

for-loop - “where”方法在 'onChange'方法中不起作用

转载 作者:行者123 更新时间:2023-12-03 04:25:02 26 4
gpt4 key购买 nike

我正在尝试根据搜索字段输入值过滤列表内的数据。我正在运行列表中的where方法。由于列表在不同的索引上具有不同的项目,因此我在for循环中运行此代码。

以下是列表中第一项的示例;

print(pageData[0].person);

// ###### OUTPUT ######

Person(id: 2, name: james, nickname: , role: guest, phone: , email: , physical_address: s, created: 2020-02-18 09:12:56.000, updated: 2020-02-18 09:12:56.000)

下面,我尝试使用 where方法查找匹配项,但我遇到了非匹配项。

Widget _buildSearchField() {
return new TextField(
controller: new TextEditingController(),
autofocus: true,
decoration: const InputDecoration(
hintText: 'Search...',
border: InputBorder.none,
hintStyle: const TextStyle(color: Colors.white30),
),
style: const TextStyle(color: Colors.white, fontSize: 16.0),
onChanged: (val) {
var i;
var results = [];

for (i = 0; i < pageData.length; i++) {
print('in pageData for loop');
var matches = pageData[i].where((data) =>
(data.person.name.toLowerCase().contains('james') ||
data.person.nickname.toLowerCase().contains('james')));

/// Code below is not executing

if (matches != null) {
print('matches found');
results.add(matches);
}
if (i == pageData.length) {
setState(() {
searchResults = results;
});
}
}
},
);
}

我该如何解决?我做错了什么?

谢谢,贴着爱。

最佳答案

我认为您不需要for循环和where语句。
尝试这样的事情:

Widget _buildSearchField() {
return new TextField(
controller: new TextEditingController(),
autofocus: true,
decoration: const InputDecoration(
hintText: 'Search...',
border: InputBorder.none,
hintStyle: const TextStyle(color: Colors.white30),
),
style: const TextStyle(color: Colors.white, fontSize: 16.0),
onChanged: (val) {
var i;
var results = [];

results = pageData.where((data) =>
data.person.name.toLowerCase().contains('james') ||
data.person.nickname.toLowerCase().contains('james');


);

setState(() {
searchResults = results;
});
}
}
);
}

关于for-loop - “where”方法在 'onChange'方法中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60276432/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com