【发布时间】:2021-07-11 17:39:03
【问题描述】:
通过迁移到 Flutter 2,我收到以下错误。
lib/bloc/chuck_category_bloc.dart:12:7: 错误: 'StreamSink?' 类型的值无法从返回类型为“StreamSink
- “StreamSink”来自“dart:async”。
- “响应”来自“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/bloc/chuck_category_bloc.dart:15:7: 错误:“流”类型的值?无法从返回类型为“Stream
?”的函数返回。 - “流”来自“dart:async”。
- “响应”来自“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; ^
下面是代码
import 'dart:async';
import 'package:upgrade_noyelling/models/chuck_response.dart';
import 'package:upgrade_noyelling/networking/Response.dart';
import 'package:upgrade_noyelling/repository/chuck_repository.dart';
class ChuckBloc {
ChuckRepository ? _chuckRepository;
StreamController ? _chuckDataController;
bool ? _isStreaming;
StreamSink<Response<chuckResponse>>? get chuckDataSink =>
_chuckDataController.sink;
Stream<Response<chuckResponse>> get chuckDataStream =>
_chuckDataController!.stream;
ChuckBloc(String category) {
_chuckDataController = StreamController<Response<chuckResponse>>();
_chuckRepository = ChuckRepository();
_isStreaming = true;
fetchChuckyJoke(category);
}
fetchChuckyJoke(String category) async {
chuckDataSink!.add(Response.loading('Getting a Chucky joke!'));
try {
chuckResponse chuckJoke = await _chuckRepository!.fetchChuckJoke(category);
if (_isStreaming!) chuckDataSink!.add(Response.completed(chuckJoke));
} catch (e) {
if (_isStreaming!) chuckDataSink!.add(Response.error(e.toString()));
print(e);
}
}
dispose() {
_isStreaming = false;
_chuckDataController?.close();
}
}
【问题讨论】: