Flutter(八) Dart語言基礎(chǔ)-庫的使用

在Dart中,你可以導(dǎo)入一個庫來使用它所提供的功能。
庫的使用可以使代碼的重用性得到提高,并且可以更好的組合代碼。
Dart中任何一個dart文件都是一個庫,即使你沒有用關(guān)鍵字library聲明

庫的導(dǎo)入

import語句用來導(dǎo)入一個庫,后面跟一個字符串形式的Uri來指定表示要引用的庫,語法如下:

import '庫所在的uri';

常見的庫URI有三種不同的形式

  • 來自dart標(biāo)準(zhǔn)版,比如dart:io、dart:html、dart:math、dart:core(但是這個可以省略)
//dart:前綴表示Dart的標(biāo)準(zhǔn)庫,如dart:io、dart:html、dart:math
import 'dart:io';

  • 使用相對路徑導(dǎo)入的庫,通常指自己項目中定義的其他dart文件
//當(dāng)然,你也可以用相對路徑或絕對路徑的dart文件來引用
import 'lib/student/student.dart';

  • Pub包管理工具管理的一些庫,包括自己的配置以及一些第三方的庫,通常使用前綴package
//Pub包管理系統(tǒng)中有很多功能強(qiáng)大、實用的庫,可以使用前綴 package:
import 'package:flutter/material.dart';

庫文件中內(nèi)容的顯示和隱藏

如果希望只導(dǎo)入庫中某些內(nèi)容,或者刻意隱藏庫里面某些內(nèi)容,可以使用showhide關(guān)鍵字

  • show關(guān)鍵字:可以顯示某個成員(屏蔽其他)
  • hide關(guān)鍵字:可以隱藏某個成員(顯示其他)
import 'lib/student/student.dart' show Student, Person;

import 'lib/student/student.dart' hide Person;

庫中內(nèi)容和當(dāng)前文件中的名字沖突

當(dāng)各個庫有命名沖突的時候,可以使用as關(guān)鍵字來使用命名空間

import 'lib/student/student.dart' as Stu;

Stu.Student s = new Stu.Student();

庫的定義

library關(guān)鍵字

通常在定義庫時,我們可以使用library關(guān)鍵字給庫起一個名字。

但目前我發(fā)現(xiàn),庫的名字并不影響導(dǎo)入,因為import語句用的是字符串URI

library math;

part關(guān)鍵字

在開發(fā)中,如果一個庫文件太大,將所有內(nèi)容保存到一個文件夾是不太合理的,我們有可能希望將這個庫進(jìn)行拆分,這個時候就可以使用part關(guān)鍵字了
不過官方已經(jīng)不建議使用這種方式了:官方推薦使用小的文件庫

mathUtils.dart文件

part of "utils.dart";

int sum(int num1, int num2) {
  return num1 + num2;
}


dateUtils.dart文件

part of "utils.dart";

String dateFormat(DateTime date) {
  return "2020-12-12";
}


utils.dart文件

part "mathUtils.dart";
part "dateUtils.dart";

test_libary.dart文件

import "lib/utils.dart";

main(List<String> args) {
  print(sum(10, 20));
  print(dateFormat(DateTime.now()));
}

export關(guān)鍵字

官方不推薦使用part關(guān)鍵字,那如果庫非常大,如何進(jìn)行管理呢?
將每一個dart文件作為庫文件,使用export關(guān)鍵字在某個庫文件中單獨導(dǎo)入

mathUtils.dart文件

int sum(int num1, int num2) {
  return num1 + num2;
}


dateUtils.dart文件


String dateFormat(DateTime date) {
  return "2020-12-12";
}


utils.dart文件

library utils;
export "mathUtils.dart";
export "dateUtils.dart";

test_libary.dart文件

import "lib/utils.dart";

main(List<String> args) {
  print(sum(10, 20));
  print(dateFormat(DateTime.now()));
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容