43 lines
1.1 KiB
Dart
43 lines
1.1 KiB
Dart
// lib/view_models/login_view_model.dart
|
|
import 'package:flutter/material.dart';
|
|
|
|
class LoginViewModel with ChangeNotifier {
|
|
final TextEditingController usernameController = TextEditingController();
|
|
final TextEditingController passwordController = TextEditingController();
|
|
|
|
final FocusNode usernameFocus = FocusNode();
|
|
final FocusNode passwordFocus = FocusNode();
|
|
|
|
bool _obscurePassword = true;
|
|
|
|
LoginViewModel() {
|
|
usernameController.addListener(_onTextChanged);
|
|
passwordController.addListener(_onTextChanged);
|
|
usernameFocus.addListener(_onTextChanged);
|
|
passwordFocus.addListener(_onTextChanged);
|
|
}
|
|
|
|
bool get obscurePassword => _obscurePassword;
|
|
bool get isLoginEnabled =>
|
|
usernameController.text.isNotEmpty &&
|
|
passwordController.text.isNotEmpty;
|
|
|
|
void togglePasswordVisibility() {
|
|
_obscurePassword = !_obscurePassword;
|
|
notifyListeners();
|
|
}
|
|
|
|
void _onTextChanged() {
|
|
notifyListeners();
|
|
}
|
|
|
|
@override
|
|
void dispose() {
|
|
usernameController.dispose();
|
|
passwordController.dispose();
|
|
usernameFocus.dispose();
|
|
passwordFocus.dispose();
|
|
super.dispose();
|
|
}
|
|
}
|