Null-Safety:return 类型 'Null' 不是闭包上下文所要求的 'Widget'

Null-Safety: The return type 'Null' isn't a 'Widget', as required by the closure's context

迁移到 flutter null-safety 后我遇到了一些问题。我有一个数据类型 bool _isLoading = false;

在我的代码中迁移到 null-safety 后出现错误:return 类型 '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 应该 return 一个 Widget 如果你想要这一行 if (!_isLoading) return null; 到 return 一个空格就做这样的事情 if (!_isLoading) return SizedBox();