Dart: Libraries
Dart, an open-source programming language initially developed by Google, is designed for bother server-side and client-side applications.
Its software development kit(SDK) includes the Dart VM compiler and a utility called dart2js, which converts Dart code into JavaScript, enabling its execution on platforms that do directly support Dart.
Dart is an Object-oriented language and is quite similar to that of Java Programming. Dart is extensively used to create single-page websites and web-applications. The best example of a dart application is Gmail.
Importing Libraries:
For using libraries in the dart, we must import them first. Importing makes the components of a library available in the current file. Dart has a special keyword import for importing libraries.
Syntax: import 'dart:sync'
// Example showing importing a library
// Importing built-in library
import 'dart:math';
void main() {
print("Square root of 25 is: ${sqrt(25)}");
}
Output:
Square root of 25 is: 5
When importing a library file from another package, “package: directive” is used to specify the URI of that file:
import 'package:utilities/utilities.dart';
Creating Custom Libraries
Custom libraries are the libraries that the user creates according to his need.
Such libraries are known as user-defined libraries. Dart supports the creation of such libraries, and we can import them when needed.
This takes place in basically two steps:
1. Declaration
Library name must be declared using the keyword “library”
library ‘my_lib’ //any random lib name
2. Connection
A library can be connected within the same directory or from another directory.
//within same directory
import ‘library_name’
//from another directory
import ‘dir/library_name’
// Example illustrating creation of a custom library
library basic_calc;
import 'dart:math';
// library content
int add(int a,int b){
print("Add Method ") ;
return a+b;
}
int multiplication(int a,int b){
print("Multiplication Method") ;
return a*b;
}
int subtraction(int a,int b){
print("Subtraction Method") ;
return a-b;
}
int modulus(int a,int b){
print("Modulus Method") ;
return a%b;
}
We have created a custom library named “basic_calc“. Now we have to import our lib in a current file:
import 'basic.dart';
void main() {
var a = 50;
var b = 30;
var sum = add(n1,n2);
var mod = modulus(n1,n2);
var mul = multiplication(n1,n2);
var div = divide(n1,n2);
var sub = subtraction(n1,n2);
print("$n1 + $n2 = $sum");
print("$n1 % $n2= $mod");
print("$n1 + $n2 = $mul");
print("$n1 - $n2 = $sub");
}
Output:
Add Method
Multiplication Method
Subtraction Method
Modulus Method
50 + 30 = 80
50 % 30= 20
50 * 30 = 1500
50 - 30 = 20
Encapsulation
Another feature provided by dart to its users is the encapsulation of libraries. Encapsulation is used for combining data and functions into a single unit called class. We can achieve encapsulation in dart by using the (underscore), followed by the identifier. The (underscore) symbol is used to make the library’s content completely private.
NOTE: Encapsulation in Dart takes place at library level instead of class-level, unlike other OOP languages.
Syntax: _identifier
Example:
// Example showing encapsulation in dart
// Define a library naming cake
library cake;
class MainCake{
// non-private property
// list of strings
List<String> randomPieceOfCakes = ['chocolate',
'butterscotch',
'vanilla',
'strawberry'];
// private properties
String _pieceOfCake1 = "chocolate";
String pieceOfCake2 = "butterscotch";
}
Here we will import the cake library that we created above:
import 'cake.dart';
void main(){
MainCake newCake = new MainCake();
// non-private property - randomPieceOfCakes
print(newCake.randomPieceOfCakes);
// private property - piece of cake
// private property error
print(newCake._pieceOfCake1);
// non-private private - piece of cake
print(newCake.pieceOfCake2);
}
As Keyword
We can import multiple libraries within a single current file. But if we create two or more functions with the same name, the compiler would be unable to differentiate between the two and will provide the wrong output. To avoid this, dart provides us keyword “as” for naming the alias of a library.
Syntax: import 'my_lib' as prefix
Example:
// Example showing the use of as keyword
// Defining a lib names greetings
library greetings;
void sayHi(msg){
print("Hello coder. Welcome to ${msg}");
}
Now we will define another library
library hellogreetings;
void sayHi(msg){
print("${msg} has solutions of all your problems");
}
Now, we import the above libraries with them as the prefix
import 'greetings.dart';
import 'hellogreetings.dart' as gret;
// using as prefix avoids function name clashes
void main(){
sayHi("GFG");
// To eliminate the name confliction
gret.sayHi("GFG");
}
Output:
Hello coder. Welcome to GFG
GFG has solutions of all your problems
Below are the core libraries of Dart:
TYPE | LIBRARY | DESCRIPTION | |
Multi-Platform Libraries | dart:async | This library supports asynchronous programming, with classes such as Future and Stream. | |
dart:collection | This library contains classes and utilities that supplement the collection support in dart:core. | ||
dart:convert | This library contains encoders and decoders for converting between different data representations, including JSON and UTF-8. | ||
dart:core | This library contains built-in types, collections, and other core functionality for every Dart program. | ||
dart:developer | This library provides interaction with developer tools such as the debugger and inspector. | ||
dart:math | This library contains mathematical constants and functions, plus a random number generator. | ||
dart:typed_data | This library contains lists that efficiently handle fixed sized data files(for example, unsigned 8-byte integers) and SIMD numeric types. | ||
Native platform libraries | dart:io | This library contains file, sockets, HTTP, and other I/O support for non-web applications. | |
dart:isolate | This library supports Concurrent programming using isolates independent workers similar to threads. | ||
Web platform libraries | dart:html | This library contains HTML elements and other resources for web-based applications. | |
dart:indexed_db | This library supports a Client-side key-value store with support for indexes. | ||
dart:web_audio | This library supports High-fidelity audio programming in the browser. | ||
dart:web_gl | This library supports 3D programming in the browser. |
Subscribe to my newsletter
Read articles from Jinali Ghoghari directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by