searchImages method Null safety
override
Implementation
@override
FutureOr<Iterable<ImageModelDTO>> searchImages({
required String searchStr,
required String token,
}) async {
final numberOfResults = random.nextIntInRange(min: 0, max: ConstValues.numberOfImages);
// Dummy fetching delay emulation
await Future.delayed(
Duration(milliseconds: ConstValues.defaultEmulatedLatencyMillis * numberOfResults));
final Iterable<Map<String, dynamic>> searchImageModelDtos;
try {
// Create (randomly-bounded) dummy number of images
final dummyImageModels = Iterable<int>.generate(numberOfResults).map((final imageIndex) {
// Drawing from a normal distribution
final imageSide =
random.nextIntInRange(min: ConstValues.minImageSize, max: ConstValues.maxImageSize);
final imageUri = _imageUrlGenerator(imageSide: imageSide);
return ImageModelDTO(
imageIndex: imageIndex,
uri: imageUri,
// Custom dummy name for the image
imageName: Strings.current.imageNameSearch(searchStr, imageIndex + 1),
);
});
// Emulating serialization
searchImageModelDtos = dummyImageModels.map((final dummyModel) => dummyModel.toJson());
} on Exception catch (ex, stackTrace) {
_loggingService.handleException(ex, stackTrace);
return List.empty();
}
return searchImageModelDtos
.map((final emulatedModelSerialized) => ImageModelDTO.fromJson(emulatedModelSerialized));
}