之前Dart里定义一个函数结构可以用
typedef Widget ItemGenerator<T> ({Key? key, required T model});
这样的语法,但是到了新版本Dart静态检查会建议使用
typedef ItemGenerator<T> = Widget Function({Key? key, required T model});
这就会产生我今天犯下一个隐蔽的bug,引入泛型的时候会不小心写成。
typedef ItemGenerator = Widget Function<T>({Key? key, required T model});
能编译通过,但是在实际场景中你无法为你的变量设置正确的泛型,虽然看上去好像是正确的,补充一句,新的写法可以不单单定义回调,还可以定义一个结构,例如:经常用到的JSON格式在Dart中的定义,使其更具语义化!
typedef JsonMap = Map<String, dynamic>;