diff --git a/lib/pages/login_page.dart b/lib/pages/login_page.dart index 682dc17..9fbf443 100644 --- a/lib/pages/login_page.dart +++ b/lib/pages/login_page.dart @@ -14,20 +14,29 @@ class LoginPage extends StatefulWidget { } class _LoginPageState extends State { - // final List _ =; - // ["Cluj-Napoca", "Bucuresti", "Timisoara", "Brasov", "Constanta"]; - final _passwordController = TextEditingController(); final _approver = "ARCH. KHASHAYAR L. TOGHYANI"; + late ValueNotifier passwordNotifier; + + @override + void initState() { + super.initState(); + passwordNotifier = ValueNotifier(_passwordController.text); + _passwordController.addListener(() { + passwordNotifier.value = _passwordController.text; + }); + } void _login() { - // Add your login logic here - print("Login button clicked"); + debugPrint("Login button clicked"); } + void _ignoreButton() {} + @override void dispose() { _passwordController.dispose(); + passwordNotifier.dispose(); super.dispose(); } @@ -54,7 +63,7 @@ class _LoginPageState extends State { children: [ const Gap(88), const ImageWidget(imagePath: 'assets/logo.png', size: 100, measureByHeight: true), - const Gap(50), + const Gap(58), BoxWidget( title: 'Login', content: Column( @@ -63,12 +72,21 @@ class _LoginPageState extends State { const TextWidget(text: 'Name', bold: true, size: 16), const Gap(8), TextWidget(text: _approver, bold: false, size: 16), - const Gap(8), + const Gap(16), const TextWidget(text: 'Password', bold: true, size: 16), const Gap(8), - InputWidget(controller: _passwordController, placeholder: 'placeholder'), - const Gap(16), - ButtonWidget(text: 'Login', onPressed: _login), + InputWidget(controller: _passwordController, password: true), + const Gap(24), + ValueListenableBuilder( + valueListenable: passwordNotifier, + builder: (context, password, child) { + return ButtonWidget( + text: password.isNotEmpty ? 'Login' : 'Required password', + onPressed: password.isNotEmpty ? _login : _ignoreButton, + disabled: password.isEmpty, + ); + }, + ), ], ), ), diff --git a/lib/pages/validate_page.dart b/lib/pages/validate_page.dart index 3f58f21..d1eca99 100644 --- a/lib/pages/validate_page.dart +++ b/lib/pages/validate_page.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:gap/gap.dart'; import 'package:mobile_scanner/mobile_scanner.dart'; import 'package:ocbo_esign_validator/widgets/text_widget.dart'; @@ -41,89 +42,41 @@ class _BarcodeScannerScreenState extends State { ), ), child: Center( - child: Column( - children: [ - Expanded( - flex: 3, - child: MobileScanner( - onDetect: (BarcodeCapture capture) { - final List barcodes = capture.barcodes; - if (barcodes.isNotEmpty && barcodes.first.rawValue != null) { - setState(() { - barcodeResult = barcodes.first.rawValue!; - }); - } - }, + child: Padding( + padding: const EdgeInsets.only(top: 64, left: 16, right: 16), + child: Column( + children: [ + Expanded( + flex: 2, + child: ClipRRect( + borderRadius: BorderRadius.circular(20), // Adjust the radius as needed + child: MobileScanner( + fit: BoxFit.cover, + onDetect: (BarcodeCapture capture) { + final List barcodes = capture.barcodes; + if (barcodes.isNotEmpty && barcodes.first.rawValue != null) { + setState(() { + barcodeResult = barcodes.first.rawValue!; + }); + } + }, + ), + ), ), - ), - Expanded( - flex: 1, - child: Center( - child: Center(child: TextWidget(text: barcodeResult, bold: false, size: 18)), + Expanded( + flex: 2, + child: Column( + children: [ + Gap(20), + TextWidget(text: 'Scan OCBO e-Sign QR', size: 20, bold: true), + ], + ), ), - ), - ], + ], + ), ), ), ), ); } } - -// class ValidatePage extends StatefulWidget { -// const ValidatePage({super.key}); - -// @override -// State createState() => _ValidatePageState(); -// } - -// class _ValidatePageState extends State { -// final qrKey = GlobalKey(debugLabel: 'QR'); -// String barcodeResult = "Point the camera at a barcode"; - -// @override -// Widget build(BuildContext context) { -// return Scaffold( -// resizeToAvoidBottomInset: false, -// body: Container( -// alignment: Alignment.center, -// height: MediaQuery.of(context).size.height, -// decoration: const BoxDecoration( -// gradient: LinearGradient( -// begin: Alignment.topCenter, -// end: Alignment.bottomCenter, -// colors: [ -// Color.fromRGBO(39, 26, 47, 1), -// Color.fromRGBO(22, 33, 44, 1), -// Color.fromRGBO(22, 33, 44, 1), -// Color.fromRGBO(24, 45, 40, 1), -// ], -// ), -// ), -// child: Center( -// child: Column( -// children: [ -// Expanded( -// flex: 2, -// child: MobileScanner( -// onDetect: (BarcodeCapture capture) { -// final List barcodes = capture.barcodes; -// if (barcodes.isNotEmpty && barcodes.first.rawValue != null) { -// setState(() { -// barcodeResult = barcodes.first.rawValue!; -// }); -// } -// }, -// ), -// ), -// Expanded( -// flex: 1, -// child: Center(child: TextWidget(text: barcodeResult, bold: false, size: 18)), -// ), -// ], -// ), -// ), -// ), -// ); -// } -// }