login ui
This commit is contained in:
50
lib/screen/login_screen/login.dart
Normal file
50
lib/screen/login_screen/login.dart
Normal file
@@ -0,0 +1,50 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:westone_kurirapp/app/constant.dart';
|
||||
import 'package:westone_kurirapp/screen/login_screen/login_box.dart';
|
||||
|
||||
class LoginScreen extends HookConsumerWidget {
|
||||
const LoginScreen({super.key});
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
return Scaffold(
|
||||
resizeToAvoidBottomInset: true,
|
||||
body: ListView(
|
||||
children: [
|
||||
SizedBox(
|
||||
height: MediaQuery.of(context).size.height * 0.5,
|
||||
child: DecoratedBox(
|
||||
decoration: const BoxDecoration(
|
||||
image: DecorationImage(
|
||||
image: AssetImage(
|
||||
"lib/images/login.png",
|
||||
),
|
||||
scale: 10,
|
||||
fit: BoxFit.fill)),
|
||||
child: Container(
|
||||
padding: EdgeInsets.only(
|
||||
top: Constant.getActualY(context: context, y: 21),
|
||||
left: Constant.getActualX(context: context, x: 22),
|
||||
),
|
||||
alignment: Alignment.topLeft,
|
||||
child: Image(
|
||||
image: const AssetImage('lib/images/logo.png'),
|
||||
width: Constant.getActualX(context: context, x: 132),
|
||||
))),
|
||||
),
|
||||
Container(
|
||||
height: MediaQuery.of(context).size.height * 0.5,
|
||||
decoration: BoxDecoration(
|
||||
gradient: LinearGradient(
|
||||
colors: [Constant.primaryLighten, Colors.white],
|
||||
begin: Alignment.center,
|
||||
end: Alignment.topCenter)),
|
||||
child: const LoginBox(),
|
||||
)
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
85
lib/screen/login_screen/login_box.dart
Normal file
85
lib/screen/login_screen/login_box.dart
Normal file
@@ -0,0 +1,85 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:westone_kurirapp/app/constant.dart';
|
||||
import 'package:loading_animation_widget/loading_animation_widget.dart';
|
||||
import 'package:westone_kurirapp/widget/custom_button.dart';
|
||||
|
||||
class LoginBox extends HookConsumerWidget {
|
||||
const LoginBox({super.key});
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
final loading = useState(false);
|
||||
final obsecure = useState(true);
|
||||
final usernameController = useTextEditingController(text: "");
|
||||
final passwordController = useTextEditingController(text: "");
|
||||
return Container(
|
||||
padding: EdgeInsets.fromLTRB(
|
||||
Constant.getActualX(context: context, x: 36),
|
||||
Constant.getActualY(context: context, y: 50),
|
||||
Constant.getActualX(context: context, x: 36),
|
||||
Constant.getActualY(context: context, y: 10)),
|
||||
child: ListView(
|
||||
children: [
|
||||
Text(
|
||||
"Selamat Datang!",
|
||||
style: Constant.h2(context: context)
|
||||
.copyWith(fontWeight: FontWeight.bold),
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
Text(
|
||||
"Silahkan login untuk mulai bertugas",
|
||||
style: Constant.subtitle2(context: context)
|
||||
.copyWith(fontWeight: FontWeight.w400),
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
SizedBox(
|
||||
height: Constant.getActualY(context: context, y: 44),
|
||||
),
|
||||
TextField(
|
||||
controller: usernameController,
|
||||
decoration: InputDecoration(
|
||||
label: Text(
|
||||
"Username",
|
||||
style: Constant.subtitle2(context: context),
|
||||
),
|
||||
filled: true,
|
||||
fillColor: Colors.white,
|
||||
border: InputBorder.none),
|
||||
),
|
||||
SizedBox(
|
||||
height: Constant.getActualY(context: context, y: 20),
|
||||
),
|
||||
TextField(
|
||||
controller: passwordController,
|
||||
obscureText: obsecure.value,
|
||||
decoration: InputDecoration(
|
||||
label: Text("Password",
|
||||
style: Constant.subtitle2(context: context)),
|
||||
filled: true,
|
||||
fillColor: Colors.white,
|
||||
border: InputBorder.none),
|
||||
),
|
||||
SizedBox(
|
||||
height: Constant.getActualY(context: context, y: 30),
|
||||
),
|
||||
CustomButton(
|
||||
text: "LOGIN",
|
||||
type: ButtonType.primary,
|
||||
onPressed: () {
|
||||
// print("aldksld");
|
||||
loading.value = true;
|
||||
Timer(Duration(seconds: 3), () {
|
||||
loading.value = false;
|
||||
});
|
||||
},
|
||||
loading: loading.value,
|
||||
)
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user