Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- `````````````````````````````````````````````````````````````````````````````````````````````````````````
- value_validator.dart :
- ```````````````````````````````````````````````````````````````
- import 'package:dartz/dartz.dart';
- import 'package:statquest/domain/core/failures.dart';
- Either<ValueFailure<String>, String> validEmailAddress(String input) {
- const emailRegex =
- r"""^[a-zA-Z0-9.a-zA-Z0-9.!#$%&'*+-/=?^_`{|}~]+@[a-zA-Z0-9]+\.[a-zA-Z]+""";
- if (RegExp(emailRegex).hasMatch(input)) {
- return right(input);
- } else {
- return left(ValueFailure.invalidEmail(failedValue: input));
- }
- }
- Either<ValueFailure<String>, String> validatePassword(String input) {
- if (input.length >= 6) {
- return right(input);
- } else {
- return left(ValueFailure.shortPassword(failedValue: input));
- }
- }
- `````````````````````````````````````````````````````````````````````````````````````````````````````````
- For Value_equality : value_object.dart :
- ```````````````````````````````````````````````````````````````
- import 'package:dartz/dartz.dart';
- import 'package:flutter/foundation.dart';
- import 'package:freezed_annotation/freezed_annotation.dart';
- import 'package:statquest/domain/core/failures.dart';
- @immutable
- abstract class ValueObject<T> {
- const ValueObject();
- Either<ValueFailure<T>, T> get value;
- @override
- String toString() => 'Value(value: $value)';
- @override
- bool operator ==(Object o) {
- if (identical(this, o)) return true;
- return o is ValueObject && o.value == value;
- }
- @override
- int get hashCode => value.hashCode;
- }
- `````````````````````````````````````````````````````````````````````````````````````````````````````````
- for EmailAddress and : value_object.dart
- ````````````````````````````````````````````````
- import 'package:dartz/dartz.dart';
- import 'package:statquest/domain/core/failures.dart';
- import 'package:statquest/domain/core/value_objects.dart';
- import 'package:statquest/domain/core/value_validators.dart';
- class EmailAddress extends ValueObject<String> {
- final Either<ValueFailure<String>, String> value;
- bool isValid() => value.isRight();
- factory EmailAddress(String input) {
- assert(input != null);
- return EmailAddress._(
- validEmailAddress(input),
- );
- }
- EmailAddress._(this.value);
- }
- class Password extends ValueObject<String> {
- final Either<ValueFailure<String>, String> value;
- factory Password(String input) {
- assert(input != null);
- return Password._(
- validatePassword(input),
- );
- }
- Password._(this.value);
- }
- `````````````````````````````````````````````````````````````````````````````````````````````````````````
- Please if you know the answer the following question. Please reply it helps a lot.
- 01. How EmailAddress and Password class object use value_object class for checking the value equality?
- 02. Could you please explain the flow of email and password provided to constructor of EmailAddress and Password class and Value equality and value validator class.
- 03.Does my understanding is correct please give some comments : when we pass String to EmailAddress and Password class Constructor. It is passed to the factory EmailAddress constructor first then private constructor of EmailAddress class=> EmailAddress_.() and Password class => Password_.() and store passed string of factory EmailAddress as a new value object that contains validated email_id.
Advertisement
Add Comment
Please, Sign In to add comment