【发布时间】:2021-09-03 19:30:17
【问题描述】:
我正在做颤振项目。正如您在邮递员中看到的那样,我正在尝试创建发布请求。
我的问题在于“revision_type”键。它是整数值,但在应用程序中指的是 4 个值:
0 ==> videnge
1 ==> visite technique
2 ==> assurance véhicule
3 ==> autre
事实上,用户将设置一个字符串值 (DropdownMenuItem),而不是您在邮递员中看到的整数。
如何在 post 请求中同步字符串和整数值?
我的代码:
Future<String> setRevision(
String revision_type,
String revision_title,
String revision_date,
String revision_location,
String kilometrage_pour_vidange) async {
SharedPreferences localStorage = await SharedPreferences.getInstance();
String token = localStorage.getString('access_token');
await checkInternet();
Map<String, String> headers = {
'Content-type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer $token'
};
Map<String, String> body = {
'revision_type': revision_type,
'revision_title': revision_title,
'revision_date': revision_date,
'revision_location': revision_location,
'kilometrage_pour_vidange': kilometrage_pour_vidange,
};
try {
final response = await http.post(Uri.parse(ApiUtil.SET_REVISION),
headers: headers, body: jsonEncode(body));
final responseBody = jsonDecode(response.body);
print(responseBody);
var data = body['message'];
switch (response.statusCode) {
case 200:
Row(children: [
Expanded(
child: DropdownButtonFormField(
decoration: InputDecoration(
hoverColor: Colors.white,
//contentPadding: EdgeInsets.only(left: 10, right: 15, top: 15),
labelText: 'Type',
alignLabelWithHint: true,
labelStyle: TextStyle(
color: kPrimaryColor,
),
enabledBorder: UnderlineInputBorder(
borderSide: BorderSide(color: Colors.grey),
),
),
dropdownColor: Colors.white,
value: status,
items: <DropdownMenuItem>[
DropdownMenuItem(
value: 'videnge',
child: InkWell(
child: Text('videnge'),
hoverColor: Colors.indigo,
),
),
DropdownMenuItem(
value: 'visite technique',
child: Text('visite technique'),
),
DropdownMenuItem(
value: 'assurance véhicule',
child: Text('assurance véhicule'),
),
DropdownMenuItem(
value: 'autre',
child: Text('autre'),
),
],
onChanged: (value) {
setState(() {
status = value;
});
},
)),
]),
void setRevision() async {
if (_formKey.currentState.validate()) {
String kilometrage_pour_vidange = _KilometrageController.text;
String revision_type = status;
String revision_title = _eventController.text;
String revision_location = _EmplacementController.text;
String revision_date = _DateController.text;
// print(revision_type);
revisionApi
.setRevision(
revision_type,
revision_title,
revision_date,
revision_location,
kilometrage_pour_vidange,
)
.then((data) {
if (data != null) {
Navigator.pop(context);
Navigator.push(
context, MaterialPageRoute(builder: (context) => Revision()));
}
}).catchError((error) {
ScaffoldMessenger.of(context)
.showSnackBar(SnackBar(content: Text(error.toString())));
});
setState(() {});
}
}
【问题讨论】: