首页 > 解决方案 > 使用 Multipart 请求作为 Http 正文参数获得成功的 API 响应后,如何导航到下一个 Material 页面?

问题描述

我相信response.statusCode == 200我的 Api 因为它的打印Uploaded!我怎样才能将我的 API 响应存储在一个变量(Lets say "jsonResponse")中,以便我可以将它传递给我的新 MaterialPage DieticianAfterDateSelectPage

错误:

    The method '[]' was called on null.
Receiver: null
Tried calling: []("Status")
The relevant error-causing widget was
MaterialApp
lib\main.dart:19

//

      Future<void> SaveCustomTestBooking() async {


var jsonResponse;
if (EncUserId.isNotEmpty) {
   var postUri = Uri.parse("http://mkklklklklktBooking");
  var request  = http.MultipartRequest('POST',postUri);
  request.fields['VisitDate'] = '_selectedDate';
  request.fields['EncUserId'] = 'EncUserId';

    request.files.add(new http.MultipartFile.fromBytes(
    "UserFile", File(image!.path).readAsBytesSync(),
    filename:"Image.jpg",
    contentType: MediaType('image', 'jpg')));

   request.send().then((response){
     if (response.statusCode == 200) {

       print("Uploaded!"); //From here.............
        Navigator.push(context, MaterialPageRoute(builder: (context) => DieticianAfterDateSelectPage(rresponse:DieticianEncBookingIdModel.fromJson(jsonResponse),)));
       
   } else {
    ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(content: Text("Somthing went wrong")));
    throw Exception("Faild to fetch");

   }
   }


   );}

我的变量image在方法调用后包含我的画廊图像。

    final ImagePicker _picker = ImagePicker();
  File? image;
  var fileContent;
  var fileContentBase64;

从图库中获取图像的功能

    void filePicker() async {
final File? selectedImage =
    await ImagePicker.pickImage(source: ImageSource.gallery);
print(selectedImage!.path);
setState(() {
  image = selectedImage;
  
   fileContent = image!.readAsBytesSync();
   fileContentBase64 = base64.encode(fileContent); 
});
}

标签: jsonflutterapidart

解决方案


目前还不清楚如何提供帮助。我可以看到您正在将值传递给DieticianAfterDateSelectPage,以及您的错误消息。但是您问的是如何将值存储在变量中!

您可能需要了解错误消息。您得到它是因为您[]在 null 上调用运算符。您需要检查这是如何发生的,并检查 main.dart 中的第 19 行,如错误消息中所示。


推荐阅读