uploadSignatureService function

Future<Map<String, dynamic>> uploadSignatureService(
  1. BuildContext context,
  2. {required Uint8List image}
)

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;
}