Current File : /home/tradevaly/www/fresh/lib/provider/profile_provider.dart |
import 'dart:convert';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_grocery/data/model/response/base/api_response.dart';
import 'package:flutter_grocery/data/model/response/response_model.dart';
import 'package:flutter_grocery/data/model/response/userinfo_model.dart';
import 'package:flutter_grocery/data/repository/profile_repo.dart';
import 'package:flutter_grocery/helper/api_checker.dart';
import 'package:http/http.dart' as http;
import 'package:image_picker/image_picker.dart';
class ProfileProvider with ChangeNotifier {
final ProfileRepo profileRepo;
ProfileProvider({@required this.profileRepo});
UserInfoModel _userInfoModel;
UserInfoModel get userInfoModel => _userInfoModel;
Future<ResponseModel> getUserInfo(BuildContext context) async {
_isLoading = true;
ResponseModel _responseModel;
ApiResponse apiResponse = await profileRepo.getUserInfo();
if (apiResponse.response != null && apiResponse.response.statusCode == 200) {
_userInfoModel = UserInfoModel.fromJson(apiResponse.response.data);
_responseModel = ResponseModel(true, 'successful');
} else {
String _errorMessage;
if (apiResponse.error is String) {
_errorMessage = apiResponse.error.toString();
} else {
_errorMessage = apiResponse.error.errors[0].message;
}
print(_errorMessage);
_responseModel = ResponseModel(false, _errorMessage);
ApiChecker.checkApi(context, apiResponse);
}
_isLoading = false;
notifyListeners();
return _responseModel;
}
bool _isLoading = false;
bool get isLoading => _isLoading;
File _file;
PickedFile _data;
PickedFile get data => _data;
File get file => _file;
final picker = ImagePicker();
void choosePhoto() async {
final pickedFile = await picker.getImage(source: ImageSource.gallery, imageQuality: 50, maxHeight: 500, maxWidth: 500);
if (pickedFile != null) {
_file = File(pickedFile.path);
} else {
print('No image selected.');
}
notifyListeners();
}
void pickImage() async {
_data = await picker.getImage(source: ImageSource.gallery/*, maxHeight: 100, maxWidth: 100*/, imageQuality: 80);
notifyListeners();
}
Future<ResponseModel> updateUserInfo(UserInfoModel updateUserModel, String pass, File file, PickedFile data, String token) async {
_isLoading = true;
notifyListeners();
ResponseModel _responseModel;
http.StreamedResponse response = await profileRepo.updateProfile(updateUserModel, pass, file, data, token);
_isLoading = false;
if (response.statusCode == 200) {
Map map = jsonDecode(await response.stream.bytesToString());
String message = map["message"];
_userInfoModel = updateUserModel;
_responseModel = ResponseModel(true, message);
print(message);
} else {
_responseModel = ResponseModel(false, '${response.statusCode} ${response.reasonPhrase}');
print('${response.statusCode} ${response.reasonPhrase}');
}
notifyListeners();
return _responseModel;
}
}