您使用通用类型的方式
T是不完整的。您的代码中编写
StateFullConsumerWidget的
_StateFullConsumerWidgetState类与类之间的关系
StateFullConsumerWidget可以使用与
T自身相同的类型参数来创建其状态,因此小部件知道该状态使用与该类型相同的通用类型。从的角度来看
_StateFullConsumerWidgetState,该类是这样声明的:
class _StateFullConsumerWidgetState<T extends ChangeNotifier> extends State<StateFullConsumerWidget>
问题是状态类使用的一般形式
StateFullConsumerWidget,所以存在之间没有明确的关系
T的是
_StateFullConsumerWidgetState正在接收作为类型参数和
T其
StateFullConsumerWidget使用。Dart不知道如何协调这种模棱两可的关系,因此它默认使用类型约束允许的最小公分母
ChangeNotifier。
因此,当您尝试将
T视为时
OnBoardingViewModel,Dart会引发错误,因为据状态类所知,
T父窗口小部件的为
ChangeNotifier,而不是
OnBoardingViewModel。
您可以通过在声明状态类时传递type参数来解决此问题:
class _StateFullConsumerWidgetState<T extends ChangeNotifier> extends State<StateFullConsumerWidget<T>>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)