發表日期:2018-09 文章編輯:小燈 瀏覽次數:1588
GitHub:https://github.com/happy-python/flutter_demos/tree/master/http_demo
Flutter
應用程序使用 Dart
語言編寫(最初來自 Google,現在是 ECMA標準)。Dart
與其他現代語言(如 Kotlin 和 Swift)具有許多相同的功能,可以轉換為 JavaScript 代碼。
作為一個跨平臺框架,Flutter
最接近 React Native,允許響應式和聲明式的編程風格。然而,與 React Native 不同,Flutter
不需要使用 Javascript 橋接,這可以改善應用啟動時間和整體性能。Dart
通過使用Ahead-Of-Time
或 AOT
編譯來實現這一點。
Dart
的另一個獨特方面是它也可以使用 Just-In-Time
或 JIT
編譯。使用 JIT 編譯通過熱重新加載(hot reload
)功能在開發期間刷新 UI 而無需全新構建,從而改進了開發工作流程。
Flutter
框架主要圍繞窗口小部件(widgets
)構建。在 Flutter
中,窗口小部件不僅用于應用程序的視圖,還用于整個屏幕,甚至用于應用程序本身。
除了跨平臺的 iOS 和 Android 開發之外,學習 Flutter
還將為您開發Fuchsia
平臺提供一個良好的開端,該平臺目前是 Google 開發的實驗性操作系統。許多人認為它是未來 Android 的潛在替代品。
在本教程中,您將構建一個 Flutter
應用程序,該應用程序查詢 GitHub API,并在可滾動列表中顯示團隊成員信息:
幾乎 Flutter
應用程序的每個元素都是一個小部件。窗口小部件被設計為不可變的,因為使用不可變窗口小部件有助于保持應用程序 UI 輕量級。
您將使用兩種基本類型的小部件:
StatelessWidget
:無狀態,僅依賴于自己的配置信息的小部件,例如圖像視圖中的靜態圖像。StatefulWidget
:有狀態,需要維護動態信息的小部件,并通過與 State
對象交互來實現。無狀態和有狀態窗口小部件都在 Flutter
應用程序中重繪每一幀,不同之處在于有狀態窗口小部件將其配置委托給 State
對象。
現在將使用框架中可用的包進行 HTTP 網絡調用,并將生成的響應 JSON 解析為 Dart
對象。
Dart
應用程序是單線程的,但 Dart
支持使用 async / await
模式在其他線程上運行異步代碼以便不阻止 UI 線程。
import 'package:http/http.dart' as http; import 'dart:convert';_loadData() async { String dataURL = "https://api.github.com/orgs/raywenderlich/members"; http.Response response = await http.get(dataURL); setState(() { // json.decode 簡寫形式 final members = jsonDecode(response.body); for (var member in members) { _members.add(Member(member["login"], member["avatar_url"])); } }); }
ListView.separated( itemCount: _members.length, itemBuilder: (BuildContext context, int index) => _buildRow(index), separatorBuilder: (BuildContext context, int index) => Divider(), )
原文鏈接:https://www.raywenderlich.com/116-getting-started-with-flutter