颤振:按搜索时搜索委托流为空



我正在使用带有SearchDelegateStream
当我在搜索字段中输入内容时,它工作正常。但是一旦我按下搜索符号,它就会不显示任何内容,因为流是空的。这怎么可能?

下面是一些代码:

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()时不为空?

在抽象类 SearchDelegate 中编辑:

void showResults(BuildContext context) {
_focusNode?.unfocus();
_currentBody = _SearchBody.results;
}

替换

void showResults(BuildContext context) {
if(_queryTextController.text.isNotEmpty) {
_focusNode?.unfocus();
_currentBody = _SearchBody.results;
}else{
_focusNode?.unfocus();
}
}

它对我有用

最新更新