Bahir Dar University-BiT-Faculty of Computing
Course Name:-Mobile Application
Development
Chapter 2: Dart Programming
Language
compiled by Samuel. Ashagrre
MOBILE APPLICATION DEVELOPMENT 1
Introduction to Dart
Dart is a client-optimized, object-oriented, modern programming language
to build apps fast for many platforms like android, iOS, web, desktop, etc.
Client optimized means optimized for crafting a beautiful user interface and
high-quality experiences. Google developed Dart as a programming language.
Currently, Dart is one of the most preferred languages to learn. A solid
understanding of Dart is necessary to develop high-quality apps with flutter.
According to Github, Dart is one of the most loved programming languages
in the world.
MOBILE APPLICATION DEVELOPMENT 2
Dart Installation
There are multiple ways to install a dart on your system. You can install Dart on
Windows, Mac, and Linux or run it from the browser.
Dart Windows Installation
Follow the below instructions to install a dart on the windows operating system.
Steps:
Download Dart SDK from here.
Copy dart-sdk folder to your C drive.
Add C:\dart-sdk\bin to your environment variable. Watch the video below to
be more clear.
Open the command prompt and type dart --version to check it.
Install VS Code and Add Dart Extension.
MOBILE APPLICATION DEVELOPMENT 3
Dart Installation
Dart Linux Installation
install the dart using the below command .
sudo apt-get update
sudo apt-get install dart
MOBILE APPLICATION DEVELOPMENT 4
Variables
// here variable name contains value John.
var name = "John";
Variable Types
They are called data types. We will learn more about data types later in this dart tutorial.
String: For storing text value. E.g. “John” [Must be in quotes]
int: For storing integer value. E.g. 10, -10, 8555 [Decimal is not included]
double: For storing floating point values. E.g. 10.0, -10.2, 85.698 [Decimal is included]
num: For storing any type of number. E.g. 10, 20.2, -20 [both int and double]
bool: For storing true or false. E.g. true, false [Only stores true or false values]
var: For storing any value. E.g. ‘Bimal’, 12, ‘z’, true
MOBILE APPLICATION DEVELOPMENT 5
Variables
// here variable name contains value John.
var name = "John";
Variable Types
They are called data types. We will learn more about data types later in this dart tutorial.
String: For storing text value. E.g. “John” [Must be in quotes]
int: For storing integer value. E.g. 10, -10, 8555 [Decimal is not included]
double: For storing floating point values. E.g. 10.0, -10.2, 85.698 [Decimal is included]
num: For storing any type of number. E.g. 10, 20.2, -20 [both int and double]
bool: For storing true or false. E.g. true, false [Only stores true or false values]
var: For storing any value. E.g. ‘Bimal’, 12, ‘z’, true
MOBILE APPLICATION DEVELOPMENT 6
Variables
Syntax
This is syntax for creating a variable in dart.
type variableName = value;
MOBILE APPLICATION DEVELOPMENT 7
Variables
void main() {
// declaring variables // printing variables value
print("Name is $name");
String name = "John"; print("Address is $address");
String address = "USA"; print("Age is $age");
print("Height is $height");
num age = 20; // used to store any types
of numbers print("Married Status is $isMarried");
}
num height = 5.9;
bool isMarried = false;
MOBILE APPLICATION DEVELOPMENT 8
Data Types
Data types help you to categorize all the different types of data you
use in your code. For e.g. numbers, texts, symbols, etc. The data type
specifies what type of value will be stored by the variable. Each variable
has its data type. Dart supports the following built-in data types :
Numbers
Strings
Booleans
Lists
Maps
Sets
Runes
Null
MOBILE APPLICATION DEVELOPMENT 9
Basic Dart Practice Questions
Write a program to print a square of a number using user input.
Write a program to print full name of a from first name and last name using user input.
Write a program to find quotient and remainder of two integers.
Write a program to swap two numbers.
Write a program in Dart to remove all whitespaces from String.
Write a Dart program to convert String to int.
Suppose, you often go to restaurant with friends and you have to split amount of bill.
Write a program to calculate split amount of bill. Formula= (total bill amount) / number of
people
Suppose, your distance to office from home is 25 km and you travel 40 km per hour. Write
a program to calculate time taken to reach office in minutes. Formula= (distance) / (speed)
MOBILE APPLICATION DEVELOPMENT 10
Dart Conditions and Loops
For Loop in Dart,
For Each Loop in Dart,
While Loop in Dart,
Do While Loop in Dart,
Switch Case in Dart,
Break and Continue in Dart,
Ternary Operator in Dart
MOBILE APPLICATION DEVELOPMENT 11
Exception In Dart
Syntax
try {
// Your Code Here
}
catch(ex){
// Exception here
}
MOBILE APPLICATION DEVELOPMENT 12
Exception In Dart
class MarkException implements Exception { void main() {
String errorMessage() { try {
checkMarks(-20);
return 'Marks cannot be negative value.'; } catch (ex) {
} print(ex.toString());
}
}
}
void checkMarks(int marks) {
if (marks < 0) throw
MarkException().errorMessage();
}
MOBILE APPLICATION DEVELOPMENT 13
Dart Functions
Syntax
returntype functionName(parameter1,parameter2, ...){
// function body
}
MOBILE APPLICATION DEVELOPMENT 14
Dart Functions
void add(int num1, int num2){
int sum = num1 + num2;
print("The sum is $sum");
}
void main(){
add(10, 20);
}
MOBILE APPLICATION DEVELOPMENT 15
Dart Functions
Arrow Function In Dart
Syntax
returnType functionName(parameters...) => expression;
MOBILE APPLICATION DEVELOPMENT 16
Dart Functions
Arrow Function In Dart
program finds simple interest using the arrow function.
// arrow function that calculate interest
double calculateInterest(double principal, double rate, double time) =>
principal * rate * time / 100;
void main() {
double principal = 5000;
double time = 3;
double rate = 3;
double result = calculateInterest(principal, rate, time);
print("The simple interest is $result.");
}
MOBILE APPLICATION DEVELOPMENT 17
Dart Functions
Arrow Function In Dart
program finds the sum, difference, multiplication, void main() {
and division of two numbers using the arrow int num1 = 100;
function. int num2 = 30;
int add(int n1, int n2) => n1 + n2; print("The sum is ${add(num1, num2)}");
int sub(int n1, int n2) => n1 - n2; print("The diff is ${sub(num1, num2)}");
print("The mul is ${mul(num1, num2)}");
int mul(int n1, int n2) => n1 * n2;
print("The div is ${div(num1, num2)}");
double div(int n1, int n2) => n1 / n2; }
MOBILE APPLICATION DEVELOPMENT 18
Dart Collection
List In Dart
How To Create List
You can create a List by specifying the initial elements in a square bracket. Square
bracket [] is used to represent a List.
// Integer List
List<int> ages = [10, 30, 23];
// String List
List<String> names = [“Abebe", "John", “Betty"];
// Mixed List
var mixed = [10, "John", 18.8];
MOBILE APPLICATION DEVELOPMENT 19
Dart Collection
Set In Dart
Syntax
Set <variable_type> variable_name = {};
How To Create A Set In Dart
You can create a Set in Dart using the Set type annotation. Here Set<String>
means only text is allowed in the Set.
void main(){
Set<String> fruits = {"Apple", "Orange", "Mango"};
print(fruits);
}
MOBILE APPLICATION DEVELOPMENT 20
Dart Collection
Map In Dart
How To Create Map In Dart
void main(){
Map<String, String> countryCapital = {
'USA': 'Washington, D.C.',
'India': 'New Delhi',
'China': 'Beijing'
};
print(countryCapital);
}
MOBILE APPLICATION DEVELOPMENT 21
Dart Collection
Map In Dart
Access Value From Key
void main(){
Map<String, String> countryCapital = {
'USA': 'Washington, D.C.',
'India': 'New Delhi',
'China': 'Beijing'
};
print(countryCapital["USA"]);
}
MOBILE APPLICATION DEVELOPMENT 22
Dart File Handling
Reading Assignment
Read File in Dart,
Write File in Dart,
Delete File in Dart,
MOBILE APPLICATION DEVELOPMENT 23
Object-Oriented Programming in Dart
Features Of OOP
Class
Object
Encapsulation
Inheritance
Polymorphism
Abstraction
MOBILE APPLICATION DEVELOPMENT 24
Object-Oriented Programming in Dart
Class In Dart
Declaring Class In Dart
Syntax
class ClassName {
// properties or fields
// methods or functions
}
MOBILE APPLICATION DEVELOPMENT 25
Object-Oriented Programming in Dart
Class In Dart
Declaring Class In Dart
class Animal {
String? name;
int? numberOfLegs;
int? lifeSpan;
void display() {
print("Animal name: $name.");
print("Number of Legs: $numberOfLegs.");
print("Life Span: $lifeSpan.");
}
} MOBILE APPLICATION DEVELOPMENT 26
Object-Oriented Programming in Dart
Object In Dart
Syntax
ClassName objectName = ClassName();
MOBILE APPLICATION DEVELOPMENT 27
Object-Oriented Programming in Dart
Object In Dart
class Bicycle { void display() {
print("Color: $color");
String? color; print("Size: $size");
int? size; print("Current Speed: $currentSpeed");
}
int? currentSpeed; }
void main(){
// Here bicycle is object of class Bicycle.
void changeGear(int newValue) { Bicycle bicycle = Bicycle();
currentSpeed = newValue; bicycle.color = "Red";
bicycle.size = 26;
} bicycle.currentSpeed = 0;
bicycle.changeGear(5);
bicycle.display();
}
MOBILE APPLICATION DEVELOPMENT 28
Object-Oriented Programming in Dart
Object In Dart
Challenge
Create a class Camera with properties: name, color, megapixel. Create a method called display
which prints out the values of the three properties. Create two objects of the class Camera and
call the method display.
MOBILE APPLICATION DEVELOPMENT 29
Object-Oriented Programming in Dart
Class and Objects in Dart
Example Of A Class & Object In Dart
class Animal { void main(){
String? name; // Here animal is object of class
int? numberOfLegs; Animal.
Animal animal = Animal();
int? lifeSpan;
animal.name = "Lion";
animal.numberOfLegs = 4;
void display() { animal.lifeSpan = 10;
print("Animal name: $name."); animal.display();
}
print("Number of Legs: $numberOfLegs.");
print("Life Span: $lifeSpan.");
}
MOBILE APPLICATION DEVELOPMENT 30
}
Object-Oriented Programming in Dart
Class and Objects in Dart
Challenge
Create class Home with properties name, address, numberOfRooms. Create a method called display
which prints out the values of the properties. Create an object of the class Home and set the values of
the properties. Call the method display to print out the values of the properties.
MOBILE APPLICATION DEVELOPMENT 31
Object-Oriented Programming in Dart
Encapsulation in Dart
Getter and Setter Methods
Getter and setter methods are used to access and update the value of private property. Getter
methods are used to access the value of private property. Setter methods are used to update the
value of private property.
MOBILE APPLICATION DEVELOPMENT 32
Object-Oriented Programming in Dart
Encapsulation
class Employee {
in Dart
// Private properties
int? _id; // Setter method to update private property _name
void setName(String name) {
String? _name; this._name = name;
// Getter method to access private property _id }
}
int getId() {
return _id!; void main() {
} // Create an object of Employee class
Employee emp = new Employee();
// Getter method to access private property _name // setting values to the object using setter
String getName() { emp.setId(1);
emp.setName("John");
return _name!;
} // Retrieve the values of the object using getter
print("Id: ${emp.getId()}");
// Setter method to update private property _id
print("Name: ${emp.getName()}");
void setId(int id) { }
this._id = id; MOBILE APPLICATION DEVELOPMENT 33
Inheritance in Dart
Syntax
class ParentClass {
// Parent class code
}
class ChildClass extends ParentClass {
// Child class code
}
MOBILE APPLICATION DEVELOPMENT 34
Inheritance in Dart
class Person {
// Properties // Here In student class, we are extending the
String? name; // properties and methods of the Person class
int? age; class Student extends Person {
// Fields
// Method String? schoolName;
void display() {
String? schoolAddress;
print("Name: $name");
print("Age: $age");
}
}
MOBILE APPLICATION DEVELOPMENT 35
Inheritance in Dart
// Method void main() {
void displaySchoolInfo() { // Creating an object of the Student class
var student = Student();
print("School Name: student.name = "John";
$schoolName"); student.age = 20;
print("School Address: student.schoolName = "ABC School";
$schoolAddress"); student.schoolAddress = "New York";
student.display();
} student.displaySchoolInfo();
}
}
MOBILE APPLICATION DEVELOPMENT 36
Polymorphism in Dart
Polymorphism By Method Overriding
Syntax
class ParentClass{
void functionName(){
}
}
class ChildClass extends ParentClass{
@override
void functionName(){
}
}
MOBILE APPLICATION DEVELOPMENT 37
Polymorphism in Dart
Polymorphism By Method class Dog extends Animal {
Overriding @override
class Animal { void eat() {
print("Dog is eating");
void eat() {
}
print("Animal is eating"); }
} void main() {
Animal animal = Animal();
} animal.eat();
Dog dog = Dog();
dog.eat();
}
MOBILE APPLICATION DEVELOPMENT 38
Generic in Dart
Generics is a way to create a class, or function that can work with
different types of data (objects). If you look at the internal
implementation of List class, it is a generic class. It can work with
different data types like int, String, double, etc. For example,
List<int> is a list of integers, List<String> is a list of strings, and
List<double> is a list of double values.
MOBILE APPLICATION DEVELOPMENT 39
Generic in Dart
Syntax
class ClassName<T> {
// code
}
MOBILE APPLICATION DEVELOPMENT 40
Generic in Dart
// Using Generics void main() {
// create an object of type int and double
class Data<T> { Data<int> intData = Data<int>(10);
T data; Data<double> doubleData = Data<double>(10.5);
Data(this.data);
// print the data
} print("IntData: ${intData.data}");
print("DoubleData: ${doubleData.data}");
}
MOBILE APPLICATION DEVELOPMENT 41
Dart Null Safety
Null safety is a feature in the Dart programming language that helps developers
to avoid null errors. This feature is called Sound Null Safety in dart. This allows
developers to catch null errors at edit time.
MOBILE APPLICATION DEVELOPMENT 42
Dart Null Safety
In the example below, the variable age is a int type. If you pass a null value to
this variable, it will give an error instantly.
void main() {
int age = null; // give error
}
MOBILE APPLICATION DEVELOPMENT 43
Dart Null Safety
Problem With Null
Programmers do have a lot of difficulties while handling null values. They forget
that there are null values, so the program breaks. In real world null mostly acts
as time bomb for programmers, which is ready to break the program.
MOBILE APPLICATION DEVELOPMENT 44
Dart Null Safety
Non-Nullable By Default
In Dart, variables and fields are non-nullable by default, which means that they
cannot have a value null unless you explicitly allow it.
int productid = 20; // non-nullable
int productid = null; // give error
MOBILE APPLICATION DEVELOPMENT 45
Dart Null Safety
How To Declare Null Value
With dart sound null Safety, you cannot provide a null value by default. If you
are 100% sure to use it, then you can use ? operator after the type declaration.
// Declaring a nullable variable by using ?
String? name;
MOBILE APPLICATION DEVELOPMENT 46
Dart Null Safety
How To Assign Values To Nullable Variables
You can assign a value to nullable variables just like any other variable. However, you
can also assign null to them.
void main(){
// Declaring a nullable variable by using ?
String? name;
// Assigning John to name
name = "John";
// Assigning null to name
name = null;
}
MOBILE APPLICATION DEVELOPMENT 47
Dart Null Safety
How To Use Nullable Variables
You can use nullable variables in many ways. Some of them are shown below:
You can use if statement to check whether the variable is null or not.
You can use ! operator, which returns null if the variable is null.
You can use ?? operator to assign a default value if the variable is null.
MOBILE APPLICATION DEVELOPMENT 48
Dart Null Safety
How To Use Nullable Variables // Assigning null to name
name = null;
void main(){ // Checking if name is null using if statement
// Declaring a nullable variable by using ? if(name == null){
print("Name is null");
String? name;
}
// Assigning John to name // Using ?? operator to assign a default value
name = "John"; String name1 = name ?? "Stranger";
print(name1);
// Using ! operator to return null if name is null
String name2 = name!;
print(name2);
}
MOBILE APPLICATION DEVELOPMENT 49
Thank
you
MOBILE APPLICATION DEVELOPMENT 50