1. 程式人生 > >Flutter學習筆記5 (網路與非同步)

Flutter學習筆記5 (網路與非同步)

繼續學習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確實很簡單,很強大。非常期待正式版本儘早釋出。