Dart泛型方法、類、接口及自定義、內置、第三方庫相關知識概述總結

Dart 泛型

泛型方法 泛型類 泛型接口

泛型的理解:泛型就是解決 類 接口 方法的複用性、以及對不特定數據類型的支持(類型校驗)

場景,如果我們不指定類型傳入參數,返回值的類型就得是這個類型:

// 1. 對傳入參數和返回值 進行校驗
T getData<T>(T value){
  return value;
}

// 2. 對傳入參數進行校驗 和 返回值不校驗
getData<T>(T value){
  return value;
}

void main(){
  getData<String>('hello');  // hello
  getData<int>(123);  //  123
}

場景,列表數組類型

List list = new List<int>();
list.add(123); // ok
list.add('hello'); // error

場景,自定義一個泛型類

class PrintClass<T>{
  List list = new List<T>();

  void add(T value){
    this.list.add(value);
  }

  void printInfo(){
    for(var i=0;i<this.list.length;i++){
      print(this.list[i]);
    }
  }
}

void main(){

  // normal
  PrintClass p = new PrintClass();
  p.add(123);
  p.add('xxx'); // ok
  print(p.list);

  // T int class 
  PrintClass p1 = new PrintClass<int>();
  p1.add(123);
  p1.add('xxx'); // error 
  print(p1.list);
}

Dart泛型接口

實現數據緩存功能,有文件緩存,和內存緩存;文件緩存和內存緩存按照接口的約束來實現

  1. 定義一個泛型接口 約束實現它的子類必須有 getByKey(key) 和 setByKey(key, value)
  2. 要求setByKey的時候value的類型和實例化子類的時候啊指定類型一致
abstract class Cache<T>{
  getByKey(String key);
  void setByKey(String key, T value);
}

// 文件緩存
class FileCache<T> implements Cache<T> {
  @override
  getByKey(String key){
    return null;
  }

  @override
  void setByKey(String key, T value){
    print("文件緩存: key=${key} value=${value} 寫入文件中");
  }
}

// 內存緩存
class MemoryCache<T> implements Cache<T> {
  @override
  getByKey(String key){
    return null;
  }

  @override
  void setByKey(String key, T value){
    print("內存緩存: key=${key} value=${value} 寫入內存中");
  }
}



void main(){
  MemoryCache m = new MemoryCache<String>();
  m.setByKey('index', '首頁數據'); // ok String

  FileCache f = new FileCache<Map>();
  // f.setByKey('index', 123); // error int not Map
  // f.setByKey('index', 'hello'); // error string not Map
  f.setByKey('index', {"name":"cat","age":25}); // ok Map
}

Dart 庫

自定義庫 系統庫 第三方庫

1. 我們自定義的庫
  import "lib/xxx.dart"

2.系統內置的庫
  import 'dart:math';
  import 'dart:io';
  import 'dart:convert';

3. Pub包管理系統中的庫
  https://pub.dev/packages
  https://pub.flutter-io.cn/packages
  https://pub.dartlang.org/flutter

  (1) 需要在自己項目根目錄新建一個 pubspec.yaml
  (2) 在pubspec.yaml文件 然後配置名稱、描述、依賴等信息
  (3) 然後運行 pub get 獲取包下載到本地
  (4) 項目中引入庫 import 'package:http/http.dart' as http; 可以參看文檔
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章