Dart 泛型

泛型概念

泛型指在函数、类、接口中指定宽泛类型的语法。

泛型函数

泛型函数解决了代码重复的问题,可以使函数的参数类型变成可变类型。

语法 :

返回类型 函数名称<输入类型>(参数类型 参数){}

泛型函数的例子

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),)],
      ),
    );
  }

}