GitHub:https://github.com/happy-python/flutter_demos/tree/master/ghflutter
介绍
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
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
网友评论