dàn âm thanh hội trường, âm thanh lớp học, âm thanh phòng họp, loa trợ giảng

Dart Cheat Sheet and Quick Reference

keywords in dart, Dart Cheat Sheet and Quick Reference

Dart Cheat Sheet and Quick Reference

Source: raywenderlich.com

main() function

void main() {
   print('Hello, Dart!');
}

Variables, Data Types, & Comments

 
// Use var with type inference or instead use type name directly
var myAge = 35; // inferred int created with var
var pi = 3.14; // inferred double created with var
int yourAge = 27; // type name instead of var
double e = 2.718; // type name instead of var

// This is a comment
print(myAge); // This is also a comment.

/*
And so is this.
*/

// dynamic can have value of any type
dynamic numberOfKittens;

// dynamic String
numberOfKittens = 'There are no kittens!';
numberOfKittens = 0; // dynamic int
numberOfKittens = 1.0; // dynamic double
bool areThereKittens = true; // bool

// Compile-time constants
const speedOfLight = 299792458;

// Immutables with final
final planet = 'Jupiter';

// planet = 'Mars'; // error: planet is immutable
// Enumerations
enum Month { january, february, march, april, may, june, july, august, september, october, november, december }
final month = Month.august;

Null

int age; // initialized to null
double height;
String err;

// Check for null
var error = err ?? "No error"; // No error

// Null-check compound assignment
err ??= error;

// Null-check on property access
print(age?.isEven);

Operators

// Arithmetic
40 + 2; // 42
44 - 2; // 42
21 * 2; // 42
84 / 2; // 42
84.5 ~/ 2.0; // int value 42
392 % 50; // 42

// Types can be implicitly converted
var answer = 84.0 / 2; // int 2 to double

// Equality and Inequality
42 == 43; // false
42 != 43; // true

// Increment and decrement
print(answer++); // 42, since it prints first for postfix
print(--answer); // 42, since it decrements first for prefix

// Comparison
42 < 43; // true
42 > 43; // false
42 <= 43; // true
42 >= 43; // false

// Compound assignment
answer += 1; // 43
answer -= 1; // 42
answer *= 2; // 84
answer /= 2; // 42

// Logical
(41 < answer) && (answer < 43); // true
(41 < answer) || (answer > 43); // true
!(41 < answer)); // false

Strings

// Can use single or double quotes for String type
var firstName = 'Albert';
String lastName = "Einstein";

// Escape sequences such as \' and \n
// and concatenating adjacent strings
var quote = 'If you can\'t' ' explain it simply\n'
"you don't understand it well enough.";

// Concatenation with +
var energy = "Mass" + " times " + "c squared";

// Preserving formatting with """
var model = """
I'm not creating the universe.
I'm creating a model of the universe,
which may or may not be true.""";

// Raw string with r prefix
var rawString =r”I'll\nbe\nback!"; // prints I’ll\nbe\nback!

Control Flow: Conditionals

var animal = 'fox';
if (animal == 'cat' || animal == 'dog') {
   print('Animal is a house pet.');
} else if (animal == 'rhino') {
   print('That\'s a big animal.');
} else {
   print('Animal is NOT a house pet.');
}

// switch statement
enum Semester { fall, spring, summer }
Semester semester;

switch (month) {
   case Month.august:
   case Month.september:
   case Month.october:
   case Month.november:
   case Month.december:
      semester = Semester.fall;
      break;
   case Month.january:
   case Month.february:
   case Month.march:
   case Month.april:
   case Month.may:
      semester = Semester.spring;
      break;
   case Month.june:
   case Month.july:
      semester = Semester.summer;
      break;
}

Control Flow: While loops

var i = 1;
// while, print 1 to 9
while (i < 10) {
    print(i);
    i++;
}

// do while, print 1 to 9
i = 1;
do {
    print(i);
    ++i;
}
while (i < 10);
// break at 5
do {
   print(i);
   if (i == 5) {
   break;
}
++i;
} while (i < 10);

Control Flow: For loops

var sum = 0;
// Init; condition; action for loop
for (var i = 1; i <= 10; i++) {
sum += i;
}

// for-in loop for list
var numbers = [1, 2, 3, 4];
for (var number in numbers) {
print(number);
}

// Skip over 3 with continue
for (var number in numbers) {
if (number == 3) {
continue;
}
print(number);
}

// forEach with function argument
numbers.forEach(print); // 1, 2, 3, 4 on separate lines

// forEach with anonymous function argument
numbers = [13, 14, 15, 16];
numbers.forEach((number) => print(number.toRadixString(16)); // d, e, f, 10

Functions

// Named function
bool isBanana(String fruit) {
return fruit == 'banana';
}

var fruit = 'apple';
isBanana(fruit); // false

// Optional parameters with square brackets
String fullName(String first, String last, [String title]) {
return "${title == null ? "" : "$title "}$first
$last";
}
fullName("Ray", "Wenderlich"); // Ray Wenderlich
fullName("Albert", "Einstein", "Professor"); //Professor Albert Einstein

// Optional named arguments with braces
bool withinTolerance(int value, {int min, int max}) {
return (min ?? 0) <= value && value <= (max ??
10);
}
withinTolerance(11, max: 10, min: 1); // false

// Default values
bool withinTolerance(int value, {int min = 0, int max = 10}) {
return min <= value && value <= max;
}
withinTolerance(5); // true

// Function as parameter
int applyTo(int value, int Function(int) op) {
return op(value);
}
int square(int n) {
return n * n;
}
applyTo(3, square); // 9

// Arrow syntax for one line functions
int multiply(int a, int b) => a * b;
multiply(14, 3); // 42

Anonymous Functions and Closures

// Anonymous functions (without a name)
// Assign anonymous function to a variable
var multiply = (int a, int b) {
return a * b;
}

// Call a function variable
multiply(14, 3); // 42

// Closures
Function applyMultiplier(num multiplier){

// Return value has access to multiplier
return (num value) => value * multiplier;
}
var triple = applyMultiplier(3);
triple(14.0); // 42.0

Collections: Lists

// Fixed-size list
var pastries = List<String>(3);

// Element access by index
pastries[0] = 'cookies';
pastries[1] = 'cupcakes';
pastries[2] = 'donuts';

// Growable list
List<String> desserts = [];
desserts.add('cookies');

// Initialize by growable list
var desserts = ['cookies', 'cupcakes', 'pie'];

// List properties and methods
desserts.length; // 3
desserts.first; // 'cookies'
desserts.last; // 'pie'
desserts.isEmpty; // false
desserts.isNotEmpty; // true
desserts.firstWhere((str) => str.length < 4));// pie

// Collection if
var peanutAllergy = true;
var candy = ['junior mints', 'twizzlers', if (!peanutAllergy) 'reeses'];

// Collection for
var numbers = [1, 2, 3];
var doubledNumbers = [for (var number in numbers) 2 * number]; // [2, 4, 6]

Collections: List Operations

// Spread Operator and null-spread operator
var pastries = ['cookies', 'cupcakes'];
var desserts = ['donuts', ...pastries, ...?candy];

// Map to transform list
var numbers = [1, 2, 3, 4];
var squares = numbers.map((number) => number * number).toList(); // [1, 4, 9, 16]

// Filter list using where
var evens = squares.where((square) => square.isEven); // (4, 16)

// Reduce list to combined value
var amounts = [199, 299, 299, 199, 499];
var total = amounts.reduce((value, element) => value + element); // 1495

Collections: Sets

// Create set of int
var someSet = <int>{};

// Set type inference
var anotherSet = {1, 2, 3, 1};

// Check for element
anotherSet.contains(1); // true
anotherSet.contains(99); // false

// Adding and removing elements
someSet.add(42);
someSet.add(2112);
someSet.remove(2112);

// Add to set from list
someSet.addAll([1, 2, 3, 4]);

// Intersection
var intersection = someSet.intersection(anotherSet);

// Union
var union = someSet.union(anotherSet);

Collections: Maps

// Map from String to int
var emptyMap = Map<String, int>();

// Map from String to String
var avengers = {"Iron Man": "Suit", "Captain America": "Shield", "Thor": "Hammer"};

// Element access by key
var ironManPower = avengers["Iron Man"]; // Suit
avengers.containsKey("Captain America"); // true
avengers.containsValue("Arrows"); // false

// Access all keys and values
avengers.keys.forEach(print); // Iron Man, Captain America, Thor
avengers.values.forEach(print); // Suit, Shield, Hammer

// Loop over key-value pairs
avengers.forEach((key, value) => print('$key -> $value'));

Classes and Objects

class Actor {

// Properties
String name;
var filmography = <String>[];

// Short-form constructor
Actor(this.name, this.filmography);

// Named constructor
Actor.rey({this.name = "Daisy Ridley"}) {
filmography = ['The Force Awakens', 'Murder on the Orient Express'];
}


// Calling other constructors
Actor.inTraining(String name) : this(name, []);

// Constructor with initializer list
Actor.gameOfThrones(String name): this.name = name, this.filmography = ['Game of Thrones'] {
print('My name is ${this.name}');
}

// Getters and Setters
String get debut => '$name debuted in ${filmography.first}';
set debut(String value) => filmography.insert(0, value);

// Methods
void signOnForSequel(String franchiseName) {
filmography.add('Upcoming $franchiseNamesequel');
}

// Override from Object
String toString() => "${[name, ...filmography].join("\n- ")}\n";
}
var gotgStar = Actor('Zoe Saldana', []);
gotgStar.name = 'Zoe Saldana';
gotgStar.filmography.add('Guardians of the Galaxy');
gotgStar.debut = 'Center Stage';
print(Actor.rey().debut); // The Force Awakens
var kit = Actor.gameOfThrones('Kit Harington');
var star = Actor.inTraining('Super Star');

// Cascade syntax ..
gotgStar // Get an object
..name = 'Zoe' // Use property
..signOnForSequel('Star Trek'); // Call method

Static Class Members

enum PhysicistType { theoretical, experimental, both
}
class Physicist {
String name;
PhysicistType type;

// Internal constructor
Physicist._internal(this.name, this.type);

// Static property
static var physicistCount = 0;

// Static method
static Physicist newPhysicist(
String name,
PhysicistType type) {
physicistCount++;
return Physicist._internal(name, type);
}
}
final emmy = Physicist.newPhysicist(
"Emmy Noether", PhysicistType.theoretical);
final lise = Physicist.newPhysicist(
"Lise Meitner", PhysicistType.experimental);
print(Physicist.physicistCount); //2

Class Inheritance

// Base aka parent class
class Person {

// Parent properties inherited by child
String firstName;
String lastName;

// Parent class constructor
Person(this.firstName, this.lastName);

// Parent class method
String get fullName => '$firstName $lastName';

// Optional @override annotation
// All class hierarchies and types have Object as root class
@override
String toString() => fullName;
}

// Subclass aka child class
class Student extends Person {

// Properties specific to child
var grades = <String>[];

// Call super on parent constructor
Student(String firstName, String lastName): super(firstName, lastName);

// Optional override annotation on parent method override
@override
String get fullName => '$lastName, $firstName';
}
final jon = Person('Jon', 'Snow');
final jane = Student('Jane', 'Snow'); // Calls parent constructor
print(jon); // Jon Snow

// Use toString in parent, in turn using subclass override of fullName
print(jane); // Snow, Jane

Abstract Classes, Interfaces, Mixins

enum BloodType { warm, cold }
abstract class Animal {
BloodType bloodType; // Base class property
void goSwimming(); // Abstract method without implementation
}
mixin Milk {
bool hasMilk;
bool doIHaveMilk() => hasMilk;
}

// Concrete class inheriting from abstract class
class Cat extends Animal with Milk {
BloodType bloodType = BloodType.warm; // Set value for property
Cat() { hasMilk = true; } // Set mixin property

// Concrete subclass must implement abstract methods
@override
void goSwimming() { print("No thanks!"); }
}

// Concrete class that also implements Comparable interface
class Dolphin extends Animal implements
Comparable<Dolphin> {
BloodType bloodType = BloodType.warm;
double length; // Concrete sublcass property
Dolphin(this.length); // Concrete subclass constructor

// Concrete subclass must implement abstract methods
@override
void goSwimming() { print("Click! Click!"); }

// Also must implement interface methods
@override
int compareTo(other) =>
length.compareTo(other.length);
@override
String toString() => '$length meters';
}
class Reptile extends Animal with Milk {
BloodType bloodType = BloodType.cold;
Reptile() { hasMilk = false; }
@override
void goSwimming() { print("Sure!"); }
}

// var snake = Animal(); // error: can't instantiate abstract class
// Can instantiate concrete classes
var garfield = Cat();
var flipper = Dolphin(4.0);
var snake = Reptile();

// Call concrete methods
flipper.goSwimming(); // Click! Click!
garfield.goSwimming(); // No thanks!

// Use interface implementation
var orca = Dolphin(8.0); var alpha = Dolphin(5.0);
var dolphins = [alpha, orca, flipper];
dolphins.sort();
print(dolphins); // [4 meters, 5 meters, 8 meters]
print(snake.doIHaveMilk()); // false
print(garfield.doIHaveMilk()); // true

 

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Posts
Tư Vấn App Học Ngoại Ngữ
Phần Mềm Bản Quyền
Chat Ngay