title: json.decode() Unexpected end of input (at character 1)
body: <p>I am facing a anonymus closure error in flutter while signing in a user. It worked a few days before but now its not working, I dont no why. So please help and thanks in advance..Whenever i fill the details and tap on the signin button it throws the below error---</p>
  
  <pre><code>E/flutter ( 2914): [ERROR:flutter/shell/common/shell.cc(184)] Dart Error: Unhandled exception:
  E/flutter ( 2914): FormatException: Unexpected end of input (at character 1)
  E/flutter ( 2914): 
  E/flutter ( 2914): ^
  E/flutter ( 2914): 
  E/flutter ( 2914): #0      _ChunkedJsonParser.fail (dart:convert/runtime/libconvert_patch.dart:1358:5)
  E/flutter ( 2914): #1      _ChunkedJsonParser.close (dart:convert/runtime/libconvert_patch.dart:511:7)
  E/flutter ( 2914): #2      _parseJson (dart:convert/runtime/libconvert_patch.dart:30:10)
  E/flutter ( 2914): #3      JsonDecoder.convert (dart:convert/json.dart:540:36)
  E/flutter ( 2914): #4      JsonCodec.decode (dart:convert/json.dart:167:41)
  E/flutter ( 2914): #5      _SignInState._login.&lt;anonymous closure&gt; (package:restaurant_app/signin.dart:81:23)
  </code></pre>
  
  
  
  <pre><code>import 'dart:convert';
  
  import 'package:flutter/material.dart';
  import 'package:restaurant_app/globalVar.dart';
  import 'package:restaurant_app/homescreen.dart';
   import 'package:flutter_secure_storage/flutter_secure_storage.dart';
   import 'package:restaurant_app/signup.dart';
  import 'package:http/http.dart' as http;
  import 'package:flutter_html_view/html_parser.dart';
  
  class SignIn extends StatefulWidget {
   @override
  _SignInState createState() =&gt; _SignInState();
  }
  
  class _SignInState extends State&lt;SignIn&gt; with SingleTickerProviderStateMixin 
  {
  TabController controller;
  TextEditingController _email = new TextEditingController();
  TextEditingController _password = new TextEditingController();
  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;
  _email = new TextEditingController(text: "rajeshvishnani");
  _password = new TextEditingController(text: "Rajesh@MaaKiRasoi");
  }
  
  @override
  void dispose() {
  // TODO: implement dispose
  super.dispose();
  controller.dispose();
  setState(() {
    loading = false;
  });
  _email.dispose();
  _password.dispose();
  }
  
  final GlobalKey&lt;FormState&gt; _formKey = GlobalKey&lt;FormState&gt;();
  bool _autoValidate = false;
  
  Future _writer(String username, String password, String token) async {
  final storage = new FlutterSecureStorage();
  await storage.write(key: authTokenKeys, value: token);
  print(await storage.read(key: authTokenKeys));
  await storage.write(key: nameKeys, value: username);
  print(await storage.read(key: nameKeys));
  await storage.write(key: passwordKeys, value: password);
  }
  
    static final String authTokenKeys = 'auth_token';
  static final String nameKeys = 'username';
  static final String passwordKeys = 'password';
  
  _login(username, password) async {
  setState(() {
    loading = true;
  });
  
  var body = json.encode({
    "username": username,
    "password": password,
  });
  
  Map&lt;String, String&gt; headers = {
    'Content-type': 'application/json',
    'Accept': 'application/json',
  };
  
  await http
      .post("${GlobalVar.Ip}/wp-json/jwt-auth/v1/token",
          body: body, headers: headers)
      .then((response) {
    var body = json.decode(response.body);
  
    if (response.statusCode == 200) {
      // TODO: you need to store body['token'] to use in some authentication
      loading = false;
      _writer(_email.text, _password.text, body['token']);
      Navigator.pushReplacement(context,
          MaterialPageRoute(builder: (BuildContext ctx) =&gt; HomePage()));
    } else {
      // TODO: alert message
      final snackBar = SnackBar(
        content: Text(body['message']),
      );
      _scaffoldKey.currentState.showSnackBar(snackBar);
    }
    setState(() {
      loading = false;
    });
    });
  }
  
  @override
   Widget build(BuildContext context) {
  return Scaffold(
    key: _scaffoldKey,
    resizeToAvoidBottomPadding: false,
    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 / 30,
          ),
          Align(
            alignment: Alignment.topCenter,
            child: CircleAvatar(
              backgroundColor: Colors.grey,
              radius: 55.0,
              backgroundImage: AssetImage('images/logo.png'),
            ),
          ),
          SizedBox(
            height: MediaQuery.of(context).size.height / 30,
          ),
          Stack(
            alignment: Alignment.center,
            children: &lt;Widget&gt;[
              SizedBox(
                height: MediaQuery.of(context).size.height / 300,
                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 / 35,
          ),
          Align(
              alignment: Alignment.center,
              child: Text(
                "Welcome back!",
                style: TextStyle(
                  fontSize: 20.0,
                  color: Color(0xFFD1A155),
                ),
              )),
          SizedBox(
            height: MediaQuery.of(context).size.height / 30,
          ),
          Form(
            key: _formKey,
            autovalidate: _autoValidate,
            child: 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: TextFormField(
                      keyboardType: TextInputType.emailAddress,
                      //validator: _email.text.isEmpty?:null,
                      controller: _email,
  
                      decoration: InputDecoration(
                          border:
                              OutlineInputBorder(borderSide: BorderSide()),
                          prefixIcon: Icon(
                            Icons.email,
                            color: Color(0xFFD1A155),
                          ),
                          hintText: 'Email Address',
                          hintStyle: TextStyle(
                              color: Colors.black,
                              fontWeight: FontWeight.w400)),
                    ),
                  ),
                ),
                SizedBox(
                  height: MediaQuery.of(context).size.height / 45,
                ),
                Theme(
                  data: ThemeData(
                      primaryColor: Color(0xFFD1A155),
                      hintColor: Colors.black26),
                  child: Padding(
                    padding: const EdgeInsets.only(left: 15.0, right: 15.0),
                    child: TextFormField(
                      keyboardType: TextInputType.text,
                      obscureText: true,
                      controller: _password,
                    decoration: InputDecoration(
                          border:
                              OutlineInputBorder(borderSide: BorderSide()),
                          prefixIcon: Icon(
                            Icons.lock,
                            color: Color(0xFFD1A155),
                          ),
                          hintText: 'Password',
                          hintStyle: TextStyle(
                              color: Colors.black,
                              fontWeight: FontWeight.w400)),
                    ),
                  ),
                ),
                Padding(
                  padding: const EdgeInsets.only(right: 15.0, left: 10.0),
                  child: Row(
                    mainAxisAlignment: MainAxisAlignment.spaceBetween,
                    children: &lt;Widget&gt;[
                      Row(
                        children: &lt;Widget&gt;[
                          ActionChip(
                            onPressed: () {},
                            avatar: Checkbox(
                              value: false,
                              onChanged: (bool z) {
                                print(z);
                              },
                              activeColor: Color(0xFFD1A155),
                            ),
                            label: Text("Remember Me"),
                            backgroundColor: Colors.transparent,
                          ),
                        ],
                      ),
                      Text(
                        "Forgot Password?",
                        style: TextStyle(
                          color: Color(0xFFD1A155),
                        ),
                      ),
                    ],
                  ),
                ),
                Padding(
                  padding: const EdgeInsets.only(left: 15.0, right: 15.0),
                  child: InkWell(
                    onTap: () {
                      _login(_email.text, _password.text);
           //                        Navigator.push(
          //                            context,
      //                            MaterialPageRoute(
       //                                builder: (context) =&gt; HomePage()));
                    },
                    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(
                                "LOGIN",
                                style: TextStyle(
                                    color: Colors.white, fontSize: 18.0),
                              ),
                            ),
                          ),
                  ),
                )
              ],
            ),
          ),
          SizedBox(
            height: MediaQuery.of(context).size.height / 15,
          ),
          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 / 30,
          ),
          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 / 20,
          ),
          Align(
            alignment: Alignment.center,
            child: InkWell(
              onTap: () =&gt; Navigator.push(
                  context, MaterialPageRoute(builder: (context) =&gt; SignUp())),
              child: RichText(
                  text: TextSpan(
                      text: "Don't have an account?",
                      style: TextStyle(fontSize: 20.0, color: Colors.black87),
                      children: &lt;TextSpan&gt;[
                    TextSpan(
                        text: ' Sign up',
                        style: TextStyle(
                            color: Color(0xFFD1A155),
                            fontWeight: FontWeight.bold)),
                  ])),
            ),
          ),
          SizedBox(
            height: MediaQuery.of(context).size.height / 30,
          ),
        ],
      ),
    ),
    );
   }
  }
  </code></pre>