Я не могу выполнить поиск в listview, результаты неверны

#flutter #dart

#flutter #dart

Вопрос:

 class _HomeScreenState extends State<HomeScreen> {
  TextEditingController _textController = TextEditingController();
  var list = List<Widget>();
  var channels = ChannelService.channels;
  ....

  buildBody() {
    return Container(
        child: Column(children: [
      searchArea(),
      Expanded(
        flex: 6,
        child: ListView.builder(
          itemCount: channels.length,
          itemBuilder: (BuildContext context, int index){
            return ChannelService.getChannelWidget(channels[index]);
          },
        )
      ),
      ControlPanel()
    ]));
  }

  searchArea() {
    return Container(
      color: Colors.black87,
      height: 45,
      padding: EdgeInsets.only(left: 10, right: 10, top: 5, bottom: 5),
      child: TextField(
        cursorColor: Colors.black,
        decoration: InputDecoration(
            filled: true,
            fillColor: Colors.white,
            contentPadding: EdgeInsets.only(left: 10),
            border: OutlineInputBorder(
                borderRadius: BorderRadius.circular(50),
                borderSide: BorderSide(color: Colors.black87, width: 3)),
            focusedBorder: OutlineInputBorder(
                borderRadius: BorderRadius.circular(50),
                borderSide: BorderSide(color: Colors.red, width: 2)),
            hintText: "Aramak için yazın.",
            hintStyle: TextStyle(color: Colors.black),
            suffixIcon: Icon(
              Icons.search,
              size: 30,
              color: Colors.black,
            )),
        controller: _textController,
        onChanged: onChanged,
      ),
    );
  }

  onChanged(String value) {
    if(value.isNotEmpty){
      setState(() {
        channels = ChannelService.channels
            .where((item) => item.name.toLowerCase().contains(value.toLowerCase()))
            .toList();
      });
    }
    else{
      setState(() {
        channels = ChannelService.channels;
      });
    }
  }
}
  

Результаты: это

Я уже давно сталкиваюсь с этой ошибкой. То, что я хочу сделать, это простая операция поиска. Однако я не смог добиться успеха. Слово, которое я хочу найти, и результат разные. Пожалуйста, помогите мне. Где я делаю неправильно?

Еще одна проблема. Мое приложение было запущено, listview пуст.

getChannelWidget:

 static Widget getChannelWidget(Channel channel) {
    return ChannelListWidget(
      id: channel.id,
      name: channel.name,
      image: channel.image,
      categories: channel.categories.toList(),
      url: channel.url,
      listened: channel.listened,
      favorite: isFavorite(channel.id)
    );
  

Комментарии:

1. Не могли бы вы добавить код для getChannelWidget ?

2. Я добавил getChannelWidget