uploadSignatureService function
Implementation
Future<Map<String, dynamic>> uploadSignatureService(
BuildContext context, {
required Uint8List image,
}) async {
final Box<MyAccountModel> userBox = Hive.box('user');
final bool internetStatus = await checkInternetConnection();
final Directory temporaryDirectory = await getTemporaryDirectory();
final File signature = await File(
'${temporaryDirectory.path}/signature.png',
).create();
signature.writeAsBytesSync(image);
if (!internetStatus) {
Transitions(
context: context,
child: const NoInternetPage(),
removeUntil: true,
);
return <String, dynamic>{
'no_network': internetStatus,
};
}
final http.MultipartRequest request = http.MultipartRequest(
'POST',
Uri.parse(
'${ServicesEnvironment.protocol}${ServicesEnvironment.authority}${ServicesEnvironment.unencodedPath}$_endPoint',
),
);
request.headers.addAll(
{
'Content-Type': 'application/form-data',
'Authorization': 'Bearer ${userBox.get('user')!.token}',
},
);
request.files.add(
http.MultipartFile(
'signature_file',
File(signature.path).readAsBytes().asStream(),
File(signature.path).lengthSync(),
filename: signature.path.split("/").last,
),
);
final http.StreamedResponse streamedResponse = await request.send();
final http.Response response =
await http.Response.fromStream(streamedResponse);
Map<String, dynamic> decodedResponse;
try {
decodedResponse = json.decode(response.body);
} catch (exception) {
return Future.error(GlobalMessagesEnvironment.genericError);
}
return decodedResponse;
}