library login_view; import 'package:aman_kassa_flutter/shared/app_colors.dart'; import 'package:aman_kassa_flutter/shared/ui_helpers.dart'; import 'package:aman_kassa_flutter/widgets/fields/busy_button.dart'; import 'package:aman_kassa_flutter/widgets/fields/input_field.dart'; import 'package:aman_kassa_flutter/widgets/fields/text_link.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:stacked/stacked.dart'; import 'login_view_model.dart'; class LoginView extends StatelessWidget { final emailController = TextEditingController(text: 'test@kkm-kassa.kz'); final passwordController = TextEditingController(text: 'qwe123'); final FocusNode passwordNode = new FocusNode(); final GlobalKey _scaffoldKey = new GlobalKey(); @override Widget build(BuildContext context) { login(LoginViewModel viewModel) async { String message = await viewModel.login( email: emailController.text.trim(), password: passwordController.text); if (message != null) { _scaffoldKey.currentState.showSnackBar(new SnackBar( content: new Text( message, style: GoogleFonts.lato(), ))); } } //LoginViewModel viewModel = LoginViewModel(); return ViewModelBuilder.reactive( viewModelBuilder: () => LoginViewModel( authenticationService: Provider.of(context), navigationService: Provider.of(context)), onModelReady: (viewModel) { // Do something once your viewModel is initialized }, builder: (context, viewModel, child) { return Scaffold( key: _scaffoldKey, backgroundColor: fillColor, body: Padding( padding: const EdgeInsets.symmetric(horizontal: 50), child: Column( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ SizedBox( height: 150, child: Image.asset('assets/images/logo.png'), //child: FlutterLogo(size: 120,), ), InputField( placeholder: 'Электронная почта', controller: emailController, textInputType: TextInputType.emailAddress, nextFocusNode: passwordNode, additionalNote: viewModel.messageEmail, ), verticalSpaceSmall, InputField( placeholder: 'Пароль', password: true, controller: passwordController, fieldFocusNode: passwordNode, additionalNote: viewModel.messagePassword, enterPressed: () => login(viewModel), ), verticalSpaceMedium, Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.end, children: [ BusyButton( title: 'Войти', busy: viewModel.busy, onPressed: () => login(viewModel), ) ], ), verticalSpaceLarge, TextLink( 'Регистрация', onPressed: () {}, ) ], ), )); }); } }