// 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(); } }