Flutter Dart中泛型的类型推断
如果难以理解为什么Dart类型推断无法理解泛型的这种结构 问题是:这是语言的限制还是我可以改进我的代码以便Dart理解返回变量的类型 我的代码如下Flutter Dart中泛型的类型推断,flutter,generics,dart,flutter-provider,Flutter,Generics,Dart,Flutter Provider,如果难以理解为什么Dart类型推断无法理解泛型的这种结构 问题是:这是语言的限制还是我可以改进我的代码以便Dart理解返回变量的类型 我的代码如下 类BaseState扩展了ChangeNotifier{ 静态T of(BuildContext上下文,{bool listen=true}) =>Provider.of(上下文,listen:listen); 静态未来调度程序(BuildContext上下文,E事件) =>of(上下文,侦听:false)。分派(事件); ... } 我想这样称
类BaseState扩展了ChangeNotifier{
静态T of(BuildContext上下文,{bool listen=true})
=>Provider.of(上下文,listen:listen);
静态未来调度程序(BuildContext上下文,E事件)
=>of(上下文,侦听:false)。分派(事件);
...
}
我想这样称呼它:
var newState=await BaseState.dispatcher(上下文,LoginToggleEvent());
印刷品(newState.isLoggedIn);
事件LoginToggleEvent
的类定义为
抽象类AppEvent扩展BaseEvent{}
类LogginToggleEvent扩展AppEvent{
...
}
而AppState
是BaseState
的子类
问题是,如果我这样设置,dart会说返回类型是BaseState
,我希望它是AppState
。因为事件E是一个事件
- 如果我将
更改为var newState
它将工作AppState newState
- 如果我显式地强制转换它(作为AppState),它将工作
- 如果我为dispatcher(
)添加显式值,它将工作dispatcher(…)
希望有人能给我指出正确的方向,或者告诉我这是不可能的。您第一个明确指定
newState
的类型到AppState
的解决方案是正确的。在本文中提到,当类型
推理不能像您预期的那样工作时,显式指定类型
。将新闻状态
的类型
精确指定为应用状态
的第一个解决方案是正确的方法。在本文中提到,当类型
推理无法按预期工作时,显式指定类型
。