泛型指在函数、类、接口中指定宽泛类型的语法。
泛型函数解决了代码重复的问题,可以使函数的参数类型变成可变类型。
语法 :
返回类型 函数名称<输入类型>(参数类型 参数){}
T getData<T>(T val) {
return val;
}
void main(List<String> args) {
print(getData<String>("string"));
print(getData<int>(12));
print(getData<bool>(true));
}
泛型类可以让整个类的属性和方法共享一个动态数据类型。
class SetVals<T>{
Set set = Set<T>();
void add(T val){
set.add(val);
print(set);
}
}
main(){
SetVals setValsString = SetVals<String>();
setValsString.add("ok");
SetVals setValsInt = SetVals<int>();
setValsInt.add(1);
}
flutter 中实现泛型类的典型例子
import 'package:flutter/material.dart';
void main(List<String> args) {
runApp(const MaterialApp(home: Scaffold(
body: Home(color: Colors.red,),
),));
}
class Home extends StatefulWidget{
final Color color;
const Home({required this.color ,super.key});
@override
State<Home> createState() {
return _HomeState();
}
}
class _HomeState extends State<Home>{
@override
Widget build(BuildContext context) {
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text("ok", style: TextStyle(color:widget.color),)],
),
);
}
}