【问题标题】:Flutter how to pass form data to apiFlutter如何将表单数据传递给api
【发布时间】:2021-11-15 07:43:51
【问题描述】:

我有一个表单可以从用户那里获取数据。目标是将表单数据作为对象传递给 Api。表格如下。

    Form(
                  key: _formKey,
                  child: Column(
                    children: [
     Seperator(),
                      TextField(
                        decoration: const InputDecoration(
                          hintText: 'Add a title',
                        ),
                      ),
                      Seperator(),
                      TextField(
                        decoration: const InputDecoration(
                          hintText: 'Add a description',
                        ),
                      ),
                      Seperator(),
    TextField(
                        decoration: const InputDecoration(
                          hintText: 'Add a Price',
                        ),
                      ),
                      Seperator(),
                      TextField(
                        decoration: const InputDecoration(
                          hintText: 'Select Unit',
                        ),
                      ),
Button(
                    isProcessing: isProcessing,
                    name: 'Create Post',
                    onPressed: () {
                      final formdata = _formKey.currentState!.save();
                      createpost(formdata); // Api Function
                    },
]

// Api Function
    createpost(AddPost formdata) async {
        try {
          final service = PostService();
          final response =
              await service.createpost(formdata);
        } catch (error) {
          setErrorMessage(error.toString());
        }

如何将表单数据作为对象传递给 API 函数?

【问题讨论】:

  • 你能分享你使用哪个客户端来做 api 的吗?
  • 并为其添加代码
  • 并添加将标头传递到您的发布请求的位置。如果您对其进行 jsonDecode 并将标头的类型指定为表单编码,那将解决您的问题。
  • @AsimJawad im 使用 dio 进行 api 调用
  • 参考我的回答 here 希望它对您的回答有所帮助 我已将数据发送到 API

标签: flutter flutter-http


【解决方案1】:

您可以在 Postman 中运行 API,并在您的 Flutter 应用中使用自动生成的代码。您还可以使用 link 将您的 curl 请求转换为邮递员请求,然后使用自动生成的代码

您也可以使用这个package 来传递表单数据。这是一个例子

var dio = Dio();
 var formData = FormData.fromMap({
 'name': 'wendux',
  'age': 25,
  'file': await MultipartFile.fromFile('./text.txt',filename: 
 'upload.txt')
 });
  var response = await dio.post('/info', data: formData);

【讨论】:

    猜你喜欢
    • 2020-02-02
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-19
    • 2013-01-26
    • 2020-01-21
    相关资源
    最近更新 更多