aman-kassa-flutter/lib/views/login/login_view.dart

99 lines
3.8 KiB
Dart

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<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();
@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<LoginViewModel>.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: <Widget>[
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: () {},
)
],
),
));
});
}
}