This commit is contained in:
Patrick Alvin Alcala 2025-02-25 17:22:13 +08:00
parent 11fc5c43bf
commit 41651ae447
13 changed files with 237 additions and 125 deletions

View file

@ -2,27 +2,27 @@ C/C++ Structured Log
<EFBFBD>
/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/arm64-v8a/additional_project_files.txtC
A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  Úÿ¥ÝÓ2  ¢í‡<C3AD>Ñ2€
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ¬¢ìßÓ2  ¢í‡<C3AD>Ñ2€
~
|/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/arm64-v8a/android_gradle_build.json  Úÿ¥ÝÓ2ß £í‡<C3AD>Ñ2‡
|/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/arm64-v8a/android_gradle_build.json  ¬¢ìßÓ2ß £í‡<C3AD>Ñ2‡

<EFBFBD>/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/arm64-v8a/android_gradle_build_mini.json  Úÿ¥ÝÓ2ø £í‡<C3AD>Ñ2r
<EFBFBD>/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/arm64-v8a/android_gradle_build_mini.json  ¬¢ìßÓ2ø £í‡<C3AD>Ñ2r
p
n/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/arm64-v8a/build.ninja  Úÿ¥ÝÓ2ߺ —í‡<C3AD>Ñ2v
n/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/arm64-v8a/build.ninja  ¬¢ìßÓ2ߺ —í‡<C3AD>Ñ2v
t
r/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/arm64-v8a/build.ninja.txt  Úÿ¥ÝÓ2{
r/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/arm64-v8a/build.ninja.txt  ­¢ìßÓ2{
y
w/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/arm64-v8a/build_file_index.txt  Úÿ¥ÝÓ2 ^ ¥í‡<C3AD>Ñ2|
w/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/arm64-v8a/build_file_index.txt  ­¢ìßÓ2 ^ ¥í‡<C3AD>Ñ2|
z
x/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/arm64-v8a/compile_commands.json  Úÿ¥ÝÓ2
x/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/arm64-v8a/compile_commands.json  ­¢ìßÓ2
~
|/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/arm64-v8a/compile_commands.json.bin  Úÿ¥ÝÓ2 ˆ
|/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/arm64-v8a/compile_commands.json.bin  ­¢ìßÓ2 ˆ

/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/arm64-v8a/metadata_generation_command.txt  Úÿ¥ÝÓ2
/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/arm64-v8a/metadata_generation_command.txt  ­¢ìßÓ2
ç ¥í‡<C3AD>Ñ2y
w
u/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/arm64-v8a/prefab_config.json  Úÿ¥ÝÓ2  ( ¥í‡<C3AD>Ñ2~
u/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/arm64-v8a/prefab_config.json  ­¢ìßÓ2  ( ¥í‡<C3AD>Ñ2~
|
z/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/arm64-v8a/symbol_folder_index.txt  Úÿ¥ÝÓ2  q ¥í‡<C3AD>Ñ2b
z/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/arm64-v8a/symbol_folder_index.txt  ­¢ìßÓ2  q ¥í‡<C3AD>Ñ2b
`
^/home/patrick/fvm/versions/3.29.0/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  Úÿ¥ÝÓ2 ¤ ˆÈ¼<C388>Ñ2
^/home/patrick/fvm/versions/3.29.0/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ­¢ìßÓ2 ¤ ˆÈ¼<C388>Ñ2

View file

@ -2,27 +2,27 @@ C/C++ Structured Log

<EFBFBD>/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/armeabi-v7a/additional_project_files.txtC
A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  Þÿ¥ÝÓ2  ·ó‡<C3B3>Ñ2ƒ
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  á¢ìßÓ2  ·ó‡<C3B3>Ñ2ƒ

~/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/armeabi-v7a/android_gradle_build.json  Þÿ¥ÝÓ2ã ¸ó‡<C3B3>Ñ2‰
~/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/armeabi-v7a/android_gradle_build.json  á¢ìßÓ2ã ¸ó‡<C3B3>Ñ2‰

ƒ/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/armeabi-v7a/android_gradle_build_mini.json  Þÿ¥ÝÓ2ü ¸ó‡<C3B3>Ñ2t
ƒ/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/armeabi-v7a/android_gradle_build_mini.json  á¢ìßÓ2ü ¸ó‡<C3B3>Ñ2t
r
p/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/armeabi-v7a/build.ninja  Þÿ¥ÝÓ2éº …ó‡<C3B3>Ñ2x
p/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/armeabi-v7a/build.ninja  á¢ìßÓ2éº …ó‡<C3B3>Ñ2x
v
t/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/armeabi-v7a/build.ninja.txt  Þÿ¥ÝÓ2}
t/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/armeabi-v7a/build.ninja.txt  á¢ìßÓ2}
{
y/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/armeabi-v7a/build_file_index.txt  Þÿ¥ÝÓ2 ^ ºó‡<C3B3>Ñ2~
y/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/armeabi-v7a/build_file_index.txt  á¢ìßÓ2 ^ ºó‡<C3B3>Ñ2~
|
z/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/armeabi-v7a/compile_commands.json  Þÿ¥ÝÓ2ƒ
z/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/armeabi-v7a/compile_commands.json  á¢ìßÓ2ƒ

~/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/armeabi-v7a/compile_commands.json.bin  Þÿ¥ÝÓ2 Š
~/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/armeabi-v7a/compile_commands.json.bin  á¢ìßÓ2 Š

/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/armeabi-v7a/metadata_generation_command.txt  Þÿ¥ÝÓ2
/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/armeabi-v7a/metadata_generation_command.txt  á¢ìßÓ2
ñ ºó‡<C3B3>Ñ2{
y
w/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/armeabi-v7a/prefab_config.json  Þÿ¥ÝÓ2  ( ºó‡<C3B3>Ñ2€
w/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/armeabi-v7a/prefab_config.json  á¢ìßÓ2  ( ºó‡<C3B3>Ñ2€
~
|/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/armeabi-v7a/symbol_folder_index.txt  Þÿ¥ÝÓ2  s ºó‡<C3B3>Ñ2b
|/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/armeabi-v7a/symbol_folder_index.txt  á¢ìßÓ2  s ºó‡<C3B3>Ñ2b
`
^/home/patrick/fvm/versions/3.29.0/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  Þÿ¥ÝÓ2 ¤ ˆÈ¼<C388>Ñ2
^/home/patrick/fvm/versions/3.29.0/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  á¢ìßÓ2 ¤ ˆÈ¼<C388>Ñ2

View file

@ -2,27 +2,27 @@ C/C++ Structured Log}
{
y/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86/additional_project_files.txtC
A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ãÿ¥ÝÓ2  ø‡<C3B8>Ñ2z
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ú¢ìßÓ2  ø‡<C3B8>Ñ2z
x
v/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86/android_gradle_build.json  äÿ¥ÝÓ2Ó Œø‡<C3B8>Ñ2
v/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86/android_gradle_build.json  ú¢ìßÓ2Ó Œø‡<C3B8>Ñ2
}
{/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86/android_gradle_build_mini.json  äÿ¥ÝÓ2ì <20>ø‡<C3B8>Ñ2l
{/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86/android_gradle_build_mini.json  ú¢ìßÓ2ì <20>ø‡<C3B8>Ñ2l
j
h/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86/build.ninja  äÿ¥ÝÓ2Áº æ÷‡<C3B7>Ñ2p
h/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86/build.ninja  ú¢ìßÓ2Áº æ÷‡<C3B7>Ñ2p
n
l/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86/build.ninja.txt  äÿ¥ÝÓ2u
l/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86/build.ninja.txt  ú¢ìßÓ2u
s
q/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86/build_file_index.txt  äÿ¥ÝÓ2 ^ Žø‡<C3B8>Ñ2v
q/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86/build_file_index.txt  û¢ìßÓ2 ^ Žø‡<C3B8>Ñ2v
t
r/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86/compile_commands.json  äÿ¥ÝÓ2z
r/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86/compile_commands.json  û¢ìßÓ2z
x
v/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86/compile_commands.json.bin  äÿ¥ÝÓ2
v/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86/compile_commands.json.bin  û¢ìßÓ2
~
|/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86/metadata_generation_command.txt  äÿ¥ÝÓ2
|/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86/metadata_generation_command.txt  û¢ìßÓ2
É Žø‡<C3B8>Ñ2s
q
o/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86/prefab_config.json  äÿ¥ÝÓ2  ( Žø‡<C3B8>Ñ2x
o/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86/prefab_config.json  û¢ìßÓ2  ( Žø‡<C3B8>Ñ2x
v
t/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86/symbol_folder_index.txt  äÿ¥ÝÓ2  k Žø‡<C3B8>Ñ2b
t/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86/symbol_folder_index.txt  û¢ìßÓ2  k Žø‡<C3B8>Ñ2b
`
^/home/patrick/fvm/versions/3.29.0/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  äÿ¥ÝÓ2 ¤ ˆÈ¼<C388>Ñ2
^/home/patrick/fvm/versions/3.29.0/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  û¢ìßÓ2 ¤ ˆÈ¼<C388>Ñ2

View file

@ -2,27 +2,27 @@ C/C++ Structured Log
~
|/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86_64/additional_project_files.txtC
A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  éÿ¥ÝÓ2  ¡ý‡<C3BD>Ñ2}
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ¯£ìßÓ2  ¡ý‡<C3BD>Ñ2}
{
y/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86_64/android_gradle_build.json  éÿ¥ÝÓ2Ù ¡ý‡<C3BD>Ñ2ƒ
y/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86_64/android_gradle_build.json  ¯£ìßÓ2Ù ¡ý‡<C3BD>Ñ2ƒ

~/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86_64/android_gradle_build_mini.json  éÿ¥ÝÓ2ò ¢ý‡<C3BD>Ñ2o
~/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86_64/android_gradle_build_mini.json  ¯£ìßÓ2ò ¢ý‡<C3BD>Ñ2o
m
k/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86_64/build.ninja  éÿ¥ÝÓ2к ý‡<C3BD>Ñ2s
k/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86_64/build.ninja  ¯£ìßÓ2к ý‡<C3BD>Ñ2s
q
o/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86_64/build.ninja.txt  éÿ¥ÝÓ2x
o/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86_64/build.ninja.txt  ¯£ìßÓ2x
v
t/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86_64/build_file_index.txt  éÿ¥ÝÓ2 ^ ¢ý‡<C3BD>Ñ2y
t/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86_64/build_file_index.txt  ¯£ìßÓ2 ^ ¢ý‡<C3BD>Ñ2y
w
u/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86_64/compile_commands.json  éÿ¥ÝÓ2}
u/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86_64/compile_commands.json  ¯£ìßÓ2}
{
y/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86_64/compile_commands.json.bin  éÿ¥ÝÓ2
y/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86_64/compile_commands.json.bin  ¯£ìßÓ2
<EFBFBD>
/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86_64/metadata_generation_command.txt  éÿ¥ÝÓ2
/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86_64/metadata_generation_command.txt  ¯£ìßÓ2
Ø ¢ý‡<C3BD>Ñ2v
t
r/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86_64/prefab_config.json  éÿ¥ÝÓ2  ( ¢ý‡<C3BD>Ñ2{
r/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86_64/prefab_config.json  ¯£ìßÓ2  ( ¢ý‡<C3BD>Ñ2{
y
w/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86_64/symbol_folder_index.txt  éÿ¥ÝÓ2  n ¢ý‡<C3BD>Ñ2b
w/home/patrick/Documents/WebApps/pharmacy_mobile/android/app/.cxx/RelWithDebInfo/14495r4k/x86_64/symbol_folder_index.txt  ¯£ìßÓ2  n ¢ý‡<C3BD>Ñ2b
`
^/home/patrick/fvm/versions/3.29.0/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  éÿ¥ÝÓ2 ¤ ˆÈ¼<C388>Ñ2
^/home/patrick/fvm/versions/3.29.0/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ¯£ìßÓ2 ¤ ˆÈ¼<C388>Ñ2

View file

@ -1,9 +1,9 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application
android:label="OFA Mobile"
android:label="pharmacy_mobile"
android:name="${applicationName}"
android:enableOnBackInvokedCallback="true"
android:icon="@mipmap/launcher_icon">
<activity
android:name=".MainActivity"
android:exported="true"
@ -45,5 +45,5 @@
</queries>
<uses-permission android:name="android.permission.INTERNET"/>
<!-- <uses-permission android:name="android.permission.CAMERA" /> -->
<uses-permission android:name="android.permission.CAMERA" />
</manifest>

View file

@ -3,6 +3,10 @@
the Flutter tool needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<application
android:enableOnBackInvokedCallback="true">
</application>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CAMERA" />
</manifest>

View file

@ -1,3 +1,4 @@
org.gradle.jvmargs=-Xmx4G -XX:MaxMetaspaceSize=2G -XX:+HeapDumpOnOutOfMemoryError
android.useAndroidX=true
android.enableJetifier=true

View file

@ -0,0 +1,19 @@
import 'package:flutter/material.dart';
import 'package:simple_barcode_scanner/simple_barcode_scanner.dart';
Future<String> barcodeScan(BuildContext context) async {
String? barcode = await SimpleBarcodeScanner.scanBarcode(
context,
// barcodeAppBar: const BarcodeAppBar(
// // appBarTitle: 'Test',
// // centerTitle: false,
// // enableBackButton: false,
// // backButtonIcon: Icon(Icons.arrow_back_ios),
// ),
// isShowFlashIcon: true,
delayMillis: 2000,
scanType: ScanType.barcode,
cameraFace: CameraFace.back,
);
return barcode != '-1' ? barcode ?? '' : '';
}

View file

@ -1,11 +1,9 @@
import 'dart:developer';
import 'dart:io';
import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'package:gap/gap.dart';
import 'package:image_picker/image_picker.dart';
import 'package:internet_connection_checker/internet_connection_checker.dart';
import 'package:pharmacy_mobile/functions/barcode_scan_function.dart';
import 'package:pharmacy_mobile/functions/checkresult_function.dart';
import 'package:pharmacy_mobile/security/encryption.dart';
import 'package:pharmacy_mobile/tables/ref_categories.dart';
import 'package:pharmacy_mobile/tables/ref_generic_names.dart';
@ -44,7 +42,6 @@ class _AddMedicinePageState extends State<AddMedicinePage> {
final _storage = Storage();
final _nameController = TextEditingController();
final _barcodeController = TextEditingController();
final FocusNode _focusNode = FocusNode();
bool _isLoading = false;
late List _genericNameList = [];
@ -58,21 +55,21 @@ class _AddMedicinePageState extends State<AddMedicinePage> {
late bool imageUploaded = false;
late String imageUrl = '';
void _checkResult(List list, String name) {
if (list.isEmpty) {
if (mounted) {
showNotification(context, 'Error: No $name Found', false);
// void _checkResult(List list, String name) {
// if (list.isEmpty) {
// if (mounted) {
// showNotification(context, 'Error: No $name Found', false);
WidgetsBinding.instance.addPostFrameCallback((_) {
if (mounted) {
context.push('/main');
}
});
}
} else {
setState(() => {});
}
}
// WidgetsBinding.instance.addPostFrameCallback((_) {
// if (mounted) {
// context.push('/main');
// }
// });
// }
// } else {
// setState(() => {});
// }
// }
// Future<Uint8List> compressFile(XFile file) async {
// var result = await FlutterImageCompress.compressWithFile(
@ -85,28 +82,32 @@ class _AddMedicinePageState extends State<AddMedicinePage> {
// return result;
// }
void _getGenerics() async {
Future<void> _getGenerics() async {
_genericNameList = await _refGenericNames.getList();
_checkResult(_genericNameList, 'Generics');
setState(() {
checkResult(context, _genericNameList, 'Generics');
});
}
void _getTypes() async {
Future<void> _getTypes() async {
_typeList = await _refTypes.getList();
_checkResult(_typeList, 'Types');
setState(() {
checkResult(context, _typeList, 'Types');
});
}
void _getManufactorer() async {
Future<void> _getManufactorer() async {
_manufactorerList = await _refManufactorer.getList();
_checkResult(_manufactorerList, 'Manufactorer');
setState(() {
checkResult(context, _manufactorerList, 'Manufactorer');
});
}
void autoRun() async {
if (await InternetConnectionChecker.instance.hasConnection) {
_getGenerics();
_getTypes();
_getManufactorer();
setState(() {});
await _getGenerics();
await _getTypes();
await _getManufactorer();
// final sample = await _refMedicines.getList2();
} else {
@ -139,20 +140,20 @@ class _AddMedicinePageState extends State<AddMedicinePage> {
}
Future<void> _scanBarcode() async {
String? barcode = await SimpleBarcodeScanner.scanBarcode(
context,
// barcodeAppBar: const BarcodeAppBar(
// // appBarTitle: 'Test',
// // centerTitle: false,
// // enableBackButton: false,
// // backButtonIcon: Icon(Icons.arrow_back_ios),
// ),
// isShowFlashIcon: true,
delayMillis: 2000,
scanType: ScanType.barcode,
cameraFace: CameraFace.back,
);
_barcodeController.text = barcode != '-1' ? barcode ?? '' : '';
// String? barcode = await SimpleBarcodeScanner.scanBarcode(
// context,
// // barcodeAppBar: const BarcodeAppBar(
// // // appBarTitle: 'Test',
// // // centerTitle: false,
// // // enableBackButton: false,
// // // backButtonIcon: Icon(Icons.arrow_back_ios),
// // ),
// // isShowFlashIcon: true,
// delayMillis: 2000,
// scanType: ScanType.barcode,
// cameraFace: CameraFace.back,
// );
_barcodeController.text = await barcodeScan(context);
}
void _saveMedicine() async {
@ -214,7 +215,6 @@ class _AddMedicinePageState extends State<AddMedicinePage> {
@override
void dispose() {
_nameController.dispose();
_focusNode.dispose();
_barcodeController.dispose();
_genericNameList = [];

View file

@ -1,17 +1,25 @@
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:gap/gap.dart';
import 'package:internet_connection_checker/internet_connection_checker.dart';
import 'package:pharmacy_mobile/functions/barcode_scan_function.dart';
import 'package:pharmacy_mobile/functions/checkresult_function.dart';
import 'package:pharmacy_mobile/security/encryption.dart';
import 'package:pharmacy_mobile/tables/ref_medicines.dart';
import 'package:pharmacy_mobile/tables/stocks.dart';
import 'package:pharmacy_mobile/widgets/button_widget.dart';
import 'package:pharmacy_mobile/widgets/datepicker_widget.dart';
import 'package:pharmacy_mobile/widgets/dropdown_widget.dart';
import 'package:pharmacy_mobile/widgets/dropdown_wrappermulti_widget.dart';
import 'package:pharmacy_mobile/widgets/form_border_widget2.dart';
import 'package:pharmacy_mobile/widgets/input_widget.dart';
import 'package:pharmacy_mobile/widgets/page_background_widget.dart';
import 'package:pharmacy_mobile/widgets/snackbar_widget.dart';
import 'package:pharmacy_mobile/widgets/text_widget.dart';
import 'package:pharmacy_mobile/widgets/title_widget.dart';
import 'package:go_router/go_router.dart';
import 'package:simple_barcode_scanner/simple_barcode_scanner.dart';
class AddStockPage extends StatefulWidget {
@ -23,10 +31,10 @@ class AddStockPage extends StatefulWidget {
class _AddStockPageState extends State<AddStockPage> with WidgetsBindingObserver {
final _formKey = GlobalKey<FormState>();
final FocusNode _focusNode = FocusNode();
final _refMedicines = RefMedicines();
final _quantityController = TextEditingController();
final _dateController = TextEditingController();
final _medicineController = TextEditingController();
final _stocks = Stocks();
final bool _isLoading = false;
@ -36,10 +44,42 @@ class _AddStockPageState extends State<AddStockPage> with WidgetsBindingObserver
late DateTime selectedDate = DateTime.now();
late String barcode = '';
void autoRun() async {
_medicineList = await _refMedicines.getList();
// void autoRun() async {
// _medicineList = await _refMedicines.getList();
// }
void _getMedicines() async {
_medicineList = await _refMedicines.getList2();
setState(() {
checkResult(context, _medicineList, 'Medicines');
});
}
void autoRun() async {
if (await InternetConnectionChecker.instance.hasConnection) {
_getMedicines();
} else {
if (mounted) {
showNotification(context, 'Error: No Internet Connection', false);
WidgetsBinding.instance.addPostFrameCallback((_) {
context.push('/main');
});
}
}
}
// Future<bool> _getMedicines() async {
// late bool? result;
// _medicineList = await _refMedicines.getList();
// if (mounted) {
// result = await checkResult(context, _medicineList, 'Medicines');
// log(result.toString());
// }
// return result ?? false;
// }
void _updateMedicine(dynamic medicine) {
_selectedMedicine = medicine;
}
@ -52,15 +92,24 @@ class _AddStockPageState extends State<AddStockPage> with WidgetsBindingObserver
await _stocks.postStock(stockNameUUID, stockExpiration, stockQuantity);
}
Future<void> _scanBarcode() async {
_selectedMedicine = await barcodeScan(context);
}
Future<String> _getMedicineUsingBarcode(String name) async {
final encryptedBarcode = await _refMedicines.getBarcode(name);
final barcode = decrypt(encryptedBarcode);
return barcode;
}
@override
void initState() {
autoRun();
_getMedicines();
super.initState();
}
@override
void dispose() {
_focusNode.dispose();
_medicineList = [];
_selectedMedicine = '';
_quantityController.dispose();
@ -89,13 +138,52 @@ class _AddStockPageState extends State<AddStockPage> with WidgetsBindingObserver
child: Form(
key: _formKey,
child: Center(
child: Column(
child: DropdownWrapperMultiWidget(
list: _medicineList,
text: 'Data',
children: [
DropDownWidget(
label: 'Medicine Name',
list: _medicineList,
listTitle: 'medicine_name',
onChanged: _updateMedicine),
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
GestureDetector(
onTap: _scanBarcode,
child: Container(
padding: const EdgeInsets.only(top: 8),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20),
// color: const Color.fromARGB(0, 36, 18, 58),
// boxShadow: [
// BoxShadow(
// color: Colors.black26,
// blurRadius: 5.0,
// offset: Offset(0, 2),
// ),
// ],
),
child: Row(
children: [
Icon(
Icons.qr_code_scanner,
color: Colors.white,
size: 22,
),
const Gap(8),
TextWidget(
text: 'Scan Barcode',
size: 14,
color: Colors.white,
),
],
),
),
),
],
),
const Gap(16),
InputWidget(label: 'Quantity', controller: _quantityController),
const Gap(16),
@ -107,28 +195,6 @@ class _AddStockPageState extends State<AddStockPage> with WidgetsBindingObserver
const Gap(32),
ButtonWidget(text: 'Add Stock', onPressed: _saveStock),
const Gap(16),
ButtonWidget(
text: 'Barcode',
onPressed: () async {
String? bc = await SimpleBarcodeScanner.scanBarcode(
context,
// barcodeAppBar: const BarcodeAppBar(
// // appBarTitle: 'Test',
// // centerTitle: false,
// // enableBackButton: false,
// // backButtonIcon: Icon(Icons.arrow_back_ios),
// ),
// isShowFlashIcon: true,
delayMillis: 2000,
scanType: ScanType.barcode,
cameraFace: CameraFace.back,
);
setState(() {
barcode = bc as String;
});
},
),
const Gap(16),
TextWidget(
text: barcode,
size: 14,

View file

@ -0,0 +1,17 @@
import 'package:lazyxchacha/keypair.dart' as kp;
class KeyPairSingleton {
static final KeyPairSingleton _instance = KeyPairSingleton._internal();
late kp.KeyPair _keyPair;
factory KeyPairSingleton() {
return _instance;
}
KeyPairSingleton._internal() {
// Initialize the KeyPair instance here
_keyPair = kp.KeyPair();
}
kp.KeyPair get keyPair => _keyPair;
}

View file

@ -29,6 +29,11 @@ class RefMedicines {
return data.first['ref_medicines_uuid'];
}
Future<String> getBarcode(String name) async {
final data = await _supabase.from('ref_medicines').select('barcode').eq('medicine_name', name);
return data.first['barcode'];
}
Future<void> postMedicine(String uuid, String name, String muuid, String guuid, String tuuid, String barcode) async {
final medicine = {
'ref_medicines_uuid': uuid,

View file

@ -52,7 +52,7 @@ class DropDownWidget extends StatelessWidget {
textStyle:
GoogleFonts.outfit(textStyle: const TextStyle(color: Color.fromRGBO(255, 255, 255, 1), fontSize: 16)),
menuStyle: MenuStyle(
backgroundColor: WidgetStateProperty.all<Color>(const Color.fromRGBO(13, 21, 42, 0.663)),
backgroundColor: WidgetStateProperty.all<Color>(const Color.fromRGBO(21, 13, 35, 0.902)),
padding: WidgetStateProperty.all(const EdgeInsets.symmetric(vertical: 16, horizontal: 8)),
shape: WidgetStateProperty.all(RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8), // Set the border radius for the dropdown menu