Flutter 案例学习之:网络请求

作者: 与蟒唯舞 | 来源:发表于2018-09-16 19:35 被阅读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 轻量级。

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

    • 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

    相关文章

      网友评论

        本文标题:Flutter 案例学习之:网络请求

        本文链接:https://www.haomeiwen.com/subject/ercwgftx.html