import 'package:dio/dio.dart'; import 'package:logger/logger.dart'; import 'package:myapp/core/constants.dart' as Constants; import 'package:myapp/db/db_helper.dart'; import 'models/face.dart'; import 'models/photo.dart'; class FaceSearchManager { final _logger = Logger(); final _dio = Dio(); FaceSearchManager._privateConstructor(); static final FaceSearchManager instance = FaceSearchManager._privateConstructor(); Future> getFaces() { return _dio .get(Constants.ENDPOINT + "/faces", queryParameters: {"user": Constants.USER}) .then((response) => (response.data["faces"] as List) .map((face) => new Face.fromJson(face)) .toList()) .catchError(_onError); } Future> getFaceSearchResults(Face face) async { var futures = _dio.get( Constants.ENDPOINT + "/search/face/" + face.faceID.toString(), queryParameters: {"user": Constants.USER}).then((response) => (response .data["results"] as List) .map((result) => (DatabaseHelper.instance.getPhotoByPath(result)))); return Future.wait(await futures); } void _onError(error) { _logger.e(error); } }