продолжайте получать ошибки при создании страницы поиска

#flutter #search

#flutter #Поиск

Вопрос:

Я работаю над страницей поиска в flutter, но у меня продолжает появляться ошибка — «Ожидалось значение типа «Виджет», но получено значение типа «Строка». Вот мой код. Я следил за видео на YouTube https://www.youtube.com/watch?v=H3CCtCmBUoQamp;ab_channel=1ManStartup , но не могу заставить это работать. Кто-нибудь посмотрит на мой код и скажет мне, что с ним не так?

 //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: () {
                      //
                    });
              }
   }
 

Вот скриншот страницы с ошибкой https://i.stack.imgur.com/NBEZb.jpg

Ответ №1:

Это связано с тем, что title параметр ListTile ожидает a Widget и вместо этого вы передали a String . Измените код на этот.

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