我正在使用Bloc模式,并具有以下代码来定义我的状态:
import 'package:meta/meta.dart'
@immutable
abstract class UiState {}
class Loading extends UiState {}
class Success extends UiState {
Success(this.message);
final String message;
}
class Failure extends UiState {}
我尝试如下使用UiState
:
class MyWidget extends StatelessWidget {
const MyWidget({
Key key,
@required this.uiState,
}) : super(key: key);
final UiState uiState;
Widget build(BuildContext context) {
if (uiState is Success) {
return Text(uiState.message);
}
...
}
}
但是VSCode告诉我,“未为类'UiState'定义getter'消息'”。
我以前使用过智能铸模,但它们确实起作用。但是在这种情况下,我无法弄清为什么它不起作用。
我的pubspec具有以下内容:
environment:
sdk: ">=2.1.0 <3.0.0"
所以,我认为我的飞镖版本至少是2.1.0。
答案 0 :(得分:1)
is
仅对局部变量执行隐式类型提升。对于非局部变量,类型升级不是自动的,因为它们可能是getter函数的结果,该函数从一次访问返回另一次访问会返回不同的值。
参考文献: