API загрузки файла Flutter Chopper выбросить NoSuchMethodError
Я настроил BLoC
+ Chopper
для моего проекта Fluter и всего API
работает нормально до настоящего времени. В настоящее время интеграцияFile
Загрузить API
и у меня возникла проблема с Chopper
сторона, и я не знаю, что это такое и как я могу это решить.
@Post(path: "FILE_UPLOAD_URL")
@multipart
Future<Response<ProfileResponse>> uploadUserProfilePic(
@Header("Authorization") String token,
@PartFile('file') List<int> file,
);
Вызов API:
await SharedPreferenceHelper.getToken().then(
(token) async {
final bytes = (await File(event.file.path).readAsBytes()).toList();
final file = http.MultipartFile.fromBytes('file', bytes);
profileResponse =
await Provider.of<ApiService>(context, listen: false)
.uploadUserProfilePic(token, bytes);
},
);
Это бросает NoSuchMethodError
исключение из этого метода и файла (object_patch.dart
),
@patch
@pragma("vm:entry-point", "call")
dynamic noSuchMethod(Invocation invocation) {
// TODO(regis): Remove temp constructor identifier 'withInvocation'.
throw new NoSuchMethodError.withInvocation(this, invocation);
}
2 ответа
Я изменил этот requestConverter между вызовами,
@override
Request convertRequest(Request request) {
if (!request.multipart) {
return super.convertRequest(
request.replace(
body: serializers.serializeWith(
serializers.serializerForType(request.body.runtimeType),
request.body,
),
),
);
} else {
return request;
}
}
List<bytes>
не сработало для меня, но File
путь выручит меня,
@Post(
path: URLS.API_UPLOAD_IMAGE,
headers: {"Content-Type": "multipart/formdata"},
)
@multipart
Future<Response> uploadUserProfilePic(
@Header("Authorization") String token,
@PartFile('file') String file,
);
Надеюсь, это кому-то поможет.
Это решение сработало для меня:
Вызов функции
await _apiService.uploadVendorPhoto(_profileImage!.path);
API
@Post(path: 'apiPath/uploadPhoto', headers: {"Content-Type": "multipart/formdata"})
@multipart
Future<Response> uploadPhoto(@PartFile('image') String image);