Я использую Stream
с SearchDelegate
.
Когда я ввожу что-то в поле поиска, все работает нормально. Но как только я нажимаю символ поиска, он ничего не отображает, потому что поток пуст. Как это возможно?
Вот некоторый код:
List<Notes> notes;
...
void search() {
showSearch(
context: context,
delegate: Search(
Stream.value(UnmodifiableListView<Note>(notes)).asBroadcastStream()
)
}
class Search extends SearchDelegate{
final Stream<UnmodifiableListView<Note>> notes;
Search(this.notes);
...
@override
Widget buildResults(BuildContext context){
return _buildStreamBuilder();
}
@override
Widget buildSuggestions(BuildContext context){
return _buildStreamBuilder();
}
StreamBuilder<UnmodifiableListView<Note>> _buildStreamBuilder() {
return StreamBuilder< UnmodifiableListView<Note>> (
stream: notes
builder: (context, AsyncSnapshot< UnmodifiableListView<Note>>) {
final results = snapshot.data.where((note){
....
}
}
Почему поток пуст, когда вызывается buildResults()
, а не когда buildSuggestions()
вызывается?