Flutter學習筆記5 (網路與非同步)
阿新 • • 發佈:2019-02-08
繼續學習Flutter。
幾天下來,最大的感受是,Flutter確實是一個非常優秀的新技術,不僅有趣,而且值得你花時間研究學習,前景應該不錯。
之前瞭解了Flutter的基本用法、Widget、Layout,這些都是UI介面。下一步當然就是連線後臺的網路和非同步呼叫了。
1. 非同步呼叫
Dart是一個單執行緒語言,但是它仍然可以非同步地去處理任務。
相當於iOS裡只有一個main執行緒。Dart提供了一個async/await的機制,來執行網路程式碼,但是不阻塞UI。
loadData() async { String dataURL = "https://jsonplaceholder.typicode.com/posts"; http.Response response = await http.get(dataURL); setState(() { widgets = json.decode(response.body); }); }
網路程式碼執行完後,呼叫setState()重新整理。就是這麼簡單。
另外,如果想顯示一個載入提示的話,也可以顯示一個ProgressIndicator的Widget。
2.Layout
在iOS裡對於一個list,一般就是通過UITableView或者CollectionView來顯示。
在Flutter裡,則是ListView,或者GridView(顯示多列的List)。
iOS的UITableViewController有很多非常複雜的方法,需要去告訴系統如何handle這些資料。
在Flutter裡的ListView,只需要把list資料作為引數傳給Widget即可,其它全部會幫你搞定,就是這麼簡單。
總結,可以明顯看到Flutter確實很簡單,很強大。非常期待正式版本儘早釋出。