Flutter 网络请求

Flutter中第三方网络请求库http

https://github.com/zeke123/http

pubspec.yaml

dependencies:
  http: ^0.12.0+2
import 'package:http/http.dart' as http;

Flutter中Map与json字符串相互转换

    Map mapType = {"username": "王五", "age": 25};
    //Map转换为json字符串
    var stringType = json.encode(mapType);
    print(mapType is Map); // true
    print(stringType is String); // true
    print(stringType); //{"username":"王五","age":25}

    //json字符串转换为map
    String users = '{"username":"张三","age":25}';
    var user = json.decode(users);
    print(user is Map); //true
    print(user["username"]); //张三

get请求

//get 请求数据
  _getData() async {
    var apiUrl = "http://baidu.com";
    var resault = await http.get(apiUrl);
    if (resault.statusCode == 200) {
      //print(resault.body);
    } else {
      //print(resault.statusCode);
    }
  }

post请求

 //post 请求数据
  _postData() async {
    var apiUrl = "http://baidu.com";
    var result = await http
        .post(apiUrl, body: {"params1": "value1", "params2": "value2"});
    if (result.statusCode == 200) {
      //print(result.body);
    } else {
      //print(result.statusCode);
    }
  }

main.dart

import 'package:flutter/material.dart';
import 'dart:convert';
import 'package:http/http.dart' as http;

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        //标题栏
        appBar: AppBar(
          title: Text("网络请求"),
        ),
        //内容区域
        body: DatePickerPubPage(),
      ),
      //主题
      theme: ThemeData(primarySwatch: Colors.red),
    );
  }
}

class DatePickerPubPage extends StatefulWidget {
  @override
  _DatePickerPubPageState createState() => _DatePickerPubPageState();
}

class _DatePickerPubPageState extends State<DatePickerPubPage> {
  List _list = [];

  @override
  void initState() {
    // TODO: implement initState
    super.initState();

    this._initData();

    Map mapType = {"username": "王五", "age": 25};
    //Map转换为json字符串
    var stringType = json.encode(mapType);
    print(mapType is Map); // true
    print(stringType is String); // true
    print(stringType); //{"username":"王五","age":25}

    //json字符串转换为map
    String users = '{"username":"张三","age":25}';
    var user = json.decode(users);
    print(user is Map); //true
    print(user["username"]); //张三
  }

  _initData() async {
    var api = "http://a.itying.com/api/productlist";
    var resault = await http.get(api);
    if (resault.statusCode == 200) {
      //json字符串转换为map类型
      print(resault.body);
      setState(() {
        this._list = json.decode(resault.body)["result"];

        print(_list.length);
      });
    } else {
      print(resault.statusCode);
    }
  }

  //get 请求数据
  _getData() async {
    var apiUrl = "http://baidu.com";
    var resault = await http.get(apiUrl);
    if (resault.statusCode == 200) {
      //print(resault.body);
    } else {
      //print(resault.statusCode);
    }
  }

  //post 请求数据
  _postData() async {
    var apiUrl = "http://baidu.com";
    var result = await http
        .post(apiUrl, body: {"params1": "value1", "params2": "value2"});
    if (result.statusCode == 200) {
      //print(result.body);
    } else {
      //print(result.statusCode);
    }
  }

  @override
  Widget build(BuildContext context) {
    return this._list.length > 0
        ? ListView(
            children: this._list.map((value) {
              return ListTile(
                title: Text(value["title"]),
              );
            }).toList(),
          )
        : Center(
            child: Text("加载中..."),
          );
  }
}

 

发布了272 篇原创文章 · 获赞 68 · 访问量 40万+

猜你喜欢

转载自blog.csdn.net/u014005316/article/details/104278062