首页 > 解决方案 > 为什么 Flutter http POST 请求没有响应

问题描述

我想用以下代码使登录系统颤抖:

api/api.dart

import 'dart:convert';

import 'package:http/http.dart' as http;
import 'package:shared_preferences/shared_preferences.dart';

class CallApi {
  final String _url = 'http://10.0.2.2:8000/api/';

  postData(data, apiUrl) async {
    var fullUrl = _url + apiUrl + await _getToken();
    return await http.post(fullUrl,
        body: jsonEncode(data), headers: _setHeaders());
  }

  getData(apiUrl) async {
    var fullUrl = _url + apiUrl + await _getToken();
    return await http.get(fullUrl, headers: _setHeaders());
  }

  _setHeaders() => {
        'Content-type': 'application/json',
        'Accept': 'application/json',
      };

  _getToken() async {
    SharedPreferences localStorage = await SharedPreferences.getInstance();
    var token = localStorage.getString('token');
    return '?token=$token';
  }
}

login_screen.dart

void _login() async {
    var data = {
      'email': mailController.text,
      'password': passwordController.text
    };

    var res = await CallApi().postData(data, 'login');
    var body = json.decode(res.body);
    if (body['success']) {
      SharedPreferences localStorage = await SharedPreferences.getInstance();
      localStorage.setString('token', body['token']);
      localStorage.setString('user', json.encode(body['user']));
      Navigator.push(
          context, new MaterialPageRoute(builder: (context) => HomePage()));
    } else {
      _showMsg(body['message']);
    }
  }

问题是这行不通。并且在试图找到错误的位置后,我发现下面的代码没有返回任何东西

postData(data, apiUrl) async {
  ........
  return await http.post(fullUrl,
        body: jsonEncode(data), headers: _setHeaders());
}

不知道具体原因,请帮帮我

标签: flutterdart

解决方案


推荐阅读