flutter - 如何在 SearchDelegate 中使用 setState
问题描述
我想通过添加带有一些单选按钮和其他小部件的表单来在搜索结果中添加更多过滤器。文档状态Radio
不保持状态,应该调用父级的setState
onChange
方法来重建小部件。调用后会显示表单showModalBottomSheet
。看起来search.dart
只有在查询更改时才会在内部调用 setState
假设没有这样的方法,我做了什么setState
,我重新显示对话,Navigation.pop(context)
然后调用showModalBottomSheet
。单选按钮现在可以更新 onChanged 的值,但重新显示对话的过渡看起来很难看(每次值更改时都会滑动动画)。
是否可以在 searchDelegate 中使用 setState 以及如何使用?
解决方案
@George 已经提供了解决方案,但这是使用 SearchDelegate 时的完整示例:
class DataSearch extends SearchDelegate<String> {
bool _isItemSelected = true;
//...rest of the @override methods
@override
Widget buildSuggestions(BuildContext context) {
return StatefulBuilder(
builder: (BuildContext context, StateSetter setState) {
return CheckboxListTile(
title: const Text('Item'),
value: _isItemSelected,
onChanged: (bool newValue) {
setState(() {
_isItemSelected = newValue;
});
},
);
});
}
}
推荐阅读
- c# - C# 中 WPF 的 WinML 和 OnnxRuntime 之间的区别
- java - 为什么我不能将对象数组转换为泛型类的泛型子类数组?
- memory - 80386 微处理器分段单元大小
- c# - 获取 OrderedDictionary 的值
- sql - 使用多个 OR 条件优化查询
- python - 定义的前缀不会从 json 文件不和谐中加载
- forms - 是否有任何解决方法来指定发件人的电子邮件地址,以便在提交表单时自动发送电子邮件?
- python - 如果带有布尔函数调用的条件在 Python 中始终为 True
- three.js - 如何从three.js/editor 中的脚本创建或引用动画?
- javascript - 通过 URL 和 URLSearchParams 创建多个查询键