import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:tm_app/core/routes/app_routes.dart'; import 'package:tm_app/core/theme/colors.dart'; import '../../../core/constants/assets.dart'; import '../../../core/constants/strings.dart'; import '../../../core/utils/size_config.dart'; import '../../../view_models/auth_view_model.dart'; import '../widgets/widgets.dart'; class LoginTabletPage extends StatelessWidget { const LoginTabletPage({super.key}); @override Widget build(BuildContext context) { SizeConfig.init(context); return Scaffold( backgroundColor: AppColors.backgroundColor, body: Center( child: SingleChildScrollView( padding: EdgeInsets.symmetric(horizontal: 24.0.w()), child: SizedBox( width: 526, child: Consumer( builder: (context, viewModel, _) { 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()), if (viewModel.isLoading) const CircularProgressIndicator() else BaseButton( isEnabled: viewModel.isLoginEnabled, onPressed: viewModel.isLoginEnabled ? () async { await viewModel.login(); if (viewModel.loggedInUser != null) { HomeRouteData().go(context); } else if (viewModel.errorMessage != null) { ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text(viewModel.errorMessage!), ), ); } } : null, ), ], ); }, ), ), ), ), ); } }