searchImages method Null safety

  1. @override
FutureOr<Iterable<ImageModelDTO>> searchImages(
  1. {required String searchStr,
  2. required String token}
)
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));
}