Flutter圈子Flutter 案例学习Flutter中文社区

Flutter 案例学习之:网络请求

2018-09-16  本文已影响8人  与蟒唯舞

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-TimeAOT 编译来实现这一点。

Dart 的另一个独特方面是它也可以使用 Just-In-TimeJIT 编译。使用 JIT 编译通过热重新加载(hot reload)功能在开发期间刷新 UI 而无需全新构建,从而改进了开发工作流程。

Flutter 框架主要围绕窗口小部件(widgets)构建。在 Flutter 中,窗口小部件不仅用于应用程序的视图,还用于整个屏幕,甚至用于应用程序本身。

除了跨平台的 iOS 和 Android 开发之外,学习 Flutter 还将为您开发Fuchsia 平台提供一个良好的开端,该平台目前是 Google 开发的实验性操作系统。许多人认为它是未来 Android 的潜在替代品。

在本教程中,您将构建一个 Flutter 应用程序,该应用程序查询 GitHub API,并在可滚动列表中显示团队成员信息:

窗口小部件

几乎 Flutter 应用程序的每个元素都是一个小部件。窗口小部件被设计为不可变的,因为使用不可变窗口小部件有助于保持应用程序 UI 轻量级。

您将使用两种基本类型的小部件:

无状态和有状态窗口小部件都在 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

上一篇 下一篇

猜你喜欢

热点阅读