first commit
This commit is contained in:
91
lib/ui/views/login/login_view.dart
Normal file
91
lib/ui/views/login/login_view.dart
Normal file
@ -0,0 +1,91 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:ont_app2/ui/widgets/my_button.dart';
|
||||
import 'package:stacked/stacked.dart';
|
||||
import 'package:validatorless/validatorless.dart';
|
||||
|
||||
import '../../widgets/my_textformfield.dart';
|
||||
import './login_view_model.dart';
|
||||
|
||||
class LoginView extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return ViewModelBuilder<LoginViewModel>.reactive(
|
||||
viewModelBuilder: () => LoginViewModel(),
|
||||
onViewModelReady: (LoginViewModel model) async {
|
||||
await model.init();
|
||||
},
|
||||
builder: (
|
||||
BuildContext context,
|
||||
LoginViewModel model,
|
||||
Widget? child,
|
||||
) {
|
||||
return Scaffold(
|
||||
body: Padding(
|
||||
padding: const EdgeInsets.all(20),
|
||||
child: Center(
|
||||
child: SingleChildScrollView(
|
||||
child: Form(
|
||||
key: model.formKey,
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
const Image(
|
||||
image: AssetImage("assets/logo1.png"),
|
||||
width: 200,
|
||||
height: 200,
|
||||
),
|
||||
const Text(
|
||||
"Silahkan Login",
|
||||
),
|
||||
const SizedBox(height: 20),
|
||||
MyTextFormField(
|
||||
controller: model.nomorInternetController,
|
||||
labelText: "Nomor Internet",
|
||||
hintText: "Masukkan Nomor Internet",
|
||||
prefixIcon: const Icon(
|
||||
Icons.phone,
|
||||
),
|
||||
validator: Validatorless.multiple(
|
||||
[
|
||||
Validatorless.required("Masukkan Nomor Internet"),
|
||||
Validatorless.min(
|
||||
12, "Nomor Internet harus 12 angka"),
|
||||
Validatorless.number(
|
||||
"Nomor Internet harus berupa angka"),
|
||||
],
|
||||
),
|
||||
keyboardType: TextInputType.number,
|
||||
maxLength: 12,
|
||||
),
|
||||
const SizedBox(height: 20),
|
||||
MyTextFormField(
|
||||
controller: model.passwordController,
|
||||
labelText: "Password",
|
||||
hintText: "Masukkan Password",
|
||||
obscureText: true,
|
||||
prefixIcon: const Icon(
|
||||
Icons.lock,
|
||||
),
|
||||
validator: Validatorless.required("Masukkan Password"),
|
||||
),
|
||||
const SizedBox(height: 15),
|
||||
MyButton(
|
||||
text: "Login",
|
||||
onPressed: () {
|
||||
// if (!model.formKey.currentState!.validate()) {
|
||||
// return;
|
||||
// }
|
||||
model.login();
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user