title: How to solve http error code 400 missing parameters in flutter?
body: <p>I have a signup page where i am making a http.post request to the server by passing the parameters email,username,password,firstname and lastname. I have tried everything but couldn't solve the problem. Whenever i tap on the signup button it says the following--
  "I/flutter ( 2914): 400
  I/flutter ( 2914): {"code":"rest_missing_callback_param","message":"Missing parameter(s): email, username, password","data":{"status":400,"params":["email","username","password"]}}"</p>
  
  <p>I have gone through other posts but they didnt solve my problem so please help.
  Thanks in advance.</p>
  
  <pre><code>import 'dart:convert';
  import 'dart:io';
  
  import 'package:flutter/material.dart';
  import 'package:http/http.dart' as http;
  import 'package:restaurant_app/globalVar.dart';
  import 'package:restaurant_app/homescreen.dart';
  
  class SignUp extends StatefulWidget {
   @override
   _SignUpState createState() =&gt; _SignUpState();
  }
  
  class _SignUpState extends State&lt;SignUp&gt; with SingleTickerProviderStateMixin 
   {
    TabController controller;
   TextEditingController _firstnameController;
   TextEditingController _lastnameController;
   TextEditingController _usernameController;
   TextEditingController _emailController;
   TextEditingController _passwordController;
   TextEditingController _rePasswordController;
  
   bool loading;
  
   final GlobalKey&lt;ScaffoldState&gt; _scaffoldKey = new GlobalKey&lt;ScaffoldState&gt; 
   ();
  
   @override
   void initState() {
    // TODO: implement initState
    super.initState();
    controller = new TabController(length: 2, vsync: this);
    loading = false;
    _firstnameController = new TextEditingController(text: "Vishal");
    _lastnameController = new TextEditingController(text: "Das");
    _usernameController = new TextEditingController(text: "vishaldas");
  _emailController = new TextEditingController(text: "vissudas@gmail.com");
  _passwordController = new TextEditingController(text: "Vishal@123");
  _rePasswordController = new TextEditingController(text: "Vishal@123");
  }
  
  @override
  void dispose() {
  // TODO: implement dispose
  super.dispose();
  controller.dispose();
  setState(() {
    loading = false;
  });
  
  _emailController.dispose();
  _usernameController.dispose();
  _passwordController.dispose();
  _firstnameController.dispose();
  _lastnameController.dispose();
  _rePasswordController.dispose();
  
  }
  
    //  static final String fullnameKey = 'fullname';
    //  static final String emailKey = 'email';
    //  static final String passwordkey = 'password';
  
  signUp(email, username, password, firstname, lastname) async {
  setState(() {
    loading = true;
  });
  
  var body = json.encode({
    "email": email,
    "username": username,
    "password": password,
    "firstname": firstname,
    "lastname": lastname,
  });
  
  String basicAuth =
      'Basic' + base64Encode(utf8.encode('$username:$password'));
  
  Map&lt;String, String&gt; headers = {
    HttpHeaders.AUTHORIZATION: basicAuth,
  };
  
  print(basicAuth);
  
  await http
      .post("${GlobalVar.url}wp-json/wc/v2/customers",
          body: body, headers: headers)
      .then((response) {
    var body = json.decode(response.body);
    print(response.statusCode);
    print(response.body);
    if (response.statusCode == 200) {
      loading = false;
      Navigator.pushReplacement(context,
          MaterialPageRoute(builder: (BuildContext ctx) =&gt; HomePage()));
    } else {
      final snackBar = SnackBar(content: Text(body['message']));
      _scaffoldKey.currentState.showSnackBar(snackBar);
    }
    setState(() {
      loading = false;
    });
  });
  }
  
  @override
  Widget build(BuildContext context) {
  return Scaffold(
    resizeToAvoidBottomPadding: false,
    key: _scaffoldKey,
    body: Container(
      decoration: BoxDecoration(
        image: DecorationImage(
          image: AssetImage('images/art.png'),
          fit: BoxFit.fill,
          colorFilter: ColorFilter.mode(
              Colors.white12.withOpacity(0.2), BlendMode.dstATop),
        ),
      ),
      child: ListView(
        shrinkWrap: true,
        physics: BouncingScrollPhysics(),
        children: &lt;Widget&gt;[
          SizedBox(
            height: MediaQuery.of(context).size.height / 35,
          ),
          Align(
            alignment: Alignment.topCenter,
            child: CircleAvatar(
              backgroundColor: Colors.grey,
              radius: 55.0,
              backgroundImage: AssetImage('images/logo.png'),
            ),
          ),
          SizedBox(
            height: MediaQuery.of(context).size.height / 40,
          ),
          Stack(
            alignment: Alignment.center,
            children: &lt;Widget&gt;[
              SizedBox(
                height: 2.0,
                child: new Center(
                  child: new Container(
                    height: 10.0,
                    color: Colors.black12,
                  ),
                ),
              ),
              Row(
                children: &lt;Widget&gt;[
                  SizedBox(
                    width: MediaQuery.of(context).size.width / 4,
                  ),
                  Chip(
                    label: Text(
                      "SIGN IN",
                      style: TextStyle(color: Colors.white, fontSize: 18.0),
                    ),
                    backgroundColor: Color(0xFFD1A155),
                  ),
                  SizedBox(
                    width: MediaQuery.of(context).size.width / 35,
                    child: Container(
                      width: MediaQuery.of(context).size.height / 12,
                      height: 2.0,
                      color: Colors.white,
                    ),
                  ),
                  Chip(
                    label: Text(
                      "SIGN UP",
                      style: TextStyle(color: Colors.white, fontSize: 18.0),
                    ),
                    backgroundColor: Colors.black87,
                  ),
                ],
              )
            ],
          ),
          SizedBox(
            height: MediaQuery.of(context).size.height / 30,
          ),
          Align(
              alignment: Alignment.center,
              child: Text(
                "Sign Up Maa ki Rasoi",
                style: TextStyle(
                  fontSize: 20.0,
                  color: Color(0xFFD1A155),
                ),
              )),
          SizedBox(
            height: MediaQuery.of(context).size.height / 30,
          ),
          Column(
            children: &lt;Widget&gt;[
              Theme(
                data: ThemeData(
                  hintColor: Colors.black26,
                  primaryColor: Color(0xFFD1A155),
                ),
                child: Padding(
                  padding: const EdgeInsets.only(left: 15.0, right: 15.0),
                  child: TextField(
                    controller: _firstnameController,
                    decoration: InputDecoration(
                        border: OutlineInputBorder(borderSide: BorderSide()),
                        prefixIcon: Icon(
                          Icons.person,
                          color: Color(0xFFD1A155),
                        ),
                        hintText: 'First name',
                        hintStyle: TextStyle(
                            color: Colors.black,
                            fontWeight: FontWeight.w400)),
                    keyboardType: TextInputType.text,
                  ),
                ),
              ),
              SizedBox(
                height: MediaQuery.of(context).size.height / 50,
              ),
              Theme(
                data: ThemeData(
                  hintColor: Colors.black26,
                  primaryColor: Color(0xFFD1A155),
                ),
                child: Padding(
                  padding: const EdgeInsets.only(left: 15.0, right: 15.0),
                  child: TextField(
                    controller: _lastnameController,
                    decoration: InputDecoration(
                        border: OutlineInputBorder(borderSide: BorderSide()),
                        prefixIcon: Icon(
                          Icons.person,
                          color: Color(0xFFD1A155),
                        ),
                        hintText: 'Last name',
                        hintStyle: TextStyle(
                            color: Colors.black,
                            fontWeight: FontWeight.w400)),
                    keyboardType: TextInputType.text,
                  ),
                ),
              ),
              SizedBox(
                height: MediaQuery.of(context).size.height / 50,
              ),
              Theme(
                data: ThemeData(
                    primaryColor: Color(0xFFD1A155),
                    hintColor: Colors.black26),
                child: Padding(
                  padding: const EdgeInsets.only(left: 15.0, right: 15.0),
                  child: TextField(
                    controller: _emailController,
                    decoration: InputDecoration(
                        border: OutlineInputBorder(borderSide: BorderSide()),
                        prefixIcon: Icon(
                          Icons.email,
                          color: Color(0xFFD1A155),
                        ),
                        hintText: 'Email Address',
                        hintStyle: TextStyle(
                            color: Colors.black,
                            fontWeight: FontWeight.w400)),
                    keyboardType: TextInputType.emailAddress,
                  ),
                ),
              ),
              SizedBox(
                height: MediaQuery.of(context).size.height / 50,
              ),
              Theme(
                data: ThemeData(
                  hintColor: Colors.black26,
                  primaryColor: Color(0xFFD1A155),
                ),
                child: Padding(
                  padding: const EdgeInsets.only(left: 15.0, right: 15.0),
                  child: TextField(
                    controller: _usernameController,
                    decoration: InputDecoration(
                        border: OutlineInputBorder(borderSide: BorderSide()),
                        prefixIcon: Icon(
                          Icons.supervised_user_circle,
                          color: Color(0xFFD1A155),
                        ),
                        hintText: 'Username',
                        hintStyle: TextStyle(
                            color: Colors.black,
                            fontWeight: FontWeight.w400)),
                    keyboardType: TextInputType.text,
                  ),
                ),
              ),
              SizedBox(
                height: MediaQuery.of(context).size.height / 50,
              ),
              Theme(
                data: ThemeData(
                  hintColor: Colors.black26,
                  primaryColor: Color(0xFFD1A155),
                ),
                child: Padding(
                  padding: const EdgeInsets.only(left: 15.0, right: 15.0),
                  child: TextField(
                    controller: _passwordController,
                    decoration: InputDecoration(
                        border: OutlineInputBorder(borderSide: BorderSide()),
                        prefixIcon: Icon(
                          Icons.lock,
                          color: Color(0xFFD1A155),
                        ),
                        hintText: 'Password',
                        hintStyle: TextStyle(
                            color: Colors.black,
                            fontWeight: FontWeight.w400)),
                    keyboardType: TextInputType.text,
                    obscureText: true,
                  ),
                ),
              ),
              SizedBox(
                height: MediaQuery.of(context).size.height / 50,
              ),
              Theme(
                data: ThemeData(
                    primaryColor: Color(0xFFD1A155),
                    hintColor: Colors.black26),
                child: Padding(
                  padding: const EdgeInsets.only(left: 15.0, right: 15.0),
                  child: TextField(
                    controller: _rePasswordController,
                    decoration: InputDecoration(
                        border: OutlineInputBorder(borderSide: BorderSide()),
                        prefixIcon: Icon(
                          Icons.lock,
                          color: Color(0xFFD1A155),
                        ),
                        hintText: 'Re - Password',
                        hintStyle: TextStyle(
                            color: Colors.black,
                            fontWeight: FontWeight.w400)),
                    keyboardType: TextInputType.text,
                    obscureText: true,
                  ),
                ),
              ),
              SizedBox(
                height: MediaQuery.of(context).size.height / 50,
              ),
              Padding(
                padding: const EdgeInsets.only(left: 15.0, right: 15.0),
                child: InkWell(
                  onTap: () {
                    print(_emailController.text);
                    print(_passwordController.text);
                    print(_usernameController.text);
                    signUp(
                      _emailController.text,
                      _usernameController.text,
                      _passwordController.text,
                      _firstnameController.text,
                      _lastnameController.text,
                    );
                  },
                  child: loading
                      ? CircularProgressIndicator()
                      : Container(
                          height: MediaQuery.of(context).size.height / 13,
                          //width: MediaQuery.of(context).size.height / 1.8,
                          decoration: BoxDecoration(
                            color: Color(0xFFD1A155),
                            borderRadius: BorderRadius.circular(5.0),
                          ),
                          child: Center(
                            child: Text(
                              "SIGN UP",
                              style: TextStyle(
                                  color: Colors.white, fontSize: 18.0),
                            ),
                          ),
                        ),
                ),
              )
            ],
          ),
          SizedBox(
            height: MediaQuery.of(context).size.height / 30,
          ),
          Stack(
            alignment: Alignment.center,
            children: &lt;Widget&gt;[
              SizedBox(
                height: 2.0,
                child: new Center(
                  child: new Container(
                    height: 10.0,
                    color: Colors.black12,
                  ),
                ),
              ),
              Container(
                height: MediaQuery.of(context).size.height / 18,
                width: MediaQuery.of(context).size.height / 11,
                decoration: BoxDecoration(
                    borderRadius: BorderRadius.circular(23.0),
                    color: Colors.white,
                    border: Border.all(color: Colors.black12)),
                child: Center(
                    child: Text(
                  "OR",
                  style: TextStyle(fontSize: 18.0),
                )),
              ),
            ],
          ),
          SizedBox(
            height: MediaQuery.of(context).size.height / 40,
          ),
          Padding(
            padding: const EdgeInsets.only(left: 15.0, right: 15.0),
            child: Row(
              children: &lt;Widget&gt;[
                Container(
                  height: MediaQuery.of(context).size.height / 13,
                  width: MediaQuery.of(context).size.width / 2.2,
                  decoration: BoxDecoration(
                      borderRadius: BorderRadius.circular(5.0),
                      color: Colors.white,
                      border: Border.all(color: Colors.black12)),
                  child: Row(
                    children: &lt;Widget&gt;[
                      SizedBox(
                        width: 18.0,
                      ),
                      Icon(Icons.tag_faces),
                      SizedBox(
                        width: 10.0,
                      ),
                      Text(
                        "Facebook",
                        style: TextStyle(fontSize: 22.0, color: Colors.blue),
                      ),
                    ],
                  ),
                ),
                SizedBox(
                  width: MediaQuery.of(context).size.width / 40,
                ),
                Container(
                  height: MediaQuery.of(context).size.height / 13,
                  width: MediaQuery.of(context).size.width / 2.3,
                  decoration: BoxDecoration(
                      borderRadius: BorderRadius.circular(5.0),
                      color: Colors.white,
                      border: Border.all(color: Colors.black12)),
                  child: Row(
                    children: &lt;Widget&gt;[
                      SizedBox(
                        width: 18.0,
                      ),
                      Icon(Icons.tag_faces),
                      SizedBox(
                        width: 10.0,
                      ),
                      Text(
                        "Google+",
                        style: TextStyle(fontSize: 22.0, color: Colors.red),
                      ),
                    ],
                  ),
                ),
              ],
            ),
          ),
          SizedBox(
            height: MediaQuery.of(context).size.height / 30,
          ),
          Align(
            alignment: Alignment.center,
            child: InkWell(
              onTap: () =&gt; Navigator.pop(context),
              child: RichText(
                  text: TextSpan(
                      text: "Already have an account?",
                      style: TextStyle(fontSize: 20.0, color: Colors.black87),
                      children: &lt;TextSpan&gt;[
                    TextSpan(
                        text: ' Log in',
                        style: TextStyle(
                            color: Color(0xFFD1A155),
                            fontWeight: FontWeight.bold)),
                  ])),
            ),
          ),
          SizedBox(
            height: MediaQuery.of(context).size.height / 40,
          ),
         ],
        ),
      ),
    );
   }
  }
  </code></pre>