首页 > 解决方案 > 我无法使用 Flutter 发出发布请求(注册)

问题描述

我想发出一个发布请求,但它似乎不起作用......我不知道是什么错误,但是当我点击提交按钮时没有任何反应,我不知道数据是否尚未发布...... .是我的发布方法有问题还是其他任何可能发生的错误......有人可以帮我解决这个问题或指导我以正确的方式发出发布请求。您的帮助将不胜感激。

我的代码

void registerUser() async {
    // if (_formKey.currentState.validate()) {
    setState(() {
      _loading = true;
    });
    String email = _emailController.text;
    String password = _passwordController.text;
    String name = _nameController.text;
    String username = _usernameController.text;
    String phone = _phoneController.text;
    String password_confirmation = _password_confirmationController.text;

    User user = await authentication.register(
        username, password, name, password_confirmation, phone, email);

    if (user != null) {
      setState(() {
        _loading = false;
      });
      Navigator.push(
          context, MaterialPageRoute(builder: (context) => MyWidget()));
      // Navigator.pushNamed(context, 'Mywidget');
    }
    {
      setState(() {
        _loading = false;
      });
    }
    // }
  }

我的按钮代码:

Container(
                                  child: RaisedButton(
                                    textColor: Colors.white,
                                    color: kPrimaryColor,
                                    child: Text("S'inscrire"),
                                    onPressed: () {
                                      if (_formKey.currentState.validate()) {
                                        registerUser();
                                      }
                                      /*  Navigator.push(
                                      context,
                                      MaterialPageRoute(
                                          builder: (context) => MyWidget()),
                                    );*/
                                      // Navigator.pushNamed(context, 'Mywidget');
                                    },
                                    shape: new RoundedRectangleBorder(
                                      borderRadius:
                                          new BorderRadius.circular(30.0),
                                    ),
                                  ),
                                  width: 250,
                                  padding: EdgeInsets.all(15),
                                )

身份验证.dart:

class Authentication {
  //String token;
  Future<User> register(String name, String password_confirmation, String email,
      String phone, String password, String username) async {
    // await checkInternet();
    Map<String, String> headers = {
      'Content-type': 'application/json',
      'Accept': 'application/json',
    };
    Map<String, String> body = {
      'name': name,
      'email': email,
      'phone': phone,
      'password': password,
      'password_confirmation': password_confirmation,
      'username': username,
    };
    inspect(body);
    inspect(headers);
    var response = await http.post(Uri.parse(ApiUtil.AUTH_REGISTER),
        headers: headers, body: jsonEncode(body));
    inspect(response);

    if (response.statusCode == 201) {
      var body = jsonDecode(response.body);
      var data = body['user'];
      User user = User.fromJson(data);
      return user;
    }
    return null;
  }

标签: apiflutterdart

解决方案


看来您不需要对正文进行编码,因为它已经是一个 json 映射。

var response = await http.post(Uri.parse(ApiUtil.AUTH_REGISTER),
        headers: headers, body: body);

暗示:

您可以使用 Flutter DevTools 或简单地打印每个步骤以查看发生了什么以及哪个步骤失败。


推荐阅读