Flutter 网络编程

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 data = json.decode(jsonstr);
        print(data['data']['activity']);                              // 像对象一个调用
    } catch (err) {
        print('error' + err.toString());
    }
}

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

class ActivityNewest {
    Map _data;
    User(Map _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 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 data = json.decode(jsonstr);
    print(data['data']['activity']);
}

你可能感兴趣的:(Flutter 网络编程)