Класс данных в Dart:
import 'package:validate/validate.dart';
class AuthUser {
final String email, token, username, bio, image;
AuthUser(this.email, this.token, this.username, this.bio, this.image) {
Validate.isEmail(this.email);
}
@override
String toString() {
return 'AuthUser{email: $email, token: $token, username: $username, bio: $bio, image: $image}';
}
}
, где Validate.isEmail
выдает ошибку, если не удается найти соответствие:
static void matchesPattern(String input, RegExp pattern,[String message = DEFAULT_MATCHES_PATTERN_EX]) {
if (pattern.hasMatch(input) == false) {
throw new ArgumentError(message);
}
}
static void isEmail(String input,[String message = DEFAULT_MATCHES_PATTERN_EX]) {
matchesPattern(input,new RegExp(PATTERN_EMAIL),message);
}
Теперь я хочу использовать элегантный способ для новогоэтот класс.При использовании Scala я могу использовать Try(new AuthUser(...))
и сопоставлять его с паттенами.
И в Dart сначала я попробовал RxDart,
void main() {
testWidgets('Counter increments smoke test', (WidgetTester tester) async {
Observable.just(AuthUser("email", "token", "username", "bio", "img"))
.doOnError((e, s) => print("oh no"))
.listen((e) => print(e.toString()));
});
}
Не работает, тест не пройден для ошибки (что означает, что RxDart вообще не распознает ошибки !!!)
И я хочу попробовать Future, также не удалось.
И я хочу использовать dartz, но я волнуюсь, потому что естьтолько один сопровождающий ...
Любой совет?