一、mixins
mixins是乙個前端很火的概念,是乙個重複使用類中**的方式。
class a
}class b
}class c = a with b; // 使用with關鍵字,表示類c是由類a和類b混合而構成
void main()
二、非同步
dart提供了類似es7中的async await等非同步操作,這種非同步操作在flutter開發中會經常遇到,比如網路或其他io操作,檔案選擇等都需要用到非同步的知識。 async和await往往是成對出現的,如果乙個方法中有耗時的操作,你需要將這個方法設定成async,並給其中的耗時操作加上await關鍵字,如果這個方法有返回值,你需要將返回值塞到future中並返回,如下**所示:
futuregetnetdata() async
main() );
}
三、變數
1、var
var 宣告變數並自動推斷型別
dart 中,有乙個變數可以指定型別宣告,如下
string s = 's1';
int i = 2;
double f = 2.2;
這些,也完全可以使用 var 來處理,讓編譯器自動推斷;
var s = 's1'; // type string
var i = 2; // type int
var f = 2.2; // type double
2、dynamic
無論是 var 還是 int 等型別宣告的變數,再次賦值其他型別會報錯,如下:
var s = 's1';
s = 1;
如果使用 dynamic 申明的變數,則可以進行此操作
dynamic s = 's1';
print(s); // 值為 s1
s = 1;
print(s); // 值為 1
3、const 與 final
共同點:
void main()
不同點:
1、const 隱式的 final,不單單可以約束變數,也可以約束變數的值。
void main()
使用 final ,列印正常,結果為 [1, 2]
若把 final 改為 const ,則會報錯
因此,若定義固定的 list(或 map 或其他型別等),明確後續不再改變它,那麼 const 就有用了
可以看出,final 與 const,類似於 python 的 淺複製 與 深複製
2、const 為編譯時常量,final 為執行時常量
const dt = const datetime.now(); //錯誤,因為時間是在執行時候確定的
final dt = datetime.now(); //正確,執行時有確定的值
3、記憶體中重複建立
const a1 = [11 , 22];
const a2 = [11 , 22];
print(identical(a1, a2));//true
final a1 = [11 , 22];
final a2 = [11 , 22];
print(identical(a1, a2));//false
幾個知識點
1 記憶體對齊 2 mvc與ssh框架對應關係 3 面試相關 4 非c 內建型別a和b,在哪幾種情況下b能隱式轉化為a?case 4 賦值操作,雖不是正宗的隱式型別轉換,但也可以勉強算乙個 5 extern c 的慣用法 1 在c 中引用c語言中的函式和變數,在包含c語言標頭檔案 假設為cexamp...
幾個新學知識點
檢視目錄下最新建立的第乙個檔案 ls t 1 head n 1 bz2 檔案解壓 先用bzip2 d tar.bz2解壓成tar檔案 然後用tar xvf 解壓 bzip2的使用資訊可以通過bzip2 help 檢視 yum安裝包之後如何檢視包所在的路徑 一thunderbird為例 1 rpm q...
mysql幾個知識點
1.insert鎖表,insert語句加where條件,資料庫將鎖定整個表,以避免插入重複資料,可用作處理併發問題 資料庫層面的鎖比應用層面的效率高很多。2.tinyint 1 返回值,長度為1時,返回值是true和false。3.時間觸發器,create event on schedule eve...