迁移到flutter 2后,以下代码段不再起作用:
class ColorBloc extends BlocBase {
// streams of Color
StreamController _streamListController = StreamController<Color>.broadcast();
// sink
Sink get colorSink => _streamListController.sink;
// stream
Stream<Color> get colorStream => _streamListController.stream;
// function to change the color
changeColor(String chosenColour) {
switch(chosenColour) {
case 'blackTheme':
{
colorSink.add(AppState.blackTheme);
}
break;
case 'blueTheme':
{
colorSink.add(AppState.blueTheme);
}
break;
case 'greenTheme':
{
colorSink.add(AppState.greenTheme);
}
break;
case 'redTheme':
{
colorSink.add(AppState.redTheme);
}
break;
case 'whiteTheme':
{
colorSink.add(AppState.whiteTheme);
}
break;
}
}
@override
dispose() {
_streamListController.close();
}
}
问题出在这一行:
Stream<Color> get colorStream => _streamListController.stream;
给出的理由是:
A value of type 'Stream<dynamic>' can't be returned from the function 'colorStream' because it has a return type of 'Stream<Color>'.
但我不太确定这意味着什么,或者如何尝试解决它。
最佳答案
您只需编辑此行 StreamController _streamListController = StreamController<Color>.broadcast();
至StreamController<Color> _streamListController = StreamController<Color>.broadcast();
错误表明 colorStream
是 Stream
的Color
但你给它一个 Stream
的dynamic
和dynamic
可以是任何东西。所以这是一个错误的类型分配。流当然是通用的。
关于flutter - 无法从函数返回类型为 'Stream<dynamic>' 的值,因为它的返回类型为 'Stream<Color>',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69347573/