原始碼解讀 Flutter非同步重新整理UI相關概念

2021-10-02 01:23:10 字數 1376 閱讀 8217

本文從原始碼角度去闡述並記錄筆者學習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...