简体   繁体   English

FormatException:输入意外结束(在字符 2 处)^ 在 flutter

[英]FormatException: Unexpected end of input (at character 2) ^ in flutter

I have a form with 6 fields.我有一个包含 6 个字段的表单。 I am trying to send data to server after the button is pressed.按下按钮后,我试图将数据发送到服务器。 But after pressing the button I got error: FormatException: Unexpected end of input (at character 2) ^ .但是按下按钮后出现错误: FormatException: Unexpected end of input (at character 2) ^ There are some number fields and some normal text fields.有一些数字字段和一些普通文本字段。 Do not understand why this error is occurring.不明白为什么会出现这个错误。 Please help.请帮忙。 Thanks in advance.提前致谢。 Here is my dart code:这是我的 dart 代码:

Future<SubmitData> userData(
  String uid,
  String saleAmount,
  String quantity,
  String rate,
  String brokerName,
  String partyName,
  String amountReceivable) async {
   Map<String, dynamic> map = {
   'uid': uid,
   'saleAmount': saleAmount,
   'quantity': quantity,
   'rate': rate,
   'brokerName': brokerName,
   'partyName': partyName,
   'amountReceivable': amountReceivable
 };

 final http.Response response = await http.post(
  'my php page',
   headers: <String, String>{
   'Content-Type': 'application/json; charset=UTF-8',
  },
  body: jsonEncode(map),
 );

 if (response.statusCode == 201 || response.statusCode == 200) {
  return SubmitData.fromJson(json.decode(response.body));
 } else {
  throw Exception('Failed to submit.');
 }
}

   class SubmitData {
    final String type;

    SubmitData({this.type});

    factory SubmitData.fromJson(Map<String, dynamic> json) {
    return SubmitData(type: json['type']);
  }
  }

  class UserForm extends StatefulWidget {
   @override
   State<StatefulWidget> createState() {
   return _UserForm();
  } 
 }

class _UserForm extends State<UserForm> {
 final _formKey = GlobalKey<FormState>();
 final uid = TextEditingController();
 final myController = TextEditingController();
 final myController2 = TextEditingController();
 final myController3 = TextEditingController();
 final myController4 = TextEditingController();
 final myController5 = TextEditingController();
 final myController6 = TextEditingController();

 @override
 void dispose() {
   // Clean up the controller when the widget is disposed.
   uid.dispose();
   myController.dispose();
   myController2.dispose();
   myController3.dispose();
   myController4.dispose();
   myController5.dispose();
   myController6.dispose();
   super.dispose();
 }

 Future<SubmitData> _futureSubmitData;
 @override
 Widget build(BuildContext context) {
   return Form(
    key: _formKey,
    child: (_futureSubmitData == null)
      ? Column(
          crossAxisAlignment: CrossAxisAlignment.center,
          children: <Widget>[
            Visibility(
              visible: false,
              child: TextFormField(
                controller: uid,
                initialValue: '1',
              ),
            ),
            TextFormField(
              controller: myController,
              keyboardType: TextInputType.numberWithOptions(decimal: true),
              decoration:
                  InputDecoration(hintText: 'Sale amount as per party'),
              validator: (value) {
                if (value.isEmpty) {
                  return 'Please enter amount.';
                }
                return null;
              },
            ),
            TextFormField(
              controller: myController2,
              keyboardType: TextInputType.number,
              decoration: InputDecoration(hintText: 'Item quantity'),
              validator: (value) {
                if (value.isEmpty) {
                  return 'Please enter quantity.';
                }
                return null;
              },
            ),
            TextFormField(
              controller: myController3,
              keyboardType: TextInputType.numberWithOptions(decimal: true),
              decoration: InputDecoration(hintText: 'Rate'),
              validator: (value) {
                if (value.isEmpty) {
                  return 'Please enter rate.';
                }
                return null;
              },
            ),
            TextFormField(
              controller: myController4,
              decoration: InputDecoration(hintText: 'Broker name'),
              validator: (value) {
                if (value.isEmpty) {
                  return 'Please enter broker name.';
                }
                return null;
              },
            ),
            TextFormField(
              controller: myController5,
              decoration: InputDecoration(hintText: 'Party name'),
              validator: (value) {
                if (value.isEmpty) {
                  return 'Please enter party name.';
                }
                return null;
              },
            ),
            TextFormField(
              controller: myController6,
              keyboardType: TextInputType.numberWithOptions(decimal: true),
              decoration: InputDecoration(
                  hintText: 'Amount receivable as per party'),
              validator: (value) {
                if (value.isEmpty) {
                  return 'Please enter amount.';
                }
                return null;
              },
            ),
            Container(
              margin: EdgeInsets.all(10.0),
              child: RaisedButton(
                color: Colors.purple[400],
                textColor: Colors.white,
                onPressed: () {
                  if (_formKey.currentState.validate()) {
                    setState(() {
                      _futureSubmitData = userData(
                          uid.text,
                          myController.text,
                          myController2.text,
                          myController3.text,
                          myController4.text,
                          myController5.text,
                          myController6.text);
                    });
                  }
                },
                child: Text('Submit', style: TextStyle(fontSize: 18.0)),
              ),
            ),
          ],
        )
      : FutureBuilder<SubmitData>(
          future: _futureSubmitData,
          builder: (context, snapshot) {
            if (snapshot.hasData) {
              if (snapshot.data.type == '1') {
                showDialog(
                  context: context,
                  builder: (context) {
                    return AlertDialog(
                      content: Text('Data submitted successfully.'),
                    );
                  },
                );
                return Text('.');
              } else {
                showDialog(
                  context: context,
                  builder: (context) {
                    return AlertDialog(
                      content: Text(
                          'Data not submitted. You have already submitted for today.'),
                    );
                  },
                );
                return Text('.');
              }
            } else if (snapshot.hasError) {
              return Text("${snapshot.error}");
            }
            return Center(child: CircularProgressIndicator());
          },
        ),
     );
    }
  }

Found a solution for this.为此找到了解决方案。 The value was not retrieved from未从中检索值

Visibility(
 visible: false,
 child: TextFormField(
  controller: uid,
  initialValue: '1'
 ),
)

So value of String uid was null and that's why the error occurred.所以 String uid 的值是 null,这就是错误发生的原因。

I had to remove initialValue: '1' and replaced我不得不删除 initialValue: '1' 并更换

 final uid = TextEditingController();

with

 final uid = TextEditingController(text: "1");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 I/flutter:FormatException:输入意外结束(在字符 1 处) - I/flutter : FormatException: Unexpected end of input (at character 1) FormatException: 意外的输入结束(在字符 1 处) - FormatException: Unexpected end of input (at character 1) FormatException:输入意外结束(在字符 1 处)^ - FormatException: Unexpected end of input (at character 1) ^ Flutter OperationException(linkException: ResponseFormatException(originalException: FormatException: 输入意外结束(在字符 1 处) - Flutter OperationException(linkException: ResponseFormatException(originalException: FormatException: Unexpected end of input (at character 1) FormatException:OSM map 的输入意外结束(在字符 1 处) - FormatException: Unexpected end of input (at character 1) with OSM map 未处理的异常:FormatException:意外的输入结束(在字符 1) - Unhandled Exception: FormatException: Unexpected end of input (at character 1) 未处理的异常:FormatException:输入意外结束(在字符 2 处) - Unhandled Exception: FormatException: Unexpected end of input (at character 2) ObjectBox 失败:“FormatException:输入意外结束(在字符 1 处)” - ObjectBox Failure: "FormatException: Unexpected end of input (at character 1)" 未处理的异常:FormatException:flutter(在 shared_preferences 中)的输入意外结束(在字符 1) - Unhandled Exception: FormatException: Unexpected end of input (at character 1) in flutter (in shared_preferences) Flutter FormatException:意外字符(字符 1) - Flutter FormatException: Unexpected character (at character 1)
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM