Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 创建搜索页面时不断出现错误_Flutter_Search - Fatal编程技术网

Flutter 创建搜索页面时不断出现错误

Flutter 创建搜索页面时不断出现错误,flutter,search,Flutter,Search,我正在使用flutter中的一个搜索页面,但我一直有一个错误-“需要一个'Widget'类型的值,但得到了一个'String'类型的值”。这是我的密码。我看了youtube视频,但没能成功。有人能看看我的代码,告诉我有什么问题吗 //part of statefulWidget class _DataSearchState extends State<DataSearch> { TextEditingController _searchController = TextE

我正在使用flutter中的一个搜索页面,但我一直有一个错误-“需要一个'Widget'类型的值,但得到了一个'String'类型的值”。这是我的密码。我看了youtube视频,但没能成功。有人能看看我的代码,告诉我有什么问题吗

//part of statefulWidget  
  class _DataSearchState extends State<DataSearch> {
  TextEditingController _searchController = TextEditingController();

  List allfields = ['A', 'B', 'C', 'D', 'E'];

  List aafields = [ 'A', 'B'];
  List abfields = [ 'C', 'D', 'E'];

  List resultsList = [];

  @override
  void initState() {
    super.initState();
    _searchController.addListener(_onSearchChanged);
  }

  @override
  void dispose() {
    _searchController.removeListener(_onSearchChanged);
    _searchController.dispose();
    super.dispose();
  }

  _onSearchChanged() {
    searchResultsList();
  }

  searchResultsList() {
    var showResults = [];

    if (_searchController.text != "") {
      for (var e in allfields) {
       if (e.contains(_searchController.text)) {
         showResults.add(e);
       }
     }
   } else {
     showResults = List.from(allfields);
   }
   setState(() {
     resultsList = showResults;
   });
 }

Widget build(BuildContext context) {
 return Scaffold(
  body: Column(
    children: [
       TextField(
          controller: _searchController,
          decoration: InputDecoration(prefixIcon: Icon(Icons.search)),
        ),
      ),
       ListView.builder(
              itemCount: resultsList.length,
              itemBuilder: (BuildContext context, int ndx) {
                return ListTile(
                    title: resultsList[ndx],
                    onTap: () {
                      //
                    });
              }
   }
//statefulWidget的一部分
类_DataSearchState扩展状态{
TextEditingController_searchController=TextEditingController();
列出所有字段=['A','B','C','D','E'];
列表字段=['A','B'];
列表字段=['C','D','E'];
列表结果列表=[];
@凌驾
void initState(){
super.initState();
_searchController.addListener(\u onSearchChanged);
}
@凌驾
无效处置(){
_searchController.RemovelListener(_onSearchChanged);
_searchController.dispose();
super.dispose();
}
_onSearchChanged(){
searchResultsList();
}
searchResultsList(){
var showResults=[];
如果(\u searchController.text!=“”){
for(所有字段中的变量e){
if(e.contains(_searchController.text)){
显示结果。添加(e);
}
}
}否则{
showResults=列表。发件人(所有字段);
}
设置状态(){
结果列表=显示结果;
});
}
小部件构建(构建上下文){
返回脚手架(
正文:专栏(
儿童:[
文本字段(
控制器:\ u搜索控制器,
装饰:输入装饰(前缀:图标(Icons.search)),
),
),
ListView.builder(
itemCount:resultsList.length,
itemBuilder:(BuildContext上下文,int ndx){
返回列表块(
标题:结果列表[ndx],
onTap:(){
//
});
}
}
这是出现错误的页面截图

这是因为
ListTile
的参数需要一个
小部件
,而您传递了一个
字符串
。请将代码更改为此

return ListTile(
        title: Text(resultsList[ndx]),
        onTap: () {
          onTileTapped(ndx);
        });
这是因为
ListTile
的参数需要一个
小部件
,而您传递的是一个
字符串
。请将代码更改为此

return ListTile(
        title: Text(resultsList[ndx]),
        onTap: () {
          onTileTapped(ndx);
        });

非常感谢,吉格!非常感谢,吉格!