case sensitive
This commit is contained in:
parent
80d7357ff9
commit
1619cb25dd
@ -2,27 +2,27 @@ C/C++ Structured Log
|
||||
…
|
||||
‚/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/additional_project_files.txtC
|
||||
A
|
||||
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint ¥ü¿<EFBFBD>è2 £ŸÐõã2„
|
||||
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint ÷<EFBFBD>“„ñ2 £ŸÐõã2„
|
||||
<EFBFBD>
|
||||
/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/android_gradle_build.json ¥ü¿<EFBFBD>è2’ ¦ŸÐõã2Š
|
||||
/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/android_gradle_build.json ÷<EFBFBD>“„ñ2’ ¦ŸÐõã2Š
|
||||
‡
|
||||
„/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/android_gradle_build_mini.json ¥ü¿<EFBFBD>è2• ©ŸÐõã2u
|
||||
„/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/android_gradle_build_mini.json ÷<EFBFBD>“„ñ2• ©ŸÐõã2u
|
||||
s
|
||||
q/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/build.ninja ¦ü¿<EFBFBD>è2²Í <20>ŸÐõã2y
|
||||
q/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/build.ninja ÷<EFBFBD>“„ñ2²Í <20>ŸÐõã2y
|
||||
w
|
||||
u/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/build.ninja.txt ¦ü¿<EFBFBD>è2~
|
||||
u/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/build.ninja.txt ÷<EFBFBD>“„ñ2~
|
||||
|
|
||||
z/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/build_file_index.txt ¦ü¿<EFBFBD>è2
_ ªŸÐõã2
|
||||
z/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/build_file_index.txt ÷<EFBFBD>“„ñ2
_ ªŸÐõã2
|
||||
}
|
||||
{/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/compile_commands.json ¦ü¿<EFBFBD>è2„
|
||||
{/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/compile_commands.json ÷<EFBFBD>“„ñ2„
|
||||
<EFBFBD>
|
||||
/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/compile_commands.json.bin ¦ü¿<EFBFBD>è2 ‹
|
||||
/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/compile_commands.json.bin ÷<EFBFBD>“„ñ2 ‹
|
||||
ˆ
|
||||
…/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/metadata_generation_command.txt ¦ü¿<EFBFBD>è2
|
||||
…/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/metadata_generation_command.txt ÷<EFBFBD>“„ñ2
|
||||
š ªŸÐõã2|
|
||||
z
|
||||
x/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/prefab_config.json ¦ü¿<EFBFBD>è2
( ªŸÐõã2<C3A3>
|
||||
x/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/prefab_config.json ÷<EFBFBD>“„ñ2
( ªŸÐõã2<C3A3>
|
||||
|
||||
}/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/symbol_folder_index.txt ¦ü¿<EFBFBD>è2
t ªŸÐõã2c
|
||||
}/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/symbol_folder_index.txt ÷<EFBFBD>“„ñ2
t ªŸÐõã2c
|
||||
a
|
||||
_/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt ¦ü¿<EFBFBD>è2
¤ òÑÞ€á2
|
||||
_/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt ÷<EFBFBD>“„ñ2
¤ òÑÞ€á2
|
||||
@ -2,27 +2,27 @@ C/C++ Structured Log
|
||||
‡
|
||||
„/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/additional_project_files.txtC
|
||||
A
|
||||
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint ½ü¿<EFBFBD>è2 ª¥Ðõã2‡
|
||||
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint €‘“„ñ2 ª¥Ðõã2‡
|
||||
„
|
||||
<EFBFBD>/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/android_gradle_build.json ½ü¿<EFBFBD>è2– «¥Ðõã2Œ
|
||||
<EFBFBD>/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/android_gradle_build.json €‘“„ñ2– «¥Ðõã2Œ
|
||||
‰
|
||||
†/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/android_gradle_build_mini.json ½ü¿<EFBFBD>è2™ ¬¥Ðõã2w
|
||||
†/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/android_gradle_build_mini.json €‘“„ñ2™ ¬¥Ðõã2w
|
||||
u
|
||||
s/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/build.ninja ½ü¿<EFBFBD>è2¾Í ¡¥Ðõã2{
|
||||
s/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/build.ninja €‘“„ñ2¾Í ¡¥Ðõã2{
|
||||
y
|
||||
w/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/build.ninja.txt ½ü¿<EFBFBD>è2€
|
||||
w/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/build.ninja.txt €‘“„ñ2€
|
||||
~
|
||||
|/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/build_file_index.txt ½ü¿<EFBFBD>è2
_ ¬¥Ðõã2<C3A3>
|
||||
|/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/build_file_index.txt €‘“„ñ2
_ ¬¥Ðõã2<C3A3>
|
||||
|
||||
}/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/compile_commands.json ½ü¿<EFBFBD>è2‡
|
||||
}/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/compile_commands.json €‘“„ñ2‡
|
||||
„
|
||||
<EFBFBD>/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/compile_commands.json.bin ½ü¿<EFBFBD>è2 <09>
|
||||
<EFBFBD>/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/compile_commands.json.bin €‘“„ñ2 <09>
|
||||
Š
|
||||
‡/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/metadata_generation_command.txt ½ü¿<EFBFBD>è2
|
||||
‡/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/metadata_generation_command.txt €‘“„ñ2
|
||||
¤ ¬¥Ðõã2~
|
||||
|
|
||||
z/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/prefab_config.json ½ü¿<EFBFBD>è2
( ¬¥Ðõã2„
|
||||
z/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/prefab_config.json €‘“„ñ2
( ¬¥Ðõã2„
|
||||
<EFBFBD>
|
||||
/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/symbol_folder_index.txt ½ü¿<EFBFBD>è2
v ¬¥Ðõã2c
|
||||
/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/symbol_folder_index.txt €‘“„ñ2
v ¬¥Ðõã2c
|
||||
a
|
||||
_/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt ½ü¿<EFBFBD>è2
¤ òÑÞ€á2
|
||||
_/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt €‘“„ñ2
¤ òÑÞ€á2
|
||||
@ -2,27 +2,27 @@ C/C++ Structured Log
|
||||
~
|
||||
|/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/additional_project_files.txtC
|
||||
A
|
||||
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint Äü¿<EFBFBD>è2 ϧÐõã2}
|
||||
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint „‘“„ñ2 ϧÐõã2}
|
||||
{
|
||||
y/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/android_gradle_build.json Äü¿<EFBFBD>è2† ϧÐõã2ƒ
|
||||
y/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/android_gradle_build.json „‘“„ñ2† ϧÐõã2ƒ
|
||||
€
|
||||
~/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/android_gradle_build_mini.json Äü¿<EFBFBD>è2‰ ЧÐõã2o
|
||||
~/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/android_gradle_build_mini.json „‘“„ñ2‰ ЧÐõã2o
|
||||
m
|
||||
k/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/build.ninja Äü¿<EFBFBD>è2ŽÍ ǧÐõã2s
|
||||
k/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/build.ninja „‘“„ñ2ŽÍ ǧÐõã2s
|
||||
q
|
||||
o/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/build.ninja.txt Äü¿<EFBFBD>è2x
|
||||
o/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/build.ninja.txt „‘“„ñ2x
|
||||
v
|
||||
t/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/build_file_index.txt Äü¿<EFBFBD>è2
_ ЧÐõã2y
|
||||
t/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/build_file_index.txt „‘“„ñ2
_ ЧÐõã2y
|
||||
w
|
||||
u/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/compile_commands.json Äü¿<EFBFBD>è2}
|
||||
u/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/compile_commands.json „‘“„ñ2}
|
||||
{
|
||||
y/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/compile_commands.json.bin Äü¿<EFBFBD>è2 „
|
||||
y/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/compile_commands.json.bin „‘“„ñ2 „
|
||||
<EFBFBD>
|
||||
/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/metadata_generation_command.txt Äü¿<EFBFBD>è2
|
||||
/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/metadata_generation_command.txt „‘“„ñ2
|
||||
ü ЧÐõã2v
|
||||
t
|
||||
r/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/prefab_config.json Äü¿<EFBFBD>è2
( ЧÐõã2{
|
||||
r/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/prefab_config.json „‘“„ñ2
( ЧÐõã2{
|
||||
y
|
||||
w/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/symbol_folder_index.txt Äü¿<EFBFBD>è2
n ЧÐõã2c
|
||||
w/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/symbol_folder_index.txt „‘“„ñ2
n ЧÐõã2c
|
||||
a
|
||||
_/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt Äü¿<EFBFBD>è2
¤ òÑÞ€á2
|
||||
_/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt „‘“„ñ2
¤ òÑÞ€á2
|
||||
@ -2,27 +2,27 @@ C/C++ Structured Log
|
||||
<EFBFBD>
|
||||
/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/additional_project_files.txtC
|
||||
A
|
||||
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint Éü¿<EFBFBD>è2 Ò©Ðõã2€
|
||||
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint ‹‘“„ñ2 Ò©Ðõã2€
|
||||
~
|
||||
|/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/android_gradle_build.json Éü¿<EFBFBD>è2Œ Ò©Ðõã2‡
|
||||
|/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/android_gradle_build.json ‹‘“„ñ2Œ Ò©Ðõã2‡
|
||||
„
|
||||
<EFBFBD>/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/android_gradle_build_mini.json Éü¿<EFBFBD>è2<18> Ó©Ðõã2r
|
||||
<EFBFBD>/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/android_gradle_build_mini.json ‹‘“„ñ2<18> Ó©Ðõã2r
|
||||
p
|
||||
n/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/build.ninja Éü¿<EFBFBD>è2 Í Ë©Ðõã2v
|
||||
n/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/build.ninja ‹‘“„ñ2 Í Ë©Ðõã2v
|
||||
t
|
||||
r/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/build.ninja.txt Éü¿<EFBFBD>è2{
|
||||
r/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/build.ninja.txt ‹‘“„ñ2{
|
||||
y
|
||||
w/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/build_file_index.txt Éü¿<EFBFBD>è2
_ Ó©Ðõã2|
|
||||
w/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/build_file_index.txt ‹‘“„ñ2
_ Ó©Ðõã2|
|
||||
z
|
||||
x/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/compile_commands.json Éü¿<EFBFBD>è2€
|
||||
x/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/compile_commands.json ‹‘“„ñ2€
|
||||
~
|
||||
|/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/compile_commands.json.bin Éü¿<EFBFBD>è2 ˆ
|
||||
|/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/compile_commands.json.bin ‹‘“„ñ2 ˆ
|
||||
…
|
||||
‚/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/metadata_generation_command.txt Éü¿<EFBFBD>è2
|
||||
‚/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/metadata_generation_command.txt ‹‘“„ñ2
|
||||
‹ Ó©Ðõã2y
|
||||
w
|
||||
u/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/prefab_config.json Éü¿<EFBFBD>è2
( Ó©Ðõã2~
|
||||
u/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/prefab_config.json ‹‘“„ñ2
( Ó©Ðõã2~
|
||||
|
|
||||
z/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/symbol_folder_index.txt Éü¿<EFBFBD>è2
q Ó©Ðõã2c
|
||||
z/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/symbol_folder_index.txt ‹‘“„ñ2
q Ó©Ðõã2c
|
||||
a
|
||||
_/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt Éü¿<EFBFBD>è2
¤ òÑÞ€á2
|
||||
_/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt ‹‘“„ñ2
¤ òÑÞ€á2
|
||||
@ -20,12 +20,12 @@ if (project.hasProperty('google-services.json')) {
|
||||
|
||||
def flutterVersionCode = localProperties.getProperty("flutter.versionCode")
|
||||
if (flutterVersionCode == null) {
|
||||
flutterVersionCode = "56"
|
||||
flutterVersionCode = "59"
|
||||
}
|
||||
|
||||
def flutterVersionName = localProperties.getProperty("flutter.versionName")
|
||||
if (flutterVersionName == null) {
|
||||
flutterVersionName = "1.0.55"
|
||||
flutterVersionName = "1.0.58"
|
||||
}
|
||||
|
||||
def keystorePropertiesFile = rootProject.file("key.properties")
|
||||
|
||||
@ -14,6 +14,16 @@ allprojects {
|
||||
google()
|
||||
mavenCentral()
|
||||
}
|
||||
subprojects {
|
||||
configurations.all {
|
||||
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
|
||||
if (details.requested.group == 'org.bouncycastle' &&
|
||||
details.requested.name == 'bcprov-jdk18on') {
|
||||
details.useVersion '1.77'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
rootProject.buildDir = "../build"
|
||||
|
||||
@ -1,8 +1,12 @@
|
||||
PODS:
|
||||
- app_links (0.0.2):
|
||||
- Flutter
|
||||
- app_settings (5.1.1):
|
||||
- Flutter
|
||||
- connectivity_plus (0.0.1):
|
||||
- Flutter
|
||||
- device_info_plus (0.0.1):
|
||||
- Flutter
|
||||
- Firebase/CoreOnly (11.10.0):
|
||||
- FirebaseCore (~> 11.10.0)
|
||||
- Firebase/Messaging (11.10.0):
|
||||
@ -99,7 +103,9 @@ PODS:
|
||||
|
||||
DEPENDENCIES:
|
||||
- app_links (from `.symlinks/plugins/app_links/ios`)
|
||||
- app_settings (from `.symlinks/plugins/app_settings/ios`)
|
||||
- connectivity_plus (from `.symlinks/plugins/connectivity_plus/ios`)
|
||||
- device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
|
||||
- firebase_core (from `.symlinks/plugins/firebase_core/ios`)
|
||||
- firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`)
|
||||
- Flutter (from `Flutter`)
|
||||
@ -130,8 +136,12 @@ SPEC REPOS:
|
||||
EXTERNAL SOURCES:
|
||||
app_links:
|
||||
:path: ".symlinks/plugins/app_links/ios"
|
||||
app_settings:
|
||||
:path: ".symlinks/plugins/app_settings/ios"
|
||||
connectivity_plus:
|
||||
:path: ".symlinks/plugins/connectivity_plus/ios"
|
||||
device_info_plus:
|
||||
:path: ".symlinks/plugins/device_info_plus/ios"
|
||||
firebase_core:
|
||||
:path: ".symlinks/plugins/firebase_core/ios"
|
||||
firebase_messaging:
|
||||
@ -163,7 +173,9 @@ EXTERNAL SOURCES:
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
app_links: 76b66b60cc809390ca1ad69bfd66b998d2387ac7
|
||||
app_settings: 5127ae0678de1dcc19f2293271c51d37c89428b2
|
||||
connectivity_plus: cb623214f4e1f6ef8fe7403d580fdad517d2f7dd
|
||||
device_info_plus: 21fcca2080fbcd348be798aa36c3e5ed849eefbe
|
||||
Firebase: 1fe1c0a7d9aaea32efe01fbea5f0ebd8d70e53a2
|
||||
firebase_core: 2d4534e7b489907dcede540c835b48981d890943
|
||||
firebase_messaging: 75bc93a4df25faccad67f6662ae872ac9ae69b64
|
||||
|
||||
@ -322,14 +322,10 @@
|
||||
inputFileListPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "[CP] Embed Pods Frameworks";
|
||||
outputFileListPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
|
||||
);
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
|
||||
@ -358,14 +354,10 @@
|
||||
inputFileListPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "[CP] Copy Pods Resources";
|
||||
outputFileListPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
|
||||
);
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
|
||||
@ -506,7 +498,7 @@
|
||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||
CURRENT_PROJECT_VERSION = 5;
|
||||
DEVELOPMENT_ASSET_PATHS = Runner/Assets.xcassets;
|
||||
DEVELOPMENT_TEAM = 9N5SRFUGK2;
|
||||
ENABLE_BITCODE = NO;
|
||||
@ -517,7 +509,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0.3;
|
||||
MARKETING_VERSION = 1.0.4;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = ae.gov.fcsc.frontend.ios;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
@ -705,7 +697,7 @@
|
||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||
CURRENT_PROJECT_VERSION = 5;
|
||||
DEVELOPMENT_ASSET_PATHS = Runner/Assets.xcassets;
|
||||
DEVELOPMENT_TEAM = 9N5SRFUGK2;
|
||||
ENABLE_BITCODE = NO;
|
||||
@ -716,7 +708,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0.3;
|
||||
MARKETING_VERSION = 1.0.4;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = ae.gov.fcsc.frontend.ios;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
@ -742,7 +734,7 @@
|
||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||
CURRENT_PROJECT_VERSION = 5;
|
||||
DEVELOPMENT_ASSET_PATHS = Runner/Assets.xcassets;
|
||||
DEVELOPMENT_TEAM = 9N5SRFUGK2;
|
||||
ENABLE_BITCODE = NO;
|
||||
@ -753,7 +745,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0.3;
|
||||
MARKETING_VERSION = 1.0.4;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = ae.gov.fcsc.frontend.ios;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
|
||||
@ -68,7 +68,7 @@
|
||||
<string>remote-notification</string>
|
||||
</array>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
<string>LaunchScreen.storyboard</string>
|
||||
<string>LaunchScreen</string>
|
||||
<key>UIMainStoryboardFile</key>
|
||||
<string>Main</string>
|
||||
<key>UIStatusBarHidden</key>
|
||||
@ -79,10 +79,10 @@
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations~ipad</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationPortraitUpsideDown</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
<string>UIInterfaceOrientationPortraitUpsideDown</string>
|
||||
</array>
|
||||
<key>UNUserNotificationCenterDelegate</key>
|
||||
<string>YES</string>
|
||||
|
||||
72
lib/config/app_links_helper.dart
Normal file
72
lib/config/app_links_helper.dart
Normal file
@ -0,0 +1,72 @@
|
||||
import 'dart:io';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:android_intent_plus/android_intent.dart';
|
||||
import 'package:android_intent_plus/flag.dart';
|
||||
import 'package:app_settings/app_settings.dart';
|
||||
|
||||
class AppLinksHelper {
|
||||
static Future<void> checkAndShowDialogOnce(BuildContext context) async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
final shown = prefs.getBool('supported_links_enabled') ?? false;
|
||||
|
||||
if (!shown) {
|
||||
_showAppLinkDialog(context);
|
||||
}
|
||||
}
|
||||
|
||||
static void _showAppLinkDialog(BuildContext context) {
|
||||
showDialog(
|
||||
context: context,
|
||||
builder: (_) => AlertDialog(
|
||||
title: const Text('Enable App Links'),
|
||||
content: Platform.isIOS
|
||||
? const Text(
|
||||
'To ensure links like www.fcsc.com open directly in this app:\n\n'
|
||||
'1. Open iOS Settings.\n'
|
||||
'2. Scroll down and tap on "Your App Name".\n'
|
||||
'3. Make sure "Allow Universal Links" is enabled (if visible).\n\n'
|
||||
'Note: Some iOS versions do not show this explicitly.',
|
||||
)
|
||||
: const Text(
|
||||
'To enable links like www.fcsc.com to open in this app:\n\n'
|
||||
'1. Tap "Open Settings".\n'
|
||||
'2. Tap "Supported web addresses".\n'
|
||||
'3. Make sure your domain is enabled.\n\n'
|
||||
'This helps open links directly in the app.',
|
||||
),
|
||||
actions: [
|
||||
TextButton(
|
||||
onPressed: () => Navigator.of(context).pop(),
|
||||
child: const Text('Later'),
|
||||
),
|
||||
TextButton(
|
||||
onPressed: () async {
|
||||
Navigator.of(context).pop();
|
||||
|
||||
if (Platform.isIOS) {
|
||||
AppSettings.openAppSettings();
|
||||
} else {
|
||||
_openAppLinkSettingsAndroid();
|
||||
}
|
||||
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
await prefs.setBool('supported_links_enabled', true);
|
||||
},
|
||||
child: const Text('Open Settings'),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
static void _openAppLinkSettingsAndroid() {
|
||||
const packageName = 'ae.gov.fcsc.frontend'; // 🔁 Replace with your app's package
|
||||
final intent = AndroidIntent(
|
||||
action: 'android.settings.APP_OPEN_BY_DEFAULT_SETTINGS',
|
||||
data: 'package:$packageName',
|
||||
flags: <int>[Flag.FLAG_ACTIVITY_NEW_TASK],
|
||||
);
|
||||
intent.launch();
|
||||
}
|
||||
}
|
||||
@ -242,7 +242,7 @@ class _UaenumberWidgetState extends ConsumerState<uaenumberWidget> {
|
||||
color: Color(0xFFAA8E83),
|
||||
fontFamily: context.translate('Roboto', 'NotoKufi'),
|
||||
fontSize: 14,
|
||||
height: 2.0,
|
||||
// height: 1.8,
|
||||
),
|
||||
prefixIconConstraints: BoxConstraints(
|
||||
maxWidth: 42,
|
||||
@ -272,7 +272,7 @@ class _UaenumberWidgetState extends ConsumerState<uaenumberWidget> {
|
||||
},
|
||||
)
|
||||
: null,
|
||||
contentPadding: EdgeInsets.symmetric(vertical: 9, horizontal: 18.0),
|
||||
contentPadding: EdgeInsets.symmetric(vertical: 12, horizontal: 18.0),
|
||||
border: InputBorder.none,
|
||||
// contentPadding:
|
||||
// EdgeInsets.symmetric(vertical: 9, horizontal: 18.0),
|
||||
|
||||
@ -235,10 +235,13 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
|
||||
final adminToken = adminAuth.token;
|
||||
print('adminTokenREgistration- ${adminToken}');
|
||||
var mailId = _emailController.text;
|
||||
final email = mailId.toLowerCase();
|
||||
print('LowerCase $email');
|
||||
// Create user in PocketBase
|
||||
final response = await pb.collection('users').create(body: {
|
||||
'uname': _usernameController.text,
|
||||
'email': _emailController.text,
|
||||
'email': email,
|
||||
'password': _passwordController.text,
|
||||
'passwordConfirm': _passwordController.text,
|
||||
'status': 'Pending',
|
||||
|
||||
@ -2220,6 +2220,70 @@ class _ChartScreen1State extends ConsumerState<ChartScreen1> {
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> shareCurrentPage(BuildContext context, bool isSharing) async {
|
||||
if (isSharing) return; // Prevent multiple taps
|
||||
|
||||
isSharing = true;
|
||||
setState(() {
|
||||
isLoading = true;
|
||||
});
|
||||
|
||||
try {
|
||||
final String currentRoute = GoRouterState.of(context).uri.toString();
|
||||
final String baseAppLink = 'https://www.fcsc.com';
|
||||
final String shareLink = '$baseAppLink$currentRoute';
|
||||
final String shareText = 'Check this out!\n\n$shareLink';
|
||||
print('Generated Share Link: $shareLink');
|
||||
|
||||
// Optional: Capture SVG to image
|
||||
final String svgAssetPath = 'assets/backgrounds/share/fcsc.svg';
|
||||
final screenshotController = ScreenshotController();
|
||||
final svgWidget = SvgPicture.asset(
|
||||
svgAssetPath,
|
||||
width: 200,
|
||||
height: 200,
|
||||
);
|
||||
|
||||
final Uint8List? capturedImage =
|
||||
await screenshotController.captureFromWidget(
|
||||
Material(child: svgWidget),
|
||||
);
|
||||
|
||||
if (capturedImage == null) {
|
||||
print('SVG capture failed, proceeding without image.');
|
||||
await Share.share(shareText, subject: 'App Link');
|
||||
} else {
|
||||
final directory = await getTemporaryDirectory();
|
||||
final file = File('${directory.path}/share_image.png');
|
||||
await file.writeAsBytes(capturedImage);
|
||||
|
||||
await Share.shareXFiles(
|
||||
[XFile(file.path)],
|
||||
text: shareText,
|
||||
subject: 'Shared Content',
|
||||
);
|
||||
|
||||
await file.delete();
|
||||
}
|
||||
setState(() {
|
||||
isLoading = false;
|
||||
});
|
||||
} catch (e) {
|
||||
setState(() {
|
||||
isLoading = false;
|
||||
});
|
||||
print("Error sharing content: $e");
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(content: Text('Error sharing: ${e.toString()}')),
|
||||
);
|
||||
} finally {
|
||||
setState(() {
|
||||
isLoading = false;
|
||||
});
|
||||
isSharing = false; // Reset flag
|
||||
}
|
||||
}
|
||||
|
||||
// double calculateAspectRatio(int crossAxisCount, List<dynamic> cardData) {
|
||||
// if (cardData.any((item) =>
|
||||
// item['chart_type'] == 'total' || item['chart_type'] == 'average')) {
|
||||
@ -2890,56 +2954,7 @@ class _ChartScreen1State extends ConsumerState<ChartScreen1> {
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> shareCurrentPage(BuildContext context, bool isSharing) async {
|
||||
if (isSharing) return; // Prevent multiple taps
|
||||
|
||||
isSharing = true;
|
||||
try {
|
||||
final String currentRoute = GoRouterState.of(context).uri.toString();
|
||||
final String baseAppLink = 'https://www.fcsc.com';
|
||||
final String shareLink = '$baseAppLink$currentRoute';
|
||||
final String shareText = 'Check this out!\n\n$shareLink';
|
||||
print('Generated Share Link: $shareLink');
|
||||
|
||||
// Optional: Capture SVG to image
|
||||
final String svgAssetPath = 'assets/backgrounds/share/fcsc.svg';
|
||||
final screenshotController = ScreenshotController();
|
||||
final svgWidget = SvgPicture.asset(
|
||||
svgAssetPath,
|
||||
width: 200,
|
||||
height: 200,
|
||||
);
|
||||
|
||||
final Uint8List? capturedImage =
|
||||
await screenshotController.captureFromWidget(
|
||||
Material(child: svgWidget),
|
||||
);
|
||||
|
||||
if (capturedImage == null) {
|
||||
print('SVG capture failed, proceeding without image.');
|
||||
await Share.share(shareText, subject: 'App Link');
|
||||
} else {
|
||||
final directory = await getTemporaryDirectory();
|
||||
final file = File('${directory.path}/share_image.png');
|
||||
await file.writeAsBytes(capturedImage);
|
||||
|
||||
await Share.shareXFiles(
|
||||
[XFile(file.path)],
|
||||
text: shareText,
|
||||
subject: 'Shared Content',
|
||||
);
|
||||
|
||||
await file.delete();
|
||||
}
|
||||
} catch (e) {
|
||||
print("Error sharing content: $e");
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(content: Text('Error sharing: ${e.toString()}')),
|
||||
);
|
||||
} finally {
|
||||
isSharing = false; // Reset flag
|
||||
}
|
||||
}
|
||||
|
||||
// Function to convert hex color string to Color
|
||||
Color _getColorFromHex(String hexColor) {
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
import 'dart:convert';
|
||||
import 'dart:math';
|
||||
import 'dart:math' as math;
|
||||
|
||||
import 'package:fl_chart/fl_chart.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
@ -315,9 +316,9 @@ class ChartWidget extends StatelessWidget {
|
||||
// color: adjustColor(bodyColor, index), // Adjust alpha dynamically
|
||||
color: uniqueColors[index % uniqueColors.length],
|
||||
// title: '${percentage.toStringAsFixed(1)}%',
|
||||
title: percentage >= 0.1 ? '${percentage.toStringAsFixed(1)}%' : '',
|
||||
// title: percentage >= 0.1 ? '$displayTitle\n${percentage.toStringAsFixed(1)}%' : '',
|
||||
radius: isTouched ? 70 : 50,
|
||||
// title: percentage >= 0.1 ? '${percentage.toStringAsFixed(1)}%' : '',
|
||||
title: percentage >= 0.1 ? '$displayTitle\n${percentage.toStringAsFixed(1)}%' : '',
|
||||
radius: isTouched ? 60 : 50,
|
||||
|
||||
// Increase size when touched
|
||||
titleStyle: TextStyle(
|
||||
@ -330,8 +331,8 @@ class ChartWidget extends StatelessWidget {
|
||||
color: Colors.black,
|
||||
// color: Colors.white,
|
||||
),
|
||||
titlePositionPercentageOffset: 1.4,
|
||||
// titlePositionPercentageOffset: 1.7,
|
||||
// titlePositionPercentageOffset: 1.4,
|
||||
titlePositionPercentageOffset: 1.8,
|
||||
);
|
||||
}).toList();
|
||||
}
|
||||
@ -2948,7 +2949,395 @@ class ChartWidget extends StatelessWidget {
|
||||
_buildChartLegend(groupedCrops, parsedChartBarColors, uniqueColors,context),
|
||||
],
|
||||
);
|
||||
// case 'd_chart_grouped_bar_horizantal':
|
||||
case 'demo_line':
|
||||
print('demo_line $groupByValues');
|
||||
Map<String, Color> groupColorMap = {};
|
||||
int colorIndex = 0;
|
||||
|
||||
var chartBarColors = chartData['chart_bar_color'] ?? {};
|
||||
Map<String, String> barColorsMap = {};
|
||||
chartBarColors.forEach((key, value) {
|
||||
barColorsMap[key] = value.toString(); // Ensure values are strings
|
||||
});
|
||||
bool hasBarColors = barColorsMap.isNotEmpty;
|
||||
|
||||
var chartBarColorsRaw = chartData['chart_bar_color'] ?? {};
|
||||
|
||||
// Convert LinkedMap<dynamic, dynamic> to Map<String, String>
|
||||
Map<String, String> chartBarColrs = Map<String, String>.from(
|
||||
chartBarColorsRaw,
|
||||
);
|
||||
|
||||
// Now map to Color
|
||||
Map<String, Color> parsedChartBarColors = chartBarColrs.map((
|
||||
key,
|
||||
value,
|
||||
) {
|
||||
return MapEntry(key, _hexToColor(value));
|
||||
});
|
||||
|
||||
print('parsedChartBarColors1 - $parsedChartBarColors');
|
||||
|
||||
for (String group in groupByValues) {
|
||||
if (hasBarColors &&
|
||||
chartData['dataset'] == 'population' &&
|
||||
parsedChartBarColors.containsKey(group)) {
|
||||
groupColorMap[group] = parsedChartBarColors[group]!;
|
||||
} else {
|
||||
groupColorMap[group] = uniqueColors[colorIndex % uniqueColors.length];
|
||||
colorIndex++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
print('Group-Color Map: $groupColorMap');
|
||||
|
||||
// Extract all years from the chart data
|
||||
List<int> years = (chartData['response'] as List<dynamic>)
|
||||
.map<int>(
|
||||
(entry) =>
|
||||
int.tryParse(entry['ObsKey'][groupByKey] ?? '0') ?? 0,
|
||||
).toList();
|
||||
years.sort();
|
||||
print(years);
|
||||
print('years $years');
|
||||
|
||||
if (years.isEmpty) {
|
||||
// Return an empty chart if no data
|
||||
return LineChart(
|
||||
LineChartData(
|
||||
titlesData: FlTitlesData(show: false),
|
||||
lineBarsData: [],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
print('LnTrnd1.2');
|
||||
|
||||
// Find the maximum year and calculate the range for the last 5 years
|
||||
int maxYear = years.reduce((a, b) => a > b ? a : b);
|
||||
int minYear = maxYear - 5;
|
||||
|
||||
// Filter chart data to only include entries within the last 5 years
|
||||
List<dynamic> filteredData =
|
||||
(chartData['response'] as List<dynamic>).where((entry) {
|
||||
int year = int.tryParse(entry['ObsKey'][groupByKey] ?? '0') ?? 0;
|
||||
return year >= minYear && year <= maxYear;
|
||||
}).toList();
|
||||
print('LnTrnd2 $filteredData');
|
||||
|
||||
final Map<String, List<Map<String, dynamic>>> groupedData = {};
|
||||
|
||||
// Step 1: Group data by PLANT_TYPE
|
||||
for (var item in filteredData) {
|
||||
final plantType = item['ObsKey'][groupByKey];
|
||||
groupedData.putIfAbsent(plantType, () => []).add(item);
|
||||
}
|
||||
|
||||
// Step 2: Convert grouped data into List<LineChartBarData>
|
||||
final List<LineChartBarData> lineBars = [];
|
||||
final List<Color> colorPalette = [
|
||||
Color(0xFF6097CD),
|
||||
Color(0xFFD086A7),
|
||||
Color(0xFF98BCE5),
|
||||
Color(0xFFA7B5C5),
|
||||
Color(0xFFBED3EC),
|
||||
Color(0xFFD4E3F4),
|
||||
];
|
||||
|
||||
|
||||
String formatNumber(double value) {
|
||||
if (value >= 1e12) {
|
||||
return '${(value / 1e12).toStringAsFixed(2)}T';
|
||||
} else if (value >= 1e9) {
|
||||
return '${(value / 1e9).toStringAsFixed(2)}B';
|
||||
} else if (value >= 1e6) {
|
||||
return '${(value / 1e6).toStringAsFixed(2)}M';
|
||||
} else if (value >= 1e3) {
|
||||
return '${(value / 1e3).toStringAsFixed(2)}K';
|
||||
} else {
|
||||
return value.toStringAsFixed(2); // No decimals for small numbers
|
||||
}
|
||||
}
|
||||
|
||||
final getXValue = chartData['chart_type_json']['x'] ?? '';
|
||||
groupedData.forEach((plantType, entries) {
|
||||
final spots = entries.map((entry) {
|
||||
final year = double.tryParse(entry['ObsKey'][getXValue].toString()) ?? 0;
|
||||
final value = double.tryParse(entry['ObsValue']['Value'].toString()) ?? 0;
|
||||
return FlSpot(year, value);
|
||||
}).toList()
|
||||
..sort((a, b) => a.x.compareTo(b.x)); // Sort by year
|
||||
final baseColor = groupColorMap[plantType] ?? Colors.grey;
|
||||
lineBars.add(
|
||||
LineChartBarData(
|
||||
spots: spots,
|
||||
isCurved: true,
|
||||
barWidth: 3,
|
||||
// color: groupColorMap[plantType] ?? Colors.grey,
|
||||
color: baseColor.withOpacity(0.9),
|
||||
dotData: FlDotData(show: true),
|
||||
belowBarData: BarAreaData(
|
||||
show: true,
|
||||
gradient: LinearGradient(
|
||||
colors: [
|
||||
// baseColor.withOpacity(0.2), // visible base color
|
||||
// Colors.white, // fade to white
|
||||
baseColor.withOpacity(0.4), // increase opacity
|
||||
baseColor.withOpacity(0.0), // fade to transparent (not white)
|
||||
],
|
||||
stops: [
|
||||
0.2, // shift teal color start downward (20% from the top)
|
||||
1.0, // white at the bottom
|
||||
],
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
),
|
||||
),
|
||||
showingIndicators: List.generate(spots.length, (index) => index),
|
||||
|
||||
),
|
||||
);
|
||||
colorIndex++;
|
||||
});
|
||||
|
||||
return Scaffold(
|
||||
backgroundColor: Colors.white,
|
||||
body: Padding(
|
||||
padding: const EdgeInsets.all(10),
|
||||
child: LayoutBuilder(
|
||||
builder: (context, constraints) {
|
||||
final chartWidth = constraints.maxWidth;
|
||||
final chartHeight = constraints.maxHeight;
|
||||
final allSpots = lineBars.expand((line) => line.spots);
|
||||
final minY = allSpots.map((e) => e.y).reduce((a, b) => a < b ? a : b);
|
||||
final maxY = allSpots.map((e) => e.y).reduce((a, b) => a > b ? a : b);
|
||||
|
||||
|
||||
final xValues = allSpots.map((e) => e.x).toList();
|
||||
final minX = xValues.reduce((a, b) => a < b ? a : b).toInt();
|
||||
final maxX = xValues.reduce((a, b) => a > b ? a : b).toInt();
|
||||
|
||||
final paddingFactor = 0.3; // 10% extra padding
|
||||
|
||||
final chartMinY = minY - (maxY - minY) * paddingFactor;
|
||||
final chartMaxY = maxY + (maxY - minY) * paddingFactor;
|
||||
|
||||
|
||||
return Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.center, // ensures center alignment
|
||||
children: [
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(top: 0),
|
||||
child: Text(
|
||||
chartData['chart_heading'] ?? 'Production Quantity by Crop Type (Metric Tonne)',
|
||||
style: TextStyle(
|
||||
fontFamily: context.translate('Roboto', 'NotoKufi'),
|
||||
fontSize: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
),
|
||||
// SizedBox(height: 6),
|
||||
Expanded(
|
||||
child: Stack(
|
||||
children: [
|
||||
LineChart(
|
||||
LineChartData(
|
||||
minY: chartMinY,
|
||||
maxY: chartMaxY,
|
||||
lineBarsData: lineBars,
|
||||
clipData: FlClipData.all(), // make sure this doesn't clip the left side
|
||||
|
||||
// Add space for tooltip/dot
|
||||
// extraLeftTitlesReservedWidth: 24,
|
||||
titlesData: FlTitlesData(
|
||||
bottomTitles: AxisTitles(
|
||||
sideTitles: SideTitles(
|
||||
showTitles: true,
|
||||
getTitlesWidget: (value, meta) {
|
||||
const style = TextStyle(
|
||||
color: Colors.black,
|
||||
fontSize: 10,
|
||||
);
|
||||
|
||||
// Show only for full years
|
||||
if (value.toInt() >= 2013 && value.toInt() <= 2022) {
|
||||
return Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
// Top tick mark (simulated using a container)
|
||||
Container(
|
||||
width: 1,
|
||||
height: 8,
|
||||
color: Colors.black,
|
||||
margin: EdgeInsets.only(bottom: 2),
|
||||
),
|
||||
Text(value.toInt().toString(), style: style),
|
||||
],
|
||||
);
|
||||
}
|
||||
return const SizedBox.shrink();
|
||||
},
|
||||
reservedSize: 30,
|
||||
interval: 1,
|
||||
),
|
||||
),
|
||||
leftTitles: AxisTitles(
|
||||
sideTitles: SideTitles(
|
||||
showTitles: false,
|
||||
// interval: 5,
|
||||
reservedSize: 90,
|
||||
getTitlesWidget: (value, _) =>
|
||||
Text('${value.toInt()}', style: TextStyle(fontSize: 12)),
|
||||
),
|
||||
),
|
||||
topTitles: AxisTitles(sideTitles: SideTitles(showTitles: false)),
|
||||
rightTitles: AxisTitles(sideTitles: SideTitles(showTitles: false)),
|
||||
),
|
||||
borderData: FlBorderData(
|
||||
show: true,
|
||||
border: const Border(
|
||||
left: BorderSide.none,
|
||||
bottom: BorderSide(color: Colors.black),
|
||||
),
|
||||
),
|
||||
gridData: FlGridData(show: false),
|
||||
lineTouchData: LineTouchData(
|
||||
enabled: true,
|
||||
touchTooltipData: LineTouchTooltipData(
|
||||
// tooltipBgColor: Colors.black.withOpacity(0.7),
|
||||
fitInsideHorizontally: true,
|
||||
fitInsideVertically: true,
|
||||
getTooltipItems: (spots) {
|
||||
return spots.map((spot) {
|
||||
final x = spot.x.toInt();
|
||||
// if (x == minX || x == maxX) return null;
|
||||
return LineTooltipItem(
|
||||
formatNumber(spot.y),
|
||||
const TextStyle(color: Colors.white),
|
||||
);
|
||||
}).toList();
|
||||
},
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
// ...lineBars.map((barData) {
|
||||
// final List<FlSpot> spots = barData.spots;
|
||||
// if (spots.isEmpty) return const SizedBox.shrink();
|
||||
//
|
||||
// final firstSpot = spots.first;
|
||||
// final lastSpot = spots.last;
|
||||
//
|
||||
// return Stack(
|
||||
// children: [
|
||||
// // First Y value label
|
||||
// Positioned(
|
||||
// left: 10,
|
||||
// top: (1 - (firstSpot.y - chartMinY) / (chartMaxY - chartMinY)) * chartHeight - 60,
|
||||
// bottom: 0,
|
||||
//
|
||||
// // top: ((1 - (firstSpot.y - minY) / (m axY - minY)) * chartHeight)
|
||||
// // .clamp(0.0, chartHeight - 20),
|
||||
// child: Text(
|
||||
// formatNumber(firstSpot.y),
|
||||
// style: TextStyle(
|
||||
// fontSize: 12,
|
||||
// fontWeight: FontWeight.bold,
|
||||
// color: Colors.black87,
|
||||
// // color: barData.color, // use line color for label
|
||||
// ),
|
||||
// ),
|
||||
// ),
|
||||
// // Last Y value label
|
||||
// Positioned(
|
||||
// right: 10,
|
||||
// top: (1 - (lastSpot.y - chartMinY) / (chartMaxY - chartMinY)) * chartHeight - 60,
|
||||
// bottom: 0,
|
||||
// // top: ((1 - (lastSpot.y - minY) / (maxY - minY)) * chartHeight)
|
||||
// // .clamp(0.0, chartHeight - 20),
|
||||
// child: Text(
|
||||
// formatNumber(lastSpot.y),
|
||||
// style: TextStyle(
|
||||
// fontSize: 12,
|
||||
// fontWeight: FontWeight.bold,
|
||||
// // color: barData.color,
|
||||
// color: Colors.black87,
|
||||
// ),
|
||||
// ),
|
||||
// ),
|
||||
// ],
|
||||
// );
|
||||
// }).toList(),
|
||||
...lineBars.expand((barData) {
|
||||
final List<FlSpot> spots = barData.spots;
|
||||
final color = barData.color ?? Colors.black;
|
||||
|
||||
return spots.map((spot) {
|
||||
final xPos = ((spot.x - minX) / (maxX - minX)) * chartWidth;
|
||||
final yPos = (1 - (spot.y - chartMinY) / (chartMaxY - chartMinY)) * chartHeight;
|
||||
// Prevent label from going outside on the left
|
||||
double adjustedLeft = math.max(0, xPos - 30);
|
||||
return Stack(
|
||||
children: [
|
||||
Positioned(
|
||||
left: adjustedLeft, // fine-tune horizontal position
|
||||
top: yPos - 60, // fine-tune vertical position
|
||||
child: Text(
|
||||
formatNumber(spot.y),
|
||||
textAlign: TextAlign.right,
|
||||
style: TextStyle(
|
||||
fontSize: 9,
|
||||
fontWeight: FontWeight.w500,
|
||||
// color: color,
|
||||
color: Colors.black,
|
||||
),
|
||||
),
|
||||
)
|
||||
]
|
||||
);
|
||||
|
||||
});
|
||||
}).toList(),
|
||||
|
||||
],
|
||||
),
|
||||
),
|
||||
SizedBox(height: 12),
|
||||
Wrap( // <-- Legend added here
|
||||
spacing: 12,
|
||||
runSpacing: 8,
|
||||
children: groupByValues.map((group) {
|
||||
return Row(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
Container(width: 12, height: 12, color: groupColorMap[group]),
|
||||
SizedBox(width: 6),
|
||||
Text(
|
||||
group,
|
||||
style: TextStyle(
|
||||
fontSize: 14,
|
||||
fontFamily: context.translate('Roboto', 'NotoKufi'),
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
}).toList(),
|
||||
),
|
||||
],
|
||||
);
|
||||
|
||||
|
||||
|
||||
},
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
|
||||
// case 'd_chart_grouped_bar_horizantal':
|
||||
// return DChartBar(
|
||||
// vertical: false, // <--- Important: rotate the chart
|
||||
// barGroupingType: BarGroupingType.grouped,
|
||||
@ -3175,30 +3564,6 @@ class ChartWidget extends StatelessWidget {
|
||||
// Iterate through each group and generate line data
|
||||
for (String group in groupByValues) {
|
||||
print('lineGrp1');
|
||||
|
||||
// List<FlSpot> spots = filteredData
|
||||
// .where((entry) => entry['ObsKey'][groupByKey] == group)
|
||||
// .map<FlSpot>((entry) {
|
||||
// print("FindTimePeriod");
|
||||
// print(entry['ObsKey'][groupByKey]);
|
||||
// double xValue = double.parse(entry['ObsKey']['TIME_PERIOD']);
|
||||
// double yValue = double.parse(entry['ObsValue']['Value']);
|
||||
// return FlSpot(xValue, yValue);
|
||||
// }).toList();
|
||||
|
||||
// List<FlSpot> spots = filteredData
|
||||
// .where((entry) => entry['ObsKey'][groupByKey] == group)
|
||||
// .map<FlSpot>((entry) {
|
||||
// String timePeriod = entry['ObsKey']['TIME_PERIOD'];
|
||||
// print("FindTimePeriod: $timePeriod");
|
||||
//
|
||||
// double xValue = parseTimePeriodToDouble(timePeriod); // Convert to double for graph plotting
|
||||
// double yValue = double.parse(entry['ObsValue']['Value']);
|
||||
// print('TimePeriod: $timePeriod, xValue: $xValue, yValue: $yValue');
|
||||
//
|
||||
// return FlSpot(xValue, yValue);
|
||||
// }).toList();
|
||||
|
||||
List<FlSpot> spots = filteredData
|
||||
.where((entry) => entry['ObsKey'][groupByKey] == group)
|
||||
.map<FlSpot>((entry) {
|
||||
@ -3235,23 +3600,6 @@ class ChartWidget extends StatelessWidget {
|
||||
|
||||
print('spots - $spots');
|
||||
|
||||
// lineChartLabel = spots;
|
||||
|
||||
// List<FlSpot> spots = filteredData
|
||||
// .where((entry) => entry['ObsKey'][groupByKey] == group)
|
||||
// .map<FlSpot>((entry) {
|
||||
// String timePeriod = entry['ObsKey']['TIME_PERIOD'];
|
||||
// List<String> parts = timePeriod.split('-'); // Split "2017-01" into ["2017", "01"]
|
||||
//
|
||||
// double year = double.parse(parts[0]); // Convert "2017" to 2017.0
|
||||
// double month = double.parse(parts[1]) / 12; // Convert "01" to 1/12
|
||||
//
|
||||
// double xValue = year + month; // E.g., "2017-06" becomes 2017.5
|
||||
// double yValue = double.parse(entry['ObsValue']['Value']);
|
||||
//
|
||||
// return FlSpot(xValue, yValue);
|
||||
// }).toList();
|
||||
|
||||
print('lineGrp2');
|
||||
// Add a line for this group
|
||||
lineBars.add(
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:android_intent_plus/android_intent.dart';
|
||||
import 'package:android_intent_plus/flag.dart';
|
||||
import 'package:external_repos/external_repos.dart';
|
||||
import 'package:firebase_messaging/firebase_messaging.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
@ -10,6 +12,7 @@ import 'package:go_router/go_router.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:the_validator/the_validator.dart';
|
||||
import 'package:uae_stat/config/app_links_helper.dart';
|
||||
import 'package:uae_stat/config/connectivity_provider.dart';
|
||||
import 'package:uae_stat/config/my_theme.dart';
|
||||
import 'package:uae_stat/domain/use_cases/auth_use_case.dart';
|
||||
@ -257,6 +260,59 @@ class LoginRoute extends HookConsumerWidget {
|
||||
};
|
||||
}
|
||||
|
||||
void _showAppLinkDialog(BuildContext context) {
|
||||
showDialog(
|
||||
context: context,
|
||||
builder: (_) => AlertDialog(
|
||||
title: const Text('Enable App Links'),
|
||||
content: const Text(
|
||||
'To enable links like www.fcsc.com to open in this app:\n\n'
|
||||
'1. Tap "Open Settings".\n'
|
||||
'2. Then tap on "Supported web addresses".\n'
|
||||
'3. Make sure your domain is enabled.\n\n'
|
||||
'This helps open web links directly in the app.',
|
||||
),
|
||||
actions: [
|
||||
TextButton(
|
||||
onPressed: () => Navigator.of(context).pop(),
|
||||
child: const Text('Later'),
|
||||
),
|
||||
TextButton(
|
||||
onPressed: () async {
|
||||
Navigator.of(context).pop();
|
||||
openAppLinkSettings();
|
||||
|
||||
// Optionally mark as shown so dialog doesn't show again
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
await prefs.setBool('supported_links_enabled', true);
|
||||
},
|
||||
child: const Text('Open Settings'),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
void openAppLinkSettings() {
|
||||
const packageName = 'ae.gov.fcsc.frontend'; // Replace with your app's package
|
||||
final intent = AndroidIntent(
|
||||
action: 'android.settings.APP_OPEN_BY_DEFAULT_SETTINGS',
|
||||
data: 'package:$packageName',
|
||||
flags: <int>[Flag.FLAG_ACTIVITY_NEW_TASK],
|
||||
);
|
||||
intent.launch();
|
||||
}
|
||||
|
||||
Future<void> checkAndShowDialogOnce(BuildContext context) async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
final shown = prefs.getBool('supported_links_enabled') ?? false;
|
||||
|
||||
if (!shown) {
|
||||
_showAppLinkDialog(context);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
ref.listen<AsyncValue<bool>>(connectivityProvider, (previous, hasInternet) {
|
||||
@ -265,6 +321,23 @@ class LoginRoute extends HookConsumerWidget {
|
||||
}
|
||||
});
|
||||
|
||||
// useEffect(() {
|
||||
// // Wait until first frame is rendered
|
||||
// Future.microtask(() {
|
||||
// checkAndShowDialogOnce(context);
|
||||
// });
|
||||
// return null;
|
||||
// }, []);
|
||||
|
||||
// if(!isWeb){
|
||||
// WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
// AppLinksHelper.checkAndShowDialogOnce(context);
|
||||
// });
|
||||
// }
|
||||
|
||||
|
||||
|
||||
|
||||
final hasValidated = useState(false);
|
||||
final locale = ref.watch(localeProvider);
|
||||
final emailCtl = useTextEditingController();
|
||||
@ -438,13 +511,15 @@ class LoginRoute extends HookConsumerWidget {
|
||||
hasValidated.value = true;
|
||||
final isValid = formKey.currentState!.validate();
|
||||
if (!isValid) return;
|
||||
var mailId = emailCtl.text;
|
||||
final email = mailId.toLowerCase();
|
||||
final session = await context.loaderWithErrorDialog(
|
||||
() => ref
|
||||
.read(
|
||||
authUseCaseProvider.notifier,
|
||||
)
|
||||
.login(
|
||||
emailCtl.text,
|
||||
email,
|
||||
pwCtl.text,
|
||||
),
|
||||
errorDialogBuilder: (
|
||||
|
||||
@ -6,7 +6,9 @@ import FlutterMacOS
|
||||
import Foundation
|
||||
|
||||
import app_links
|
||||
import app_settings
|
||||
import connectivity_plus
|
||||
import device_info_plus
|
||||
import file_selector_macos
|
||||
import firebase_core
|
||||
import firebase_messaging
|
||||
@ -21,7 +23,9 @@ import webview_flutter_wkwebview
|
||||
|
||||
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
|
||||
AppLinksMacosPlugin.register(with: registry.registrar(forPlugin: "AppLinksMacosPlugin"))
|
||||
AppSettingsPlugin.register(with: registry.registrar(forPlugin: "AppSettingsPlugin"))
|
||||
ConnectivityPlusPlugin.register(with: registry.registrar(forPlugin: "ConnectivityPlusPlugin"))
|
||||
DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin"))
|
||||
FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin"))
|
||||
FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin"))
|
||||
FLTFirebaseMessagingPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseMessagingPlugin"))
|
||||
|
||||
50
pubspec.lock
50
pubspec.lock
@ -33,6 +33,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.12.0"
|
||||
android_intent_plus:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: android_intent_plus
|
||||
sha256: dfc1fd3a577205ae8f11e990fb4ece8c90cceabbee56fcf48e463ecf0bd6aae3
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.3.0"
|
||||
ansicolor:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -73,6 +81,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.4"
|
||||
app_settings:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: app_settings
|
||||
sha256: "3e46c561441e5820d3a25339bf8b51b9e45a5f686873851a20c257a530917795"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.1.1"
|
||||
archive:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -377,6 +393,22 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.7.11"
|
||||
device_info_plus:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: device_info_plus
|
||||
sha256: "0c6396126421b590089447154c5f98a5de423b70cfb15b1578fd018843ee6f53"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "11.4.0"
|
||||
device_info_plus_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: device_info_plus_platform_interface
|
||||
sha256: "0b04e02b30791224b31969eb1b50d723498f402971bff3630bca2ba839bd1ed2"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "7.0.2"
|
||||
dio:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -444,10 +476,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: ffi
|
||||
sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6"
|
||||
sha256: "289279317b4b16eb2bb7e271abccd4bf84ec9bdcbe999e278a94b804f5630418"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.3"
|
||||
version: "2.1.4"
|
||||
file:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -1763,10 +1795,18 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: win32
|
||||
sha256: daf97c9d80197ed7b619040e86c8ab9a9dad285e7671ee7390f9180cc828a51e
|
||||
sha256: "329edf97fdd893e0f1e3b9e88d6a0e627128cc17cc316a8d67fda8f1451178ba"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.10.1"
|
||||
version: "5.13.0"
|
||||
win32_registry:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: win32_registry
|
||||
sha256: "6f1b564492d0147b330dd794fee8f512cec4977957f310f9951b5f9d83618dae"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.0"
|
||||
xdg_directories:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -1792,5 +1832,5 @@ packages:
|
||||
source: hosted
|
||||
version: "3.1.3"
|
||||
sdks:
|
||||
dart: ">=3.7.0-0 <4.0.0"
|
||||
dart: ">=3.7.0 <4.0.0"
|
||||
flutter: ">=3.27.0"
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
name: uae_stat
|
||||
description: "View statistics about the UAE from the Federal Center for Statistics and Competitiveness."
|
||||
publish_to: "none"
|
||||
#version: 1.0.55+56
|
||||
version: 1.0.3+4
|
||||
#version: 1.0.58+59
|
||||
version: 1.0.4+5
|
||||
|
||||
environment:
|
||||
sdk: ">=3.2.3 <4.0.0"
|
||||
@ -72,6 +72,9 @@ dependencies:
|
||||
d_chart: ^2.10.5
|
||||
firebase_core: ^3.13.0
|
||||
firebase_messaging: ^15.2.5
|
||||
device_info_plus: ^11.4.0
|
||||
android_intent_plus: ^5.3.0
|
||||
app_settings: ^6.1.1
|
||||
|
||||
dependency_overrides:
|
||||
fading_edge_scrollview: ^4.1.1
|
||||
|
||||
Loading…
Reference in New Issue
Block a user