This repository was archived by the owner on Apr 12, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapi_image.dart
More file actions
58 lines (53 loc) · 1.94 KB
/
api_image.dart
File metadata and controls
58 lines (53 loc) · 1.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
// ignore: avoid_web_libraries_in_flutter
// ignore: depend_on_referenced_packages
// ignore_for_file: use_build_context_synchronously
import 'dart:convert';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:my_app/API/api_login.dart';
import 'package:my_app/Providers/user_provider.dart';
import 'package:http/http.dart' as http;
import 'package:my_app/models/user_model.dart';
import 'package:my_app/utils/constant.dart';
import 'package:my_app/utils/snackbar.dart';
import 'package:provider/provider.dart';
import 'package:http_parser/http_parser.dart';
class Avatar {
Future<ImageModel?> postImage({
required BuildContext context,
File? image,
}) async {
try {
var userProvider = Provider.of<UserProvider>(context, listen: false);
String accessToken = userProvider.user.accessToken;
if (accessToken.isEmpty) {
final newAccessToken = await AuthLogin.getAccessToken();
accessToken = newAccessToken!;
}
var request = http.MultipartRequest('POST', Uri.parse('${uri}images'));
request.headers['Content-Type'] = 'multipart/form-data';
request.headers['Authorization'] = 'Bearer $accessToken';
String fileType = image!.path.split('.').last.toLowerCase();
var validExtensions = ['.jpeg', '.jpg', '.png', '.gif', '.webp'];
if (!validExtensions.contains('.$fileType')) {
return null;
}
request.files.add(await http.MultipartFile.fromPath(
'image',
image.path,
contentType: MediaType('image', fileType),
));
var response = await request.send();
if (response.statusCode == 201) {
var responseBody = await response.stream.bytesToString();
Map<String, dynamic> responseMap = json.decode(responseBody);
return ImageModel.fromMap(responseMap);
} else {
return null;
}
} catch (e) {
showSnackBarError(context, 'loi o trong file nay');
return null;
}
}
}