added splashscreen, login and add hp number pages

This commit is contained in:
kicap
2023-07-15 05:08:31 +08:00
parent eff379e80e
commit 4c5ec4364d
30 changed files with 1674 additions and 111 deletions

View File

@ -0,0 +1,31 @@
import 'package:flutter/material.dart';
import 'package:stacked/stacked.dart';
import './input_informasi_diri_view_model.dart';
class InputInformasiDiriView extends StatelessWidget {
const InputInformasiDiriView({super.key});
@override
Widget build(BuildContext context) {
return ViewModelBuilder<InputInformasiDiriViewModel>.reactive(
viewModelBuilder: () => InputInformasiDiriViewModel(),
onViewModelReady: (InputInformasiDiriViewModel model) async {
await model.init();
},
builder: (
BuildContext context,
InputInformasiDiriViewModel model,
Widget? child,
) {
return const Scaffold(
body: Center(
child: Text(
'InputInformasiDiriView',
),
),
);
},
);
}
}

View File

@ -0,0 +1,5 @@
import 'package:reza_app/app/core/custom_base_view_model.dart';
class InputInformasiDiriViewModel extends CustomBaseViewModel {
Future<void> init() async {}
}

View File

@ -0,0 +1,96 @@
import 'package:flutter/material.dart';
import 'package:stacked/stacked.dart';
import 'package:validatorless/validatorless.dart';
import '../../../../app/themes/app_colors.dart';
import '../../../widgets/my_button.dart';
import '../../../widgets/my_textformfield.dart';
import './masukan_no_hp_view_model.dart';
class MasukanNoHpView extends StatelessWidget {
const MasukanNoHpView({super.key});
@override
Widget build(BuildContext context) {
return ViewModelBuilder<MasukanNoHpViewModel>.reactive(
viewModelBuilder: () => MasukanNoHpViewModel(),
onViewModelReady: (MasukanNoHpViewModel model) async {
await model.init();
},
builder: (
BuildContext context,
MasukanNoHpViewModel model,
Widget? child,
) {
return Scaffold(
appBar: AppBar(
title: const Text('PENDAFTARAN USER BARU',
style: TextStyle(
color: lightColor,
)),
backgroundColor: mainColor,
iconTheme: const IconThemeData(
color:
Colors.white), // Set the color of the back button to white
),
body: WillPopScope(
onWillPop: () async {
return model.backPressed;
},
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 25),
child: Center(
child: Form(
key: model.formKey,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Image.asset(
'assets/logo.png',
width: 100,
height: 100,
),
const SizedBox(height: 15),
const Text(
'Masukkan Nomor HP',
),
const SizedBox(height: 16),
MyTextFormField(
maxLength: 13,
hintText: 'No. HP',
keyboardType: TextInputType.phone,
controller: model.noHpController,
validator:
Validatorless.required('No. HP tidak boleh kosong'),
),
SizedBox(
width: MediaQuery.of(context).size.width * 0.5,
child: MyButton(
text: 'Selanjutnya',
onPressed: () {
// if noHpController length is less than 9, return
if (model.noHpController.text.length < 9) {
model.snackbarService.showSnackbar(
message: 'No. HP tidak boleh kurang dari 9');
return;
}
if (!model.formKey.currentState!.validate()) {
return;
}
model.log.i('Selanjutnya button pressed');
model.selanjutnya();
},
),
),
],
),
),
),
),
),
);
},
);
}
}

View File

@ -0,0 +1,26 @@
import 'package:flutter/material.dart';
import '../../../../app/app.locator.dart';
import '../../../../app/app.router.dart';
import '../../../../app/app.logger.dart';
import '../../../../app/core/custom_base_view_model.dart';
import '../../../../services/my_easyloading.dart';
class MasukanNoHpViewModel extends CustomBaseViewModel {
final log = getLogger('MasukanNoHpViewModel');
final _easyloading = locator<MyEasyLoading>();
TextEditingController noHpController = TextEditingController();
GlobalKey<FormState> formKey = GlobalKey<FormState>();
Future<void> init() async {}
selanjutnya() async {
_easyloading.customLoading("Menghantar Kode OTP \nke WhatsApp Anda");
backPressed = false;
await Future.delayed(const Duration(seconds: 3));
backPressed = true;
notifyListeners();
_easyloading.dismissLoading();
await navigationService.navigateToVerifikasiNoHpView();
}
}

View File

@ -0,0 +1,31 @@
import 'package:flutter/material.dart';
import 'package:stacked/stacked.dart';
import './verifikasi_no_hp_view_model.dart';
class VerifikasiNoHpView extends StatelessWidget {
const VerifikasiNoHpView({super.key});
@override
Widget build(BuildContext context) {
return ViewModelBuilder<VerifikasiNoHpViewModel>.reactive(
viewModelBuilder: () => VerifikasiNoHpViewModel(),
onViewModelReady: (VerifikasiNoHpViewModel model) async {
await model.init();
},
builder: (
BuildContext context,
VerifikasiNoHpViewModel model,
Widget? child,
) {
return const Scaffold(
body: Center(
child: Text(
'VerifikasiNoHpView',
),
),
);
},
);
}
}

View File

@ -0,0 +1,5 @@
import 'package:reza_app/app/core/custom_base_view_model.dart';
class VerifikasiNoHpViewModel extends CustomBaseViewModel {
Future<void> init() async {}
}