Вернуть объект Either из другого объекта Either в Dartz

У меня есть функция в Dart, в которой я хотел бы вернуть значение Either для распространения ошибки (слева) или объекта (справа). Эти данные зависят от другого значения Either в функции, похожей на это в Dart, но в настоящее время он возвращает null, даже если вход Either возвращает (правое) значение.

Future<Either<Failure, User>> getUser(String uid) async {
    Either<Failure, DocumentSnapshot> document;
    document = await _database.getDocumentById(uid);
    // _database.getDocument function returns a Either<Failure, Document> object

   //  But when I fold the value to propagate the failure or return an User, I get null as 
   //return
   document.fold((failure) => Left(failure), (document) => Right(User.fromJson(document.data))); 

  }

Функция User.fromJson была протестирована и работает хорошо, но я не могу вернуть объект Either

1 ответ

Dart неявно возвращает null если функция не имеет оператора возврата.

https://dart.dev/tools/diagnostic-messages

Поэтому простое добавление оператора возврата должно решить вашу проблему.

Другие вопросы по тегам