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("加載中..."),
          );
  }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章