Flutter:StreamSink<dynamic> 无法从函数“chuckDataSink”返回,因为它的返回类型为 StreamSink<Response<chuckResponse>>?

时间:2021-04-16 17:16:09

标签: flutter stream-builder

通过迁移到 Flutter 2,我收到以下错误。

lib/blocs/chuck_category_bloc.dart:12:7: 错误:“StreamSink?”类型的值无法从返回类型为“StreamSink?”的函数中返回。

  • “StreamSink”来自“dart:async”。
  • “Response”来自“package:upgrade_noyelling/networking/Response.dart”(“lib/networking/Response.dart”)。
  • 'chuckCategories' 来自'package:upgrade_noyelling/models/chuck_categories.dart' ('lib/models/chuck_categories.dart')。 _chuckListController?.sink; ^ lib/blocs/chuck_category_bloc.dart:15:7: 错误: 'Stream?' 类型的值无法从返回类型为“Stream?”的函数中返回。
  • “Stream”来自“dart:async”。
  • “Response”来自“package:upgrade_noyelling/networking/Response.dart”(“lib/networking/Response.dart”)。
  • 'chuckCategories' 来自'package:upgrade_noyelling/models/chuck_categories.dart' ('lib/models/chuck_categories.dart')。 _chuckListController?.stream; ^

下面是代码

ImportError: Could not import PIL.Image. The use of `load_img` requires PIL.

2 个答案:

答案 0 :(得分:1)

我在升级到 flutter 2 后遇到了与您完全相同的问题。我设法通过使用以下方法解决了这个问题:

    class ChuckBloc {
       ChuckRepository ? _chuckRepository;
       final  _chuckDataController = StreamController<Response<chuckResponse>>();
       bool ? _isStreaming;

       StreamSink<Response<chuckResponse>> get chuckDataSink =>_chuckDataController.sink;

       Stream<Response<chuckResponse>> get chuckDataStream =>_chuckDataController!.stream;

       ChuckBloc(String category) {
          _chuckRepository = ChuckRepository();
          _isStreaming = true;
          fetchChuckyJoke(category);
       }
       
       //the rest of your code here...
       
    }

您可以删除“?”在chuckDataSink 上也是如此,因为它不会为空

答案 1 :(得分:-2)

dart 2.12 是一些带有空值的提取物

所以

_chuckDataController 从开始到使用都没有初始化

ChuckBloc {
final _chuckDataController PublishSubject<Response<chuckResponse>>();
StreamSink<Response<chuckResponse>> get chuckDataSink =>   _chuckDataController.sink;