// lib/views/login_tablet_screen.dart import 'package:flutter/material.dart'; import 'package:tm_app/core/routes/app_routes.dart'; import '../../core/constants/assets.dart'; import '../../core/constants/strings.dart'; import '../../core/utils/size_config.dart'; import 'widgets/widgets.dart'; import '../../view_models/login_view_model.dart'; class LoginTabletScreen extends StatefulWidget { const LoginTabletScreen({super.key}); @override State createState() => _LoginTabletScreenState(); } class _LoginTabletScreenState extends State { late final LoginViewModel _viewModel; @override void initState() { super.initState(); _viewModel = LoginViewModel(); } @override void dispose() { _viewModel.dispose(); super.dispose(); } @override Widget build(BuildContext context) { SizeConfig.init(context); return Scaffold( backgroundColor: Colors.white, body: Center( child: SingleChildScrollView( padding: EdgeInsets.symmetric(horizontal: 24.0.w()), child: SizedBox( width: 120.0.w(), child: ListenableBuilder( listenable: _viewModel, builder: (context, _) { return Column( mainAxisSize: MainAxisSize.min, children: [ LoginLogo(width: 190.0.w(), height: 88.0.h()), SizedBox(height: 32.0.h()), const LoginTitle(), SizedBox(height: 32.0.h()), LoginTextField( controller: _viewModel.usernameController, focusNode: _viewModel.usernameFocus, label: AppStrings.usernameLabel, iconPath: AssetsManager.userIcon, fieldHeight: 60.0.h(), borderRedus: 4.0.w(), prefixIconPadding: 4.0.w(), ), SizedBox(height: 16.0.h()), LoginTextField( controller: _viewModel.passwordController, focusNode: _viewModel.passwordFocus, label: AppStrings.passwordLabel, iconPath: AssetsManager.passwordIcon, prefixIconPadding: 4.0.w(), isPassword: true, obscureText: _viewModel.obscurePassword, fieldHeight: 60.0.h(), onToggleVisibility: _viewModel.togglePasswordVisibility, borderRedus: 4.0.w(), ), SizedBox(height: 32.0.h()), BaseButton( isEnabled: _viewModel.isLoginEnabled, onPressed: _viewModel.isLoginEnabled ? () => HomeRouteData().go(context) : null, ), ], ); }, ), ), ), ), ); } }