Compare commits

...

4 commits

Author SHA1 Message Date
e57f8af97d Added new image asset 2026-02-04 10:37:43 +08:00
fb6e542106 Updated box widget 2026-02-04 10:37:13 +08:00
98607490ee Updated page 2026-02-04 10:36:59 +08:00
79633c721c Added new image 2026-02-04 10:36:47 +08:00
4 changed files with 83 additions and 21 deletions

BIN
assets/esign.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

View file

@ -5,6 +5,7 @@ import 'package:gap/gap.dart';
import 'package:ocbo_esign_mobile/blocs/qr/functions/bloc_getqr.dart'; import 'package:ocbo_esign_mobile/blocs/qr/functions/bloc_getqr.dart';
import 'package:ocbo_esign_mobile/functions/get_api.dart'; import 'package:ocbo_esign_mobile/functions/get_api.dart';
import 'package:ocbo_esign_mobile/widgets/box_widget.dart'; import 'package:ocbo_esign_mobile/widgets/box_widget.dart';
import 'package:ocbo_esign_mobile/widgets/image_widget.dart';
import 'package:ocbo_esign_mobile/widgets/input_widget.dart'; import 'package:ocbo_esign_mobile/widgets/input_widget.dart';
import 'package:ocbo_esign_mobile/widgets/text_widget.dart'; import 'package:ocbo_esign_mobile/widgets/text_widget.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
@ -30,9 +31,9 @@ class _ValidateDetailPageState extends State<ValidateDetailPage> {
_total = double.parse(total).toInt(); _total = double.parse(total).toInt();
}); });
final response = await getApi('get-transactions', name, null); // final response = await getApi('get-transactions', name, null);
final applicationNoList = response['result']; // final applicationNoList = response['result'];
final dateList = response['result2']; // final dateList = response['result2'];
} }
@override @override
@ -63,11 +64,18 @@ class _ValidateDetailPageState extends State<ValidateDetailPage> {
), ),
), ),
child: SizedBox( child: SizedBox(
width: MediaQuery.of(context).size.width - 90, width: MediaQuery.of(context).size.width - 104,
child: Column( child: Column(
children: [ children: [
const Gap(88), const Gap(88),
InputWidget(controller: _searchController, password: false, placeholder: 'Specify Application Number'), ClipRRect(
borderRadius: BorderRadius.circular(36),
child: InputWidget(
controller: _searchController,
password: false,
placeholder: 'Search Application Number',
),
),
const Gap(24), const Gap(24),
BoxWidget( BoxWidget(
circular: 16, circular: 16,
@ -76,7 +84,7 @@ class _ValidateDetailPageState extends State<ValidateDetailPage> {
children: [ children: [
Column( Column(
children: [ children: [
TextWidget(text: formatter.format(_total), size: 64, bold: true), TextWidget(text: formatter.format(_total), size: 50, bold: true),
TextWidget(text: 'Total Signed Applications', size: 16), TextWidget(text: 'Total Signed Applications', size: 16),
], ],
), ),
@ -84,20 +92,74 @@ class _ValidateDetailPageState extends State<ValidateDetailPage> {
), ),
), ),
const Gap(16), const Gap(16),
const BoxWidget( (Column(
circular: 16, crossAxisAlignment: CrossAxisAlignment.center,
content: Row( children: [
mainAxisAlignment: MainAxisAlignment.center, BoxWidget(
children: [ alignment: CrossAxisAlignment.center,
Column( circular: 16,
content: Row(
children: [ children: [
TextWidget(text: '23-000123', size: 24, bold: true), const ImageWidget(imagePath: 'assets/esign.webp', size: 48, measureByHeight: true),
TextWidget(text: 'Total Signed Applications', size: 20), const Gap(16),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TextWidget(text: '23-000123', size: 18, bold: true),
const Gap(4),
TextWidget(text: 'Total Signed Applications', size: 12),
],
),
], ],
), ),
], ),
), const Gap(8),
), BoxWidget(
alignment: CrossAxisAlignment.center,
circular: 16,
content: Row(
children: [
const ImageWidget(imagePath: 'assets/esign.webp', size: 48, measureByHeight: true),
const Gap(16),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TextWidget(text: '23-000123', size: 18, bold: true),
const Gap(4),
TextWidget(text: 'Total Signed Applications', size: 12),
const Gap(4),
Expanded(
child: Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [TextWidget(text: 'Dates', size: 8)],
),
),
],
),
],
),
),
const Gap(8),
BoxWidget(
alignment: CrossAxisAlignment.center,
circular: 16,
content: Row(
children: [
const ImageWidget(imagePath: 'assets/esign.webp', size: 48, measureByHeight: true),
const Gap(16),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TextWidget(text: '23-000123', size: 18, bold: true),
const Gap(4),
TextWidget(text: 'Total Signed Applications', size: 12),
],
),
],
),
),
],
)),
], ],
), ),
), ),

View file

@ -1,13 +1,12 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:gap/gap.dart';
import 'package:ocbo_esign_mobile/widgets/text_widget.dart';
class BoxWidget extends StatelessWidget { class BoxWidget extends StatelessWidget {
final Widget content; final Widget content;
final double? circular; final double? circular;
final CrossAxisAlignment? alignment;
// final double? titleSize; // final double? titleSize;
const BoxWidget({super.key, required this.content, this.circular = 8}); const BoxWidget({super.key, required this.content, this.circular = 8, this.alignment = CrossAxisAlignment.start});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -20,7 +19,7 @@ class BoxWidget extends StatelessWidget {
), ),
width: MediaQuery.of(context).size.width - 30, width: MediaQuery.of(context).size.width - 30,
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: alignment ?? CrossAxisAlignment.start,
children: [Padding(padding: const EdgeInsets.all(16), child: content)], children: [Padding(padding: const EdgeInsets.all(16), child: content)],
), ),
); );

View file

@ -45,3 +45,4 @@ flutter:
- .env - .env
- assets/logo.webp - assets/logo.webp
- assets/pat-alcala.webp - assets/pat-alcala.webp
- assets/esign.webp