Учебники

Дартс Программирование — Библиотеки

Библиотека на языке программирования представляет собой набор процедур (набор инструкций по программированию). Dart имеет набор встроенных библиотек, которые полезны для хранения часто используемых подпрограмм. Библиотека Dart состоит из набора классов, констант, функций, определений типов, свойств и исключений.

Импорт библиотеки

Импорт делает компоненты в библиотеке доступными для кода вызывающей стороны. Ключевое слово import используется для достижения того же. Файл дротика может иметь несколько операторов импорта.

Встроенные URI библиотеки Dart используют схему dart: для ссылки на библиотеку. Другие библиотеки могут использовать путь к файловой системе или схему package: для указания своего URI. Библиотеки, предоставляемые менеджером пакетов, таким как инструмент публикации, используют схему package : .

Синтаксис для импорта библиотеки в Dart приведен ниже —

import 'URI'

Рассмотрим следующий фрагмент кода —

import 'dart:io' 
import 'package:lib1/libfile.dart' 

Если вы хотите использовать только часть библиотеки, вы можете выборочно импортировать библиотеку. Синтаксис для того же приведен ниже —

import 'package: lib1/lib1.dart' show foo, bar;  
// Import only foo and bar. 

import 'package: mylib/mylib.dart' hide foo;  
// Import all names except foo

Некоторые часто используемые библиотеки приведены ниже —

Sr.No Библиотека и описание
1

дротик: И.О.

Поддержка файлов, сокетов, HTTP и других операций ввода-вывода для серверных приложений. Эта библиотека не работает в браузерных приложениях. Эта библиотека импортируется по умолчанию.

2

дротик: ядро

Встроенные типы, коллекции и другие основные функции для каждой программы Dart. Эта библиотека автоматически импортируется.

3

дротик: математика

Математические константы и функции, плюс генератор случайных чисел.

4

дротик: конвертировать

Кодеры и декодеры для преобразования между различными представлениями данных, включая JSON и UTF-8.

5

дротик: typed_data

Списки, которые эффективно обрабатывают данные фиксированного размера (например, 8-байтовые целые числа без знака).

дротик: И.О.

Поддержка файлов, сокетов, HTTP и других операций ввода-вывода для серверных приложений. Эта библиотека не работает в браузерных приложениях. Эта библиотека импортируется по умолчанию.

дротик: ядро

Встроенные типы, коллекции и другие основные функции для каждой программы Dart. Эта библиотека автоматически импортируется.

дротик: математика

Математические константы и функции, плюс генератор случайных чисел.

дротик: конвертировать

Кодеры и декодеры для преобразования между различными представлениями данных, включая JSON и UTF-8.

дротик: typed_data

Списки, которые эффективно обрабатывают данные фиксированного размера (например, 8-байтовые целые числа без знака).

Пример: импорт и использование библиотеки

В следующем примере импортируется встроенная библиотека dart: math . Фрагмент вызывает функцию sqrt () из математической библиотеки. Эта функция возвращает квадратный корень переданного ей числа.

Live Demo

import 'dart:math'; 
void main() { 
   print("Square root of 36 is: ${sqrt(36)}"); 
}

Выход

Square root of 36 is: 6.0

Инкапсуляция в библиотеках

Скрипты Dart могут ставить перед идентификаторами символ подчеркивания (_), чтобы пометить его компоненты как частные. Проще говоря, библиотеки Dart могут ограничивать доступ к его содержимому с помощью внешних скриптов. Это называется инкапсуляцией . Синтаксис для того же приведен ниже —

Синтаксис

_identifier

пример

Сначала определите библиотеку с частной функцией.

Live Demo

library loggerlib;                            
void _log(msg) {
   print("Log method called in loggerlib msg:$msg");      
} 

Далее импортируем библиотеку

import 'test.dart' as web; 
void main() { 
   web._log("hello from webloggerlib"); 
} 

Приведенный выше код приведет к ошибке.

Unhandled exception: 
No top-level method 'web._log' declared.  
NoSuchMethodError: method not found: 'web._log' 
Receiver: top-level 
Arguments: [...] 
#0 NoSuchMethodError._throwNew (dart:core-patch/errors_patch.dart:184) 
#1 main (file:///C:/Users/Administrator/WebstormProjects/untitled/Assertion.dart:6:3) 
#2 _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:261) 
#3 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:148)

Создание пользовательских библиотек

Дарт также позволяет использовать свой собственный код в качестве библиотеки. Создание пользовательской библиотеки включает в себя следующие шаги:

Шаг 1: Объявление библиотеки

Чтобы явно объявить библиотеку, используйте оператор библиотеки . Синтаксис объявления библиотеки приведен ниже.

library library_name  
// library contents go here 

Шаг 2: ассоциирование библиотеки

Вы можете связать библиотеку двумя способами —

  • В том же каталоге
import 'library_name'
  • Из другого каталога
import 'dir/library_name'

Пример: пользовательская библиотека

Сначала давайте определим пользовательскую библиотеку calculator.dart .

library calculator_lib;  
import 'dart:math'; 

//import statement after the libaray statement  
int add(int firstNumber,int secondNumber){ 
   print("inside add method of Calculator Library ") ; 
   return firstNumber+secondNumber; 
}  
int modulus(int firstNumber,int secondNumber){ 
   print("inside modulus method of Calculator Library ") ; 
   return firstNumber%secondNumber; 
}  
int random(int no){ 
   return new Random().nextInt(no); 
}

Далее мы импортируем библиотеку —

import 'calculator.dart';  
void main() {
   var num1 = 10; 
   var num2 = 20; 
   var sum = add(num1,num2); 
   var mod = modulus(num1,num2); 
   var r = random(10);  
   
   print("$num1 + $num2 = $sum"); 
   print("$num1 % $num2= $mod"); 
   print("random no $r"); 
} 

Программа должна выдать следующий результат:

inside add method of Calculator Library  
inside modulus method of Calculator Library  
10 + 20 = 30 
10 % 20= 10 
random no 0 

Префикс библиотеки

Если вы импортируете две библиотеки с конфликтующими идентификаторами, то вы можете указать префикс для одной или обеих библиотек. Используйте ключевое слово «as» для указания префикса. Синтаксис для того же приведен ниже —

Синтаксис

import 'library_uri' as prefix

пример

Сначала давайте определим библиотеку: loggerlib.dart .

library loggerlib;  
void log(msg){ 
   print("Log method called in loggerlib msg:$msg");
}   

Далее мы определим другую библиотеку: webloggerlib.dart .

library webloggerlib; 
void log(msg){ 
   print("Log method called in webloggerlib msg:$msg"); 
} 

Наконец, мы импортируем библиотеку с префиксом.

import 'loggerlib.dart'; 
import 'webloggerlib.dart' as web;  

// prefix avoids function name clashes 
void main(){ 
   log("hello from loggerlib"); 
   web.log("hello from webloggerlib"); 
} 

Это даст следующий результат