flutter - Null-Safety:根据闭包上下文的要求,返回类型“Null”不是“Widget”
问题描述
迁移到 Flutter null-safety 后,我遇到了一些问题。我有一个数据类型bool _isLoading = false;
在我的代码中迁移到 null 安全后出现错误: 返回类型“Null”不是“Widget”,这是闭包上下文所要求的
class _PlacesState extends State<_Places> {
bool _isLoading = false;
final TextEditingController _typeAheadController = TextEditingController();
@override
Widget build(BuildContext context) {
return TypeAheadFormField<Map<String, dynamic>>(
key: widget.formFieldKey,
textFieldConfiguration: TextFieldConfiguration(
autofocus: true,
decoration: InputDecoration(
hintText: 'Place',
contentPadding: EdgeInsets.only(left: 8, right: 8),
border: InputBorder.none,
),
controller: _typeAheadController,
),
suggestionsCallback: (String? pattern) async {
final s = pattern?.trim();
if (s == null || s == '' || s.length < 4) return null;
_isLoading = true;
try {
await Future.delayed(Duration(seconds: 1));
final data = await (_request(s) as FutureOr<Map<String, dynamic>>);
final result = data['hits'] as List;
return result.cast<Map<String, dynamic>>();
} finally {
_isLoading = false;
}
} as FutureOr<Iterable<Map<String, dynamic>>> Function(String),
loadingBuilder: (BuildContext context) {
if (!_isLoading) return null;
return Align(
child: Padding(
padding: EdgeInsets.symmetric(vertical: 8),
child: ExtendedProgressIndicator(),
),
);
},
这是我得到错误的地方if (!_isLoading) return null;
as FutureOr<Iterable<Map<String, dynamic>>> Function(String),
loadingBuilder: (BuildContext context) {
if (!_isLoading) return null;
return Align(
child: Padding(
padding: EdgeInsets.symmetric(vertical: 8),
child: ExtendedProgressIndicator(),
),
);
},
解决方案
loadingBuilder
Widget
如果您希望此行if (!_isLoading) return null;
返回空格,则应返回 a只需执行以下操作if (!_isLoading) return SizedBox();
推荐阅读
- postgresql - Kubernetes APP_KEY 错误上的缓存
- c++ - 如何使用 BOOST BinaryFunction 概念?
- python-3.x - 如何使用 while 循环和 for 循环来编写这种模式?
- javascript - 无法验证表单并显示错误消息
- bash - 如何按文件大小排序并在大小为零时删除
- javascript - XMLHttpRequest 从本地服务器而不是从外部服务器加载 XML?
- scala - 为什么 Scala Cats 使用类型类而不是继承?
- visual-studio-code - 如何在 vs 代码中安装平面图标主题
- typescript - 编译器无法识别自定义 TS 类型
- python - 我不明白如何让 displayGPA() 干净地处理 ZeroDivisionError