1.判斷2個字符串是否一樣使用==號
// 判斷兩個字符串是否相等
bool equal(String str1, String str2) {
return str1 == str2;
}
2.可選參數
// 這個方法裏有個特殊地方[String from]這個字段是可以不傳的,在字符串中使用$符合可以取得作用域裏的參數
String getUserInfo(String name, String sex, [String from]) {
var info = '$name的性別是$sex';
if (from != null) {
info = '$info來自$from';
}
return info;
}
void test(){
print(getUserInfo('小王', '男'));
}
還可以給這個可選參數給默認值
// 使用等號( = )來設置默位置字參數這樣不傳時候就不會是null
String getUserInfo(String name, String sex, [String from = '中國']) {
var info = '$name的性別是$sex';
if (from != null) {
info = '$info來自$from';
}
return info;
}
void test(){
print(getUserInfo('小王', '男'));
}
3.自己縷一縷
var a, b;
a = 0;
b = ++a; //在b獲得其值之前自增a
assert(a == b); //1 == 1
a = 0;
b = a++; //在b獲得值後自增a
assert(a != b); //1 != 0
a = 0;
b = --a; //在b獲得其值之前自減a
assert(a == b); //-1 == -1
a = 0;
b = a--; //在b獲得值後自減a
assert(a != b); //-1 != 0
4.as、is和is!操作符在運行時用於檢查類型非常方便
//直接使用is就可以對比
if (user is User) {
// 類型檢測
user.name = 'Flutter';
}
//直接使用as可以強制轉換
(user as User).name = 'Flutter';
5.賦值操作符
// 賦值給a
a = value;
// 如果b爲空,則將值分配給b;否則,b保持不變
b ??= value;
6.條件表達式如果條件爲真,則返回expr1,否則返回expr2:
condition ? expr1 : expr2
7.級聯操作
//其中的“..”符號代表的就是 querySelector('#btnOK).
querySelector('#btnOK) //獲取一個id爲btnOK的按鈕對象
..text = '確定' //使用它的成員
..classes.add('ButtonOKStyle')
..onClick.listen((e) => window.alert('確定'));
8.for循環
//這種循環獲取不到數組下標,只能獲得對應下標的值v
var arr = [0, 1, 2, 3, 4, 5, 6];
for (var v in arr) {
print(v);
}
9.assert如果assert的判斷爲true,則繼續執行下面的語句;反之則會拋出一個斷言錯誤異常AssertionError
// 確定變量的值不爲null
assert(text != null);
10.對象get和set會默認給建立不需要設置
class User{
String name; //name成員變量
int age; //age成員變量
}
main() {
var user = new User();
user.name = '張三'; //相當於使用了name的setter方法
user.age = 20;
}
11.重載操作
// 定義一個向量類
class Vector {
final int x;
final int y;
const Vector(this.x, this.y);
//重載加號 + (a + b)
Vector operator +(Vector v) {
return Vector(x + v.x, y + v.y);
}
//重載減號 - (a - b)
Vector operator -(Vector v) {
return Vector(x - v.x, y - v.y);
}
}
main() {
// 實例化兩個向量
final v = Vector(2, 3);
final w = Vector(2, 2);
final r1 = v + w;
//意思就是x=2+2;y=3+2
print('r1.x='+r1.x.toString() + ' r1.y=' + r1.y.toString());
final r2 = v - w;
//意思就是x=2-2;y=3-2
print('r2.x='+r2.x.toString() + ' r2.y=' + r2.y.toString());
}
12.枚舉類型
enum Color {
red,
green,
blue
}
// 定義一個顏色變量,默認值爲藍色
Color aColor = Color.blue;
switch (aColor) {
case Color.red:
print('紅色');
break;
case Color.green:
print('綠色');
break;
default: //默認顏色
print(aColor); //'Color.blue'
}
13.Mixins
class S {
a() {print("S.a");}
}
class A {
a(){print("A.a");}
b(){print("A.b");}
}
class T = A with S;
main(List<String> args) {
T t = T();
t.a();
t.b();
}
輸出因爲AwithB所以使用B優先
S.a
A.b