50 lines
1011 B
Dart
50 lines
1011 B
Dart
import 'package:flutter/widgets.dart';
|
|
|
|
sealed class AuthenticationState {
|
|
const AuthenticationState();
|
|
bool authenticated();
|
|
}
|
|
|
|
class Unauthenticated extends AuthenticationState {
|
|
@override
|
|
bool authenticated() {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
class Authenticated extends AuthenticationState {
|
|
final String token;
|
|
final String username;
|
|
const Authenticated(this.token, this.username);
|
|
|
|
@override
|
|
bool authenticated() {
|
|
return true;
|
|
}
|
|
}
|
|
|
|
class AuthenticationModel extends ChangeNotifier {
|
|
AuthenticationState _state = Unauthenticated();
|
|
|
|
AuthenticationState get state => _state;
|
|
|
|
set state(AuthenticationState newState) {
|
|
_state = newState;
|
|
notifyListeners();
|
|
}
|
|
}
|
|
|
|
String? usernameValidator(String? value) {
|
|
if (value == null || value.trim().length < 3) {
|
|
return 'Please enter a valid username.';
|
|
}
|
|
return null;
|
|
}
|
|
|
|
String? passwordValidator(String? value) {
|
|
if (value == null || value.length < 8) {
|
|
return 'Please enter a valid password.';
|
|
}
|
|
return null;
|
|
}
|