//Here is the mapper that converts the response from the endpoints to non nullable object (model) import 'package:itasmob/app/extension.dart'; import 'package:itasmob/data/response/responses.dart'; import 'package:itasmob/domain/model/model.dart'; extension DataResponseMapper on DataResposne? { Data toDomain(){ return Data( this?.author?.orEmpty() ?? EMPTY, this?.title?.orEmpty() ?? EMPTY, this?.description?.orEmpty() ?? EMPTY, this?.url?.orEmpty() ?? EMPTY, this?.urlToImage?.orEmpty() ?? EMPTY, this?.content?.orEmpty() ?? EMPTY, this?.publishedAt?.orEmpty() ?? EMPTY, ); } } extension NewsResponseMapper on NewsResponse?{ News toDomain(){ List mappedData = (this?.dataResposne.articles?.map((articles) => articles.toDomain()) ?? Iterable.empty()) .cast() .toList(); var data = NewsData(mappedData); return News(data); } }