没学过 Flutter 。
你这个 eval 是个能接收 T 类型参数的函数,而不是个能接受 Event 类型的函数。
比如我来个 AnotherEvent extends Event 。
这时候 T 就是 AnotherEvent 。
我 eval 函数能接收 AnotherEvent 关你 SomeEvent 啥事
更多关于Flutter中泛型为什么不能用这样用呢的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
可以拓展了解两个概念 covariance 和 contravariance
在Flutter(以及Dart语言,因为Flutter主要使用Dart)中,泛型的使用确实有一定的规则和限制。如果你在尝试使用泛型时遇到了问题,可能的原因包括:
-
类型参数不匹配:泛型类型参数在定义和使用时必须保持一致。如果你试图将一个不兼容的类型作为泛型参数传递,会导致编译错误。
-
泛型方法或类的定义不正确:定义泛型方法或类时,需要正确声明泛型类型参数,并在方法体或类体中正确使用这些参数。任何类型参数的遗漏或错误使用都会导致问题。
-
泛型的上下界限制:Dart支持为泛型类型参数指定上界(
extends
)和下界(super
),这有助于确保类型安全。如果传递的类型参数不满足这些限制,同样会导致错误。 -
Dart语言规范:Dart语言对泛型的支持有一定的规范,这些规范可能与你习惯的其他编程语言有所不同。例如,Dart中的泛型是逆变和协变的,这意味着在某些情况下,泛型参数的类型关系可能与你的预期不同。
-
编译器/IDE的限制或错误:有时,问题可能由编译器或IDE的bug引起。尝试更新你的开发环境,查看是否解决了问题。
解决这些问题通常需要仔细检查你的代码,确保泛型的使用符合Dart语言的规范和最佳实践。如果可能的话,查看官方文档或搜索具体的错误信息,通常可以帮助你更快地找到问题的根源。