![](/img/trans.png)
[英]Converting object to an encodable object failed: Instance of 'Offset'
[英]Unhandled Exception: Converting object to an encodable object failed: Instance of 'XFile'
#这是我的 class 我叫 api
static Future<void> postHomework(String classId,String sectionId,String homeWorkTitle,String link,String homeworkDetail, List<XFile> homeworkImage,String submissionDate,BuildContext context) async{
String userData;
String token;
SharedPreferences prefs = await SharedPreferences.getInstance();
userData = prefs.getString("userData");
if(userData!=null){
token = json.decode(userData)['token'];
}else{
return;
}
const url = "my api goes here";
Map<String,dynamic> jsonData = {
"classid":classId,
"sectionid":sectionId,
"title":homeWorkTitle,
"content":homeworkDetail,
"submission_date":submissionDate,
"filename":homeworkImage,
"link":link
};
print(homeworkImage);
try{
EasyLoading.show(status: "posting homework");
final jsonString = json.encode(jsonData);
final response = await http.post(Uri.parse(url),body: jsonString,headers: {'Content-Type': 'multipart/form-data','Authorization': 'Bearer $token',},);
final responseData = json.decode(response.body);
if(response.statusCode==200){
print(responseData);
Navigator.of(context).pushNamed("Homework-section-subject-list");
EasyLoading.dismiss();
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
content: Padding(
padding: EdgeInsets.only(right: 100.w),
child: Text(
'Homework posted successfully',
maxLines: 2,
style: TextStyle(fontSize: 14.sp),),
),
duration: const Duration(seconds: 2),
backgroundColor: Colors.grey.shade700,
behavior: SnackBarBehavior.floating,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(20.r)
),
));
}
}catch(e){
rethrow;
}
}
#这样我从图库中挑选图像并将其存储在 List imageFileList = [];
final ImagePicker imagePicker = ImagePicker();
List<XFile> imageFileList = [];
void selectImages() async {
final XFile selectedImages = await imagePicker.pickImage(source: ImageSource.gallery);
if (selectedImages.path.isNotEmpty) {
imageFileList.add(selectedImages);
}
print("Image List Length:" + imageFileList.length.toString());
setState((){});
}
#这是我的帖子作业 controller
class HomeworkPostController extends GetxController{
var isLoading = true.obs;
Future<void> postHomework(String classId,String sectionId,String homeWorkTitle,String link,String homeworkDetail, List<XFile> homeworkImage,String submissionDate,BuildContext context) async{
try{
isLoading(true);
EasyLoading.show(status: "posting homework");
return await Services.postHomework(classId, sectionId, homeWorkTitle, link, homeworkDetail, homeworkImage, submissionDate, context);
}finally{
isLoading(false);
EasyLoading.dismiss();
}
}
}
#i 通过按键传递数据
onPressed: (){
if(_form.currentState.validate()) {
hP.postHomework(
classId,
sectionId,
titleController.text,
linkController.text,
detailController.text,
imageFileList,
submissionDateController.text,
context);
}
}
一切都很好所有数据正在传递接受图像部分需要帮助我收到错误说 E/flutter (7064): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] 未处理的异常:将 object 转换为可编码 object 失败:“XFile”实例
您无法通过json.encode
将image
转换为json
。 您将List<XFile> homeworkImage
传递给jsonData
中的"filename"
。 它不工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.