美文网首页flutter
Flutter 网络编程

Flutter 网络编程

作者: iwakevin | 来源:发表于2018-12-12 17:02 被阅读66次

    Flutter 网络编程即是 Dart 的网络编程。

    基本使用

    下面是一个 get 请求的示例。

    import 'dart:convert';      // 用于 json 解析
    import 'dart:io';           // 用于 http
    
    getAsyncData() async {
        const url = 'https://app-api.yirimao.com/v1/activity/activity/newest';
        var httpClient = new HttpClient();
    
        try {
            var request = await httpClient.getUrl(Uri.parse(url));
            var response = await request.close();                         // 得到是 buffer 数据
            var jsonstr = await response.transform(utf8.decoder).join();  // 转换为 json
            Map<String, dynamic> data = json.decode(jsonstr);
            print(data['data']['activity']);                              // 像对象一个调用
        } catch (err) {
            print('error' + err.toString());
        }
    }
    

    json 解析完后返回一个 Map,单独使用会比较麻烦,建议是封装一个类结构。

    class ActivityNewest {
        Map<String, dynamic> _data;
        User(Map<String, dynamic> _data);
    
        static get data() {
            return this._data['data'];
        }
    }
    

    使用 http

    http 是一个第三方的网络请求库,并不是 Dart 自带的。因为封装的比较好,也是推荐使用它的。

    安装依赖:

    dependencies:
      http: ^0.11.3+16
    

    开始使用:

    import 'package:http/http.dart' as http;
    
    getAsyncDate() async {
        const url = 'https://app-api.yirimao.com/v1/activity/activity/newest';
        String jsonstr = (await http.post(url)).body;
        Map<String, dynamic> data = json.decode(jsonstr);
        print(data['data']['activity']);
    }
    

    下面是一个 post 请求的示例。

    import 'package:http/http.dart' as http;
    
    getAsyncDate() async {
        const url = 'https://app-api.yirimao.com/v1/activity/activity/newest';
        // post 请求 body 数据
        const data = {
            'name': 'abc',
            'id': 'abcasdhakdkdsadda',
        };
        String jsonstr = (await http.post(url, body: data)).body;
        Map<String, dynamic> data = json.decode(jsonstr);
        print(data['data']['activity']);
    }
    

    相关文章

      网友评论

        本文标题:Flutter 网络编程

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