本文從原始碼角度去闡述並記錄筆者學習flutter非同步重新整理ui的相關知識點,讀完本篇能大體了解一下知識點:future、stream、streambuilder、provider&multiprovider是什麼?解決了什麼問題?如何用?
future和stream是非同步事件的資料資源提供者,後兩者則是對非同步資料進行同步處理的加工者。
簡單用法:
future getfuture
() async
future<
int>
future =
getfuture()
;//原始碼提供了很多例項化乙個future的方法,選個合適建立future物件
future.
then
((value)
=>
handlevalue
(value)).
catcherror
((error)
=>
handleerror
(error));
模擬操作:
// synchronous code.
trycatch(e
)// equivalent asynchronous code, based on futures:
future<
int>
future =
newfuture
(foo)
;// result of foo() as a future.
future.
then((
int value)
=>
bar(value)).
catcherror
((e)
=>
499)
;
關於一些使用細節,這位老兄總結的很到位了,我就不造輪子了:
void
_stream
() async
, onerror:
(error)
, ondone:()
, cancelonerror:
false);
}
從建構函式入手:
const
streambuilder()
:assert
(builder != null)
,super
(key: key, stream: stream)
;const
futurebuilder()
:assert
(builder != null)
,super
(key: key)
;
openTLD 原始碼解讀
首先是run tld 在其次就是tldexample 最後到了初始化函式tldinit 第乙個比較關鍵的函式 bb scan 將影象網格化,將首先 scale 1.2.10 10 21 個規格 在每個規格上打網格 這個函式有乙個比較重要的方法 ntuples 就是重複 因為網格上的點很多點有相同的x...
thinkphp原始碼解讀
thinkphp原始碼解讀 thinkphp原始碼的根目錄下是 index.php,是系統預設的 主頁,index.php中首先檢測的是 php執行環境,如果php版本小於 5.3.0則退出執行,定義是否為除錯模式,定義應用目錄,引入入口檔案。thinkphp是整個框架的入口檔案,在thinkphp...
HashMap原始碼解讀
一 建立乙個hashmap都做了哪些工作?mapmap new hashmap hahmap無參構造方法 public hashmap 可以看到設定了載入因子 預設0.75 閾值 預設容量16 預設載入因子0.75 12 table是hashmap內部資料儲存結構entry陣列。當hashmap的s...