import 'dart:convert'; import 'dart:developer'; import 'package:flutter/cupertino.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:http/http.dart' as http; import 'package:http/http.dart'; import 'package:test_sa/models/user.dart'; class ApiManager { ApiManager._(); Map get _headers => { 'Content-Type': 'application/json', if(user != null) 'Authorization': 'Bearer ${user.token}', }; static ApiManager instance = ApiManager._(); User user; Future get( String url, {Map headers,} ) async{ headers ??= {}; headers.addAll(_headers); Uri _url = Uri.parse(url); // print(_url); http.Response response = await http.get(_url,headers: headers); if(jsonDecode(response.body) is Map){ final message = jsonDecode(response.body)["message"]; if(message != null && message.toString().isNotEmpty){ Fluttertoast.showToast(msg: message ?? "",toastLength: Toast.LENGTH_LONG); } } return response; } Future post( String url, { Map headers, @required Map body, } ) async{ headers ??= {}; headers.addAll(_headers); Uri _url = Uri.parse(url); // print(_url); // print(headers); log(json.encode(body)); var request = http.Request('POST', _url); request.body = json.encode(body); request.headers.addAll(headers); http.StreamedResponse _streamedResponse = await request.send(); http.Response response = await http.Response.fromStream(_streamedResponse); // print(response.statusCode); // log(response.body); if(jsonDecode(response.body) is Map){ final message = jsonDecode(response.body)["message"]; if(message != null && message.toString().isNotEmpty){ Fluttertoast.showToast(msg: message ?? "",toastLength: Toast.LENGTH_LONG); } } return response; } Future put( String url, { Map headers, @required Map body, } ) async{ headers ??= {}; headers.addAll(_headers); Uri _url = Uri.parse(url); // print(_url); // print(headers); // log(json.encode(body)); var request = http.Request('PUT', _url); request.body = json.encode(body); request.headers.addAll(headers); http.StreamedResponse streamedResponse = await request.send(); http.Response response = await http.Response.fromStream(streamedResponse); // print(response.statusCode); // log(response.body); if(jsonDecode(response.body) is Map){ final message = jsonDecode(response.body)["message"]; if(message != null && message.toString().isNotEmpty){ Fluttertoast.showToast(msg: message ?? "",toastLength: Toast.LENGTH_LONG); } } return response; } Future multiPart( String url, { Map headers, @required Map body, @required List> files, }) async{ Map _headers = const {'Content-Type': 'multipart/form-data',}; headers ??= {}; headers.addAll(_headers); Uri _url = Uri.parse(url); // print(_url); // print(_headers); // print(json.encode(body)); var request = http.MultipartRequest('POST', _url); request.fields.addAll(body); request.headers.addAll(_headers); for (var element in files) { request.files.add(await element); } //request.files.addAll(_files); // print(request.files); http.StreamedResponse streamedResponse = await request.send(); http.Response response = await http.Response.fromStream(streamedResponse); // print(response.statusCode); // log(response.body); if(jsonDecode(response.body) is Map){ final message = jsonDecode(response.body)["message"]; if(message != null && message.toString().isNotEmpty){ Fluttertoast.showToast(msg: message ?? "",toastLength: Toast.LENGTH_LONG); } } return response; } }