Compare commits

..

3 commits

Author SHA1 Message Date
621d2f1614 Added dependencies 2026-01-27 17:53:06 +08:00
809cf7aa5f Updated pages 2026-01-27 17:52:51 +08:00
794edf902a Cleanup api 2026-01-27 17:52:39 +08:00
6 changed files with 28 additions and 14 deletions

View file

@ -1,5 +1,4 @@
import 'dart:convert'; import 'dart:convert';
import 'dart:developer';
import 'package:dio/dio.dart'; import 'package:dio/dio.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:dio_smart_retry/dio_smart_retry.dart'; import 'package:dio_smart_retry/dio_smart_retry.dart';

View file

@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:go_router/go_router.dart'; import 'package:go_router/go_router.dart';
import 'package:ocbo_esign_mobile/blocs/qr/qr_bloc.dart';
import 'package:ocbo_esign_mobile/blocs/user/user_bloc.dart'; import 'package:ocbo_esign_mobile/blocs/user/user_bloc.dart';
import 'package:ocbo_esign_mobile/pages/approval_page.dart'; import 'package:ocbo_esign_mobile/pages/approval_page.dart';
import 'package:ocbo_esign_mobile/pages/index_page.dart'; import 'package:ocbo_esign_mobile/pages/index_page.dart';
@ -75,7 +76,10 @@ class MyApp extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MultiBlocProvider( return MultiBlocProvider(
providers: [BlocProvider(create: (context) => UserBloc())], providers: [
BlocProvider(create: (context) => UserBloc()),
BlocProvider(create: (context) => QrBloc()),
],
child: MaterialApp.router( child: MaterialApp.router(
debugShowCheckedModeBanner: false, debugShowCheckedModeBanner: false,
theme: ThemeData(useMaterial3: true), theme: ThemeData(useMaterial3: true),

View file

@ -7,6 +7,7 @@ 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/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';
class ValidateDetailPage extends StatefulWidget { class ValidateDetailPage extends StatefulWidget {
const ValidateDetailPage({super.key}); const ValidateDetailPage({super.key});
@ -17,18 +18,21 @@ class ValidateDetailPage extends StatefulWidget {
class _ValidateDetailPageState extends State<ValidateDetailPage> { class _ValidateDetailPageState extends State<ValidateDetailPage> {
final _searchController = TextEditingController(); final _searchController = TextEditingController();
late double _total = 0; late int _total = 0;
final NumberFormat formatter = NumberFormat('#,###.##');
void _getTotalSigned() async { void _getTotalSigned() async {
final name = await blocGetQr(context); final name = await blocGetQr(context);
final response = await getApi('get-transactions-count', name, null); final responseCount = await getApi('get-transactions-count', name, null);
log(name.toString()); final total = responseCount['result'];
log(response.toString());
final total = response['result'];
setState(() { setState(() {
_total = double.parse(total); _total = double.parse(total).toInt();
}); });
final response = await getApi('get-transactions', name, null);
final applicationNoList = response['result'];
final dateList = response['result2'];
} }
@override @override
@ -72,7 +76,7 @@ class _ValidateDetailPageState extends State<ValidateDetailPage> {
children: [ children: [
Column( Column(
children: [ children: [
TextWidget(text: _total.toString(), size: 64, bold: true), TextWidget(text: formatter.format(_total), size: 64, bold: true),
TextWidget(text: 'Total Signed Applications', size: 16), TextWidget(text: 'Total Signed Applications', size: 16),
], ],
), ),

View file

@ -69,7 +69,6 @@ class _BarcodeScannerScreenState extends State<BarcodeScannerScreen> {
final qr = value.substring(35); final qr = value.substring(35);
final response = await getApi('check-qr', qr, null); final response = await getApi('check-qr', qr, null);
final result = response["result"]?.toString(); final result = response["result"]?.toString();
log('result: $result');
if (result != null) { if (result != null) {
setState(() { setState(() {
@ -103,8 +102,7 @@ class _BarcodeScannerScreenState extends State<BarcodeScannerScreen> {
await blocSetQr(context, qrResult); await blocSetQr(context, qrResult);
} }
void gotoDetails() async { void gotoDetails() {
log('qr $qrResult');
updateBlockQr(); updateBlockQr();
context.push('/details'); context.push('/details');
} }

View file

@ -29,10 +29,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: bloc name: bloc
sha256: a2cebb899f91d36eeeaa55c7b20b5915db5a9df1b8fd4a3c9c825e22e474537d sha256: a48653a82055a900b88cd35f92429f068c5a8057ae9b136d197b3d56c57efb81
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "9.1.0" version: "9.2.0"
boolean_selector: boolean_selector:
dependency: transitive dependency: transitive
description: description:
@ -304,6 +304,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.0.1" version: "3.0.1"
intl:
dependency: "direct main"
description:
name: intl
sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5"
url: "https://pub.dev"
source: hosted
version: "0.20.2"
json_annotation: json_annotation:
dependency: transitive dependency: transitive
description: description:

View file

@ -22,6 +22,7 @@ dependencies:
hashlib: ^2.2.0 hashlib: ^2.2.0
flutter_bloc: ^9.1.1 flutter_bloc: ^9.1.1
vibration: ^3.1.4 vibration: ^3.1.4
intl: ^0.20.2
dev_dependencies: dev_dependencies:
flutter_test: flutter_test: