введите описание изображения здесь Мой вызов API работает, когда все поля не пусты. Но я просто хочу обновить текстовые поля без обновления изображения. И когда я запускаю кнопку обновления. Он показывает: Необработанное исключение: NoSuchMethodError: Получатель 'path' был вызван для нуля. Получатель: ноль Пробный вызов: путь
Это мой POST в API_CODE_FOLDER
void updateData(
BuildContext context,
int id,
int userID,
String name,
String nric,
String dob,
File img,
String mobileNo,
int gender,
String nationality,
int race,
int religion,
String occupation,
String maritalStatus,
String deleteAt,
String createAt,
String updateAt,)async {
final SharedPreferences prefs = await SharedPreferences.getInstance();
final mimeTypeData =
lookupMimeType(img.path, headerBytes: [0xFF, 0xD8]).split('/');
final file = await http.MultipartFile.fromPath('nric_front_copy', img.path,
contentType: MediaType(mimeTypeData[0], mimeTypeData[1]));
refreshTokenApi(context);
print('UPDATE MOU');
accessToken = prefs.getString('access_token');
String myUrl = "$_url/personal_info";
var url = Uri.parse(myUrl);
var request = new http.MultipartRequest("POST", url);
request.headers['Accept'] = 'application/json';
request.headers['Authorization'] = 'Bearer $accessToken';
request.fields['id'] = id.toString();
request.fields['user_id'] = id.toString();
request.fields['name'] = name.trim();
request.fields['nric'] = nric.trim();
request.fields['date_of_birth'] = dob.trim();
request.files..add(file);
request.fields['mobile_no'] = mobileNo.trim();
request.fields['gender'] = gender.toString();
request.fields['nationality'] = nationality.trim();
request.fields['race_id'] = race.toString();
request.fields['religion_id'] = religion.toString();
request.fields['occupation'] = occupation.toString();
request.fields['marital_status'] = maritalStatus.toString();
request.fields['deleted_at'] = '';
request.fields['created_at'] = '';
request.fields['updated_at'] = '';
request.fields['_method'] = 'PATCH';
request.send().then((response){
print(response.statusCode);
print(response);
if (response.statusCode == 200) {
Navigator.pushReplacementNamed(context, '/Dashboard');
print("updated!");
} else if (response.statusCode != 201) {
print(response.statusCode);
}
});
}
Это мое обновление
void updateButton() async {
print('TAPPED Update Button');
final SharedPreferences prefs = await SharedPreferences.getInstance();
// IF id & user_id is not empty then UPDATE.
if (prefs.getInt('id') != null || prefs.getInt('user_id') != null) {
setState((){
_gender = genderCon.text.isEmpty ? 1 : int.parse(genderCon.text);
race = raceCon.text.isEmpty ? 2 : int.parse(raceCon.text);
religion = religionCon.text.isEmpty ? 3 : int.parse(religionCon.text);
_nric = icCon.text;
_dob = dobCon.text;
_name = nameCon.text;
print(nameCon.text);
print(nameCon.text.trim());
callApi.updateData(
context,
id,
userID,
_name,
_nric,
_dob,
_image,
phoneCon.text,
_gender,
nationality,
race,
religion,
occupation,
maritalStatus,
deleteAt,
createAt,
updateAt);
print('UPDATE');
});
}
}
Это моя функция получения изображения
void getImage() async {
var image = await ImagePicker.pickImage(
source: ImageSource.gallery, imageQuality: 100);
setState(() {
_image = image;
Navigator.of(context);
});
}