【发布时间】:2021-11-21 12:10:40
【问题描述】:
我是新来的颤振。我正在尝试了解flutter rest api。 当我尝试使用 fullter api(使用 http dart 包)发布数据时,它显示了这个错误。
我试图通过对我的代码进行一些更改来修复它,但我仍然无法修复它。这是我尝试执行的代码。
-
型号
import 'dart:convert'; DataModel dataModelFromJSON(String str) => DataModel.fromJson(jsonDecode(str)); String dataModelToJson(DataModel data) => json.encode(data.toJson()); class DataModel { DataModel( {required this.name, required this.job, required this.id, required this.createdAt}); String name; String job; String id; String createdAt; factory DataModel.fromJson(Map<String, dynamic> json) => DataModel( name: json['name'], job: json['job'], id: json['id'], createdAt: json['createdAt']); Map<String, dynamic> toJson() => {"name": name, "job": job, "id": id, "createdAt": createdAt}; } -
main.dart
import 'package:flutter/material.dart'; import 'package:http/http.dart' as http; import 'DataModel.dart'; void main() { runApp( MaterialApp( home: MyHomePage(), ), ); } class MyHomePage extends StatefulWidget { @override _MyHomePageState createState() => _MyHomePageState(); } Future<DataModel?> submitData(String name, String job) async { var response = await http.post( Uri.https('reqres.in', 'api/users'), body: {"name": name, "job": job}, ); var data = response.body; print(data); if (response.statusCode == 201) { String responseString = response.body; dataModelFromJSON(responseString); } else return null; } class _MyHomePageState extends State<MyHomePage> { late DataModel _dataModel; TextEditingController nameController = TextEditingController(); TextEditingController jobController = TextEditingController(); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Center( child: Text('HTTP Post'), ), ), body: Container( padding: EdgeInsets.all(20.0), child: Column( children: [ TextField( decoration: InputDecoration( border: OutlineInputBorder(), hintText: 'Name'), controller: nameController, ), SizedBox(height: 20.0), TextField( decoration: InputDecoration( border: OutlineInputBorder(), hintText: 'Job'), controller: jobController, ), ElevatedButton( onPressed: () async { String name = nameController.text; String job = jobController.text; DataModel? data = await submitData(name, job); setState(() { _dataModel = data!; }); }, child: Text("Submit"), ) ], ), ), ); } }
如果有人可以帮助我解决此问题,我将不胜感激。
【问题讨论】:
标签: flutter rest mobile flutter-dependencies