| /Users/daivph/fvm/versions/3.7.12 | |||||
| /Users/daivph/fvm/versions/3.13.9 |
| { | { | ||||
| "flutterSdkVersion": "3.7.12", | |||||
| "flutterSdkVersion": "3.13.9", | |||||
| "flavors": {} | "flavors": {} | ||||
| } | } |
| "name": "mobile-app", | "name": "mobile-app", | ||||
| "request": "launch", | "request": "launch", | ||||
| "type": "dart", | "type": "dart", | ||||
| "args": [ | |||||
| "--no-sound-null-safety" | |||||
| ] | |||||
| // "args": [ | |||||
| // "--no-sound-null-safety" | |||||
| // ] | |||||
| } | } | ||||
| ] | ] | ||||
| } | } |
| { | { | ||||
| "dart.flutterSdkPath": "~/fvm/versions/3.7.12", | |||||
| "dart.flutterSdkPath": "~/fvm/versions/3.13.9", | |||||
| "java.configuration.updateBuildConfiguration": "interactive" | "java.configuration.updateBuildConfiguration": "interactive" | ||||
| } | } |
| { | { | ||||
| "project_info": { | "project_info": { | ||||
| "project_number": "145264060024", | |||||
| "firebase_url": "https://smartfarm-73071-default-rtdb.firebaseio.com", | |||||
| "project_id": "smartfarm-73071", | |||||
| "storage_bucket": "smartfarm-73071.appspot.com" | |||||
| "project_number": "305595108522", | |||||
| "firebase_url": "https://aztrace-nhatkycanhtac-default-rtdb.asia-southeast1.firebasedatabase.app", | |||||
| "project_id": "aztrace-nhatkycanhtac", | |||||
| "storage_bucket": "aztrace-nhatkycanhtac.appspot.com" | |||||
| }, | }, | ||||
| "client": [ | "client": [ | ||||
| { | { | ||||
| "client_info": { | "client_info": { | ||||
| "mobilesdk_app_id": "1:145264060024:android:5d973afbfdac70c8802f8d", | |||||
| "mobilesdk_app_id": "1:305595108522:android:92fd0887475dc2723754d3", | |||||
| "android_client_info": { | "android_client_info": { | ||||
| "package_name": "vn.azteam.farmdemo" | "package_name": "vn.azteam.farmdemo" | ||||
| } | } | ||||
| }, | }, | ||||
| "oauth_client": [ | |||||
| { | |||||
| "client_id": "145264060024-fpp54hk2mhfpk5nj1m23124p0nkr72l6.apps.googleusercontent.com", | |||||
| "client_type": 3 | |||||
| } | |||||
| ], | |||||
| "oauth_client": [], | |||||
| "api_key": [ | "api_key": [ | ||||
| { | { | ||||
| "current_key": "AIzaSyAVC0ArwKauoiTms8VUpn7Y9_hY0MX5V3Y" | |||||
| "current_key": "AIzaSyAzNujY3dPJgMP5p8FvH4SRkxv7dv8DH5I" | |||||
| } | } | ||||
| ], | ], | ||||
| "services": { | "services": { | ||||
| "appinvite_service": { | "appinvite_service": { | ||||
| "other_platform_oauth_client": [ | |||||
| { | |||||
| "client_id": "145264060024-fpp54hk2mhfpk5nj1m23124p0nkr72l6.apps.googleusercontent.com", | |||||
| "client_type": 3 | |||||
| } | |||||
| ] | |||||
| "other_platform_oauth_client": [] | |||||
| } | } | ||||
| } | } | ||||
| } | } |
| <uses-permission android:name="android.permission.INTERNET"/> | <uses-permission android:name="android.permission.INTERNET"/> | ||||
| <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> | <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> | ||||
| <uses-permission android:name="android.permission.CAMERA" /> | <uses-permission android:name="android.permission.CAMERA" /> | ||||
| <uses-permission android:name="android.permission.VIBRATE"/> | |||||
| <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> | |||||
| <uses-permission android:name="android.permission.USE_EXACT_ALARM" /> | |||||
| <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> | |||||
| <application | <application | ||||
| android:name=".Application" | android:name=".Application" | ||||
| android:label="Aztrace - Nhật ký canh tác" | android:label="Aztrace - Nhật ký canh tác" | ||||
| <meta-data | <meta-data | ||||
| android:name="com.google.firebase.messaging.default_notification_icon" | android:name="com.google.firebase.messaging.default_notification_icon" | ||||
| android:resource="@mipmap/ic_stat_smartfarm" /> | android:resource="@mipmap/ic_stat_smartfarm" /> | ||||
| <meta-data | |||||
| android:name="com.google.firebase.messaging.default_notification_channel_id" | |||||
| android:value="high_importance_channel" /> | |||||
| <!-- <activity | <!-- <activity | ||||
| android:name="de.mintware.barcode_scan.BarcodeScannerActivity" | android:name="de.mintware.barcode_scan.BarcodeScannerActivity" | ||||
| android:exported="true" | android:exported="true" | ||||
| android:resource="@xml/provider_paths" | android:resource="@xml/provider_paths" | ||||
| tools:replace="android:resource" /> | tools:replace="android:resource" /> | ||||
| </provider> | </provider> | ||||
| <receiver android:exported="false" android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationReceiver" /> | |||||
| <receiver android:exported="false" android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver"> | |||||
| <intent-filter> | |||||
| <action android:name="android.intent.action.BOOT_COMPLETED"/> | |||||
| <action android:name="android.intent.action.MY_PACKAGE_REPLACED"/> | |||||
| <action android:name="android.intent.action.QUICKBOOT_POWERON" /> | |||||
| <action android:name="com.htc.intent.action.QUICKBOOT_POWERON"/> | |||||
| </intent-filter> | |||||
| </receiver> | |||||
| </application> | </application> | ||||
| </manifest> | </manifest> |
| buildscript { | buildscript { | ||||
| ext.kotlin_version = '1.7.21' | |||||
| ext.kotlin_version = '1.9.0' | |||||
| repositories { | repositories { | ||||
| google() | google() | ||||
| jcenter() | jcenter() | ||||
| } | } | ||||
| dependencies { | dependencies { | ||||
| classpath("com.android.tools.build:gradle:7.0.0") | |||||
| classpath 'com.android.tools.build:gradle:7.3.1' | |||||
| classpath 'com.google.gms:google-services:4.3.3' | classpath 'com.google.gms:google-services:4.3.3' | ||||
| classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| task clean(type: Delete) { | |||||
| tasks.register("clean", Delete) { | |||||
| delete rootProject.buildDir | delete rootProject.buildDir | ||||
| } | } |
| - Mantle | - Mantle | ||||
| - SDWebImage | - SDWebImage | ||||
| - SDWebImageWebPCoder | - SDWebImageWebPCoder | ||||
| - flutter_local_notifications (0.0.1): | |||||
| - Flutter | |||||
| - FMDB (2.7.5): | - FMDB (2.7.5): | ||||
| - FMDB/standard (= 2.7.5) | - FMDB/standard (= 2.7.5) | ||||
| - FMDB/standard (2.7.5) | - FMDB/standard (2.7.5) | ||||
| - firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`) | - firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`) | ||||
| - Flutter (from `Flutter`) | - Flutter (from `Flutter`) | ||||
| - flutter_image_compress_common (from `.symlinks/plugins/flutter_image_compress_common/ios`) | - flutter_image_compress_common (from `.symlinks/plugins/flutter_image_compress_common/ios`) | ||||
| - flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`) | |||||
| - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`) | - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`) | ||||
| - open_filex (from `.symlinks/plugins/open_filex/ios`) | - open_filex (from `.symlinks/plugins/open_filex/ios`) | ||||
| - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`) | - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`) | ||||
| - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/ios`) | |||||
| - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) | |||||
| - qr_code_scanner (from `.symlinks/plugins/qr_code_scanner/ios`) | - qr_code_scanner (from `.symlinks/plugins/qr_code_scanner/ios`) | ||||
| - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/ios`) | |||||
| - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`) | |||||
| - sqflite (from `.symlinks/plugins/sqflite/ios`) | - sqflite (from `.symlinks/plugins/sqflite/ios`) | ||||
| SPEC REPOS: | SPEC REPOS: | ||||
| :path: Flutter | :path: Flutter | ||||
| flutter_image_compress_common: | flutter_image_compress_common: | ||||
| :path: ".symlinks/plugins/flutter_image_compress_common/ios" | :path: ".symlinks/plugins/flutter_image_compress_common/ios" | ||||
| flutter_local_notifications: | |||||
| :path: ".symlinks/plugins/flutter_local_notifications/ios" | |||||
| image_picker_ios: | image_picker_ios: | ||||
| :path: ".symlinks/plugins/image_picker_ios/ios" | :path: ".symlinks/plugins/image_picker_ios/ios" | ||||
| open_filex: | open_filex: | ||||
| package_info_plus: | package_info_plus: | ||||
| :path: ".symlinks/plugins/package_info_plus/ios" | :path: ".symlinks/plugins/package_info_plus/ios" | ||||
| path_provider_foundation: | path_provider_foundation: | ||||
| :path: ".symlinks/plugins/path_provider_foundation/ios" | |||||
| :path: ".symlinks/plugins/path_provider_foundation/darwin" | |||||
| qr_code_scanner: | qr_code_scanner: | ||||
| :path: ".symlinks/plugins/qr_code_scanner/ios" | :path: ".symlinks/plugins/qr_code_scanner/ios" | ||||
| shared_preferences_foundation: | shared_preferences_foundation: | ||||
| :path: ".symlinks/plugins/shared_preferences_foundation/ios" | |||||
| :path: ".symlinks/plugins/shared_preferences_foundation/darwin" | |||||
| sqflite: | sqflite: | ||||
| :path: ".symlinks/plugins/sqflite/ios" | :path: ".symlinks/plugins/sqflite/ios" | ||||
| FirebaseMessaging: 0c0ae1eb722ef0c07f7801e5ded8dccd1357d6d4 | FirebaseMessaging: 0c0ae1eb722ef0c07f7801e5ded8dccd1357d6d4 | ||||
| Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 | Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 | ||||
| flutter_image_compress_common: ec1d45c362c9d30a3f6a0426c297f47c52007e3e | flutter_image_compress_common: ec1d45c362c9d30a3f6a0426c297f47c52007e3e | ||||
| flutter_local_notifications: 4cde75091f6327eb8517fa068a0a5950212d2086 | |||||
| FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a | FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a | ||||
| GoogleDataTransport: 54dee9d48d14580407f8f5fbf2f496e92437a2f2 | GoogleDataTransport: 54dee9d48d14580407f8f5fbf2f496e92437a2f2 | ||||
| GoogleUtilities: 13e2c67ede716b8741c7989e26893d151b2b2084 | GoogleUtilities: 13e2c67ede716b8741c7989e26893d151b2b2084 |
| /* Begin PBXBuildFile section */ | /* Begin PBXBuildFile section */ | ||||
| 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; | ||||
| 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; | ||||
| 572C33A325FB79E100842D5E /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 572C33A225FB79E100842D5E /* GoogleService-Info.plist */; }; | |||||
| 57039D382BEF24AA002F4393 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 57039D372BEF24AA002F4393 /* GoogleService-Info.plist */; }; | |||||
| 57EDCFFA2BBC55CE005E5B0A /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 57EDCFF92BBC55CE005E5B0A /* PrivacyInfo.xcprivacy */; }; | 57EDCFFA2BBC55CE005E5B0A /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 57EDCFF92BBC55CE005E5B0A /* PrivacyInfo.xcprivacy */; }; | ||||
| 5A19B8D253A88BC5E5EDE8D2 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9DCE1C984F2603EE87603F8E /* Pods_Runner.framework */; }; | 5A19B8D253A88BC5E5EDE8D2 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9DCE1C984F2603EE87603F8E /* Pods_Runner.framework */; }; | ||||
| 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; | 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; | ||||
| 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; }; | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; }; | ||||
| 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; }; | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; }; | ||||
| 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; }; | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; }; | ||||
| 572C33A225FB79E100842D5E /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; }; | |||||
| 57039D372BEF24AA002F4393 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; }; | |||||
| 57CB5602257E19450029CFCB /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = "<group>"; }; | 57CB5602257E19450029CFCB /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = "<group>"; }; | ||||
| 57EDCFF92BBC55CE005E5B0A /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = PrivacyInfo.xcprivacy; sourceTree = "<group>"; }; | 57EDCFF92BBC55CE005E5B0A /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = PrivacyInfo.xcprivacy; sourceTree = "<group>"; }; | ||||
| 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; }; | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; }; | ||||
| 97C146F01CF9000F007C117D /* Runner */ = { | 97C146F01CF9000F007C117D /* Runner */ = { | ||||
| isa = PBXGroup; | isa = PBXGroup; | ||||
| children = ( | children = ( | ||||
| 572C33A225FB79E100842D5E /* GoogleService-Info.plist */, | |||||
| 57039D372BEF24AA002F4393 /* GoogleService-Info.plist */, | |||||
| 57CB5602257E19450029CFCB /* Runner.entitlements */, | 57CB5602257E19450029CFCB /* Runner.entitlements */, | ||||
| 97C146FA1CF9000F007C117D /* Main.storyboard */, | 97C146FA1CF9000F007C117D /* Main.storyboard */, | ||||
| 97C146FD1CF9000F007C117D /* Assets.xcassets */, | 97C146FD1CF9000F007C117D /* Assets.xcassets */, | ||||
| 97C146E61CF9000F007C117D /* Project object */ = { | 97C146E61CF9000F007C117D /* Project object */ = { | ||||
| isa = PBXProject; | isa = PBXProject; | ||||
| attributes = { | attributes = { | ||||
| LastUpgradeCheck = 1300; | |||||
| LastUpgradeCheck = 1430; | |||||
| ORGANIZATIONNAME = ""; | ORGANIZATIONNAME = ""; | ||||
| TargetAttributes = { | TargetAttributes = { | ||||
| 97C146ED1CF9000F007C117D = { | 97C146ED1CF9000F007C117D = { | ||||
| 57EDCFFA2BBC55CE005E5B0A /* PrivacyInfo.xcprivacy in Resources */, | 57EDCFFA2BBC55CE005E5B0A /* PrivacyInfo.xcprivacy in Resources */, | ||||
| 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, | ||||
| 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, | ||||
| 572C33A325FB79E100842D5E /* GoogleService-Info.plist in Resources */, | |||||
| 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, | ||||
| 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, | ||||
| 57039D382BEF24AA002F4393 /* GoogleService-Info.plist in Resources */, | |||||
| ); | ); | ||||
| runOnlyForDeploymentPostprocessing = 0; | runOnlyForDeploymentPostprocessing = 0; | ||||
| }; | }; | ||||
| files = ( | files = ( | ||||
| ); | ); | ||||
| inputPaths = ( | inputPaths = ( | ||||
| "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", | |||||
| ); | ); | ||||
| name = "Thin Binary"; | name = "Thin Binary"; | ||||
| outputPaths = ( | outputPaths = ( | ||||
| CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; | CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; | ||||
| CODE_SIGN_IDENTITY = "Apple Development"; | CODE_SIGN_IDENTITY = "Apple Development"; | ||||
| CODE_SIGN_STYLE = Automatic; | CODE_SIGN_STYLE = Automatic; | ||||
| CURRENT_PROJECT_VERSION = 23; | |||||
| CURRENT_PROJECT_VERSION = 25; | |||||
| DEVELOPMENT_TEAM = C3DTD2JH94; | DEVELOPMENT_TEAM = C3DTD2JH94; | ||||
| ENABLE_BITCODE = NO; | ENABLE_BITCODE = NO; | ||||
| FRAMEWORK_SEARCH_PATHS = ( | FRAMEWORK_SEARCH_PATHS = ( | ||||
| "$(inherited)", | "$(inherited)", | ||||
| "$(PROJECT_DIR)/Flutter", | "$(PROJECT_DIR)/Flutter", | ||||
| ); | ); | ||||
| MARKETING_VERSION = 1.1.7; | |||||
| MARKETING_VERSION = 1.1.8; | |||||
| PRODUCT_BUNDLE_IDENTIFIER = vn.azteam.farmdemo; | PRODUCT_BUNDLE_IDENTIFIER = vn.azteam.farmdemo; | ||||
| PRODUCT_NAME = "$(TARGET_NAME)"; | PRODUCT_NAME = "$(TARGET_NAME)"; | ||||
| PROVISIONING_PROFILE_SPECIFIER = ""; | PROVISIONING_PROFILE_SPECIFIER = ""; | ||||
| CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; | CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; | ||||
| CODE_SIGN_IDENTITY = "Apple Development"; | CODE_SIGN_IDENTITY = "Apple Development"; | ||||
| CODE_SIGN_STYLE = Automatic; | CODE_SIGN_STYLE = Automatic; | ||||
| CURRENT_PROJECT_VERSION = 23; | |||||
| CURRENT_PROJECT_VERSION = 25; | |||||
| DEVELOPMENT_TEAM = C3DTD2JH94; | DEVELOPMENT_TEAM = C3DTD2JH94; | ||||
| ENABLE_BITCODE = NO; | ENABLE_BITCODE = NO; | ||||
| FRAMEWORK_SEARCH_PATHS = ( | FRAMEWORK_SEARCH_PATHS = ( | ||||
| "$(inherited)", | "$(inherited)", | ||||
| "$(PROJECT_DIR)/Flutter", | "$(PROJECT_DIR)/Flutter", | ||||
| ); | ); | ||||
| MARKETING_VERSION = 1.1.7; | |||||
| MARKETING_VERSION = 1.1.8; | |||||
| PRODUCT_BUNDLE_IDENTIFIER = vn.azteam.farmdemo; | PRODUCT_BUNDLE_IDENTIFIER = vn.azteam.farmdemo; | ||||
| PRODUCT_NAME = "$(TARGET_NAME)"; | PRODUCT_NAME = "$(TARGET_NAME)"; | ||||
| PROVISIONING_PROFILE_SPECIFIER = ""; | PROVISIONING_PROFILE_SPECIFIER = ""; | ||||
| CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; | CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; | ||||
| CODE_SIGN_IDENTITY = "Apple Development"; | CODE_SIGN_IDENTITY = "Apple Development"; | ||||
| CODE_SIGN_STYLE = Automatic; | CODE_SIGN_STYLE = Automatic; | ||||
| CURRENT_PROJECT_VERSION = 23; | |||||
| CURRENT_PROJECT_VERSION = 25; | |||||
| DEVELOPMENT_TEAM = C3DTD2JH94; | DEVELOPMENT_TEAM = C3DTD2JH94; | ||||
| ENABLE_BITCODE = NO; | ENABLE_BITCODE = NO; | ||||
| FRAMEWORK_SEARCH_PATHS = ( | FRAMEWORK_SEARCH_PATHS = ( | ||||
| "$(inherited)", | "$(inherited)", | ||||
| "$(PROJECT_DIR)/Flutter", | "$(PROJECT_DIR)/Flutter", | ||||
| ); | ); | ||||
| MARKETING_VERSION = 1.1.7; | |||||
| MARKETING_VERSION = 1.1.8; | |||||
| PRODUCT_BUNDLE_IDENTIFIER = vn.azteam.farmdemo; | PRODUCT_BUNDLE_IDENTIFIER = vn.azteam.farmdemo; | ||||
| PRODUCT_NAME = "$(TARGET_NAME)"; | PRODUCT_NAME = "$(TARGET_NAME)"; | ||||
| PROVISIONING_PROFILE_SPECIFIER = ""; | PROVISIONING_PROFILE_SPECIFIER = ""; |
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||||
| <Scheme | <Scheme | ||||
| LastUpgradeVersion = "1300" | |||||
| LastUpgradeVersion = "1430" | |||||
| version = "1.3"> | version = "1.3"> | ||||
| <BuildAction | <BuildAction | ||||
| parallelizeBuildables = "YES" | parallelizeBuildables = "YES" |
| import UIKit | import UIKit | ||||
| import Flutter | import Flutter | ||||
| import Firebase | |||||
| @UIApplicationMain | @UIApplicationMain | ||||
| @objc class AppDelegate: FlutterAppDelegate { | @objc class AppDelegate: FlutterAppDelegate { | ||||
| _ application: UIApplication, | _ application: UIApplication, | ||||
| didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? | ||||
| ) -> Bool { | ) -> Bool { | ||||
| FirebaseApp.configure() | |||||
| GeneratedPluginRegistrant.register(with: self) | GeneratedPluginRegistrant.register(with: self) | ||||
| if #available(iOS 10.0, *) { | if #available(iOS 10.0, *) { | ||||
| // For iOS 10 display notification (sent via APNS) | |||||
| UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate | UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate | ||||
| let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound] | |||||
| UNUserNotificationCenter.current().requestAuthorization( | |||||
| options: authOptions, | |||||
| completionHandler: {_, _ in }) | |||||
| } else { | |||||
| let settings: UIUserNotificationSettings = | |||||
| UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil) | |||||
| application.registerUserNotificationSettings(settings) | |||||
| } | } | ||||
| application.registerForRemoteNotifications() | |||||
| return super.application(application, didFinishLaunchingWithOptions: launchOptions) | return super.application(application, didFinishLaunchingWithOptions: launchOptions) | ||||
| } | } | ||||
| } | } |
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||||
| <plist version="1.0"> | <plist version="1.0"> | ||||
| <dict> | <dict> | ||||
| <key>CLIENT_ID</key> | |||||
| <string>145264060024-ut48ah57979rug9fti17nothlm2ckiij.apps.googleusercontent.com</string> | |||||
| <key>REVERSED_CLIENT_ID</key> | |||||
| <string>com.googleusercontent.apps.145264060024-ut48ah57979rug9fti17nothlm2ckiij</string> | |||||
| <key>API_KEY</key> | <key>API_KEY</key> | ||||
| <string>AIzaSyBWyE0r0AvSlfSZUlPGxwXT49qYX8fX7eo</string> | |||||
| <string>AIzaSyDjiB8U1qE94jHiRTQMFIbJQXsopjA5RLc</string> | |||||
| <key>GCM_SENDER_ID</key> | <key>GCM_SENDER_ID</key> | ||||
| <string>145264060024</string> | |||||
| <string>305595108522</string> | |||||
| <key>PLIST_VERSION</key> | <key>PLIST_VERSION</key> | ||||
| <string>1</string> | <string>1</string> | ||||
| <key>BUNDLE_ID</key> | <key>BUNDLE_ID</key> | ||||
| <string>vn.azteam.farmdemo</string> | <string>vn.azteam.farmdemo</string> | ||||
| <key>PROJECT_ID</key> | <key>PROJECT_ID</key> | ||||
| <string>smartfarm-73071</string> | |||||
| <string>aztrace-nhatkycanhtac</string> | |||||
| <key>STORAGE_BUCKET</key> | <key>STORAGE_BUCKET</key> | ||||
| <string>smartfarm-73071.appspot.com</string> | |||||
| <string>aztrace-nhatkycanhtac.appspot.com</string> | |||||
| <key>IS_ADS_ENABLED</key> | <key>IS_ADS_ENABLED</key> | ||||
| <false></false> | <false></false> | ||||
| <key>IS_ANALYTICS_ENABLED</key> | <key>IS_ANALYTICS_ENABLED</key> | ||||
| <key>IS_SIGNIN_ENABLED</key> | <key>IS_SIGNIN_ENABLED</key> | ||||
| <true></true> | <true></true> | ||||
| <key>GOOGLE_APP_ID</key> | <key>GOOGLE_APP_ID</key> | ||||
| <string>1:145264060024:ios:537b6f9f805f96ea802f8d</string> | |||||
| <string>1:305595108522:ios:4c0f809f1569feb93754d3</string> | |||||
| <key>DATABASE_URL</key> | <key>DATABASE_URL</key> | ||||
| <string>https://smartfarm-73071-default-rtdb.firebaseio.com</string> | |||||
| <string>https://aztrace-nhatkycanhtac-default-rtdb.asia-southeast1.firebasedatabase.app</string> | |||||
| </dict> | </dict> | ||||
| </plist> | </plist> |
| import 'authentication/bloc/authentication_bloc.dart'; | import 'authentication/bloc/authentication_bloc.dart'; | ||||
| import 'data/repository/authentication_repository.dart'; | import 'data/repository/authentication_repository.dart'; | ||||
| import 'presentation/screens/login/login_page.dart'; | import 'presentation/screens/login/login_page.dart'; | ||||
| import 'services/firebase_notification_service.dart'; | |||||
| final GlobalKey<NavigatorState> globalNavigator = GlobalKey<NavigatorState>(); | final GlobalKey<NavigatorState> globalNavigator = GlobalKey<NavigatorState>(); | ||||
| backgroundColor: Colors.white, | backgroundColor: Colors.white, | ||||
| brightness: Brightness.light, | brightness: Brightness.light, | ||||
| primaryColor: AppColors.DEFAULT, | primaryColor: AppColors.DEFAULT, | ||||
| accentColor: AppColors.DEFAULT, | |||||
| hoverColor: AppColors.GREEN, | hoverColor: AppColors.GREEN, | ||||
| // textTheme: GoogleFonts.sairaTextTheme( | // textTheme: GoogleFonts.sairaTextTheme( | ||||
| // Theme.of(context).textTheme, | // Theme.of(context).textTheme, | ||||
| listener: (context, state) { | listener: (context, state) { | ||||
| switch (state.status) { | switch (state.status) { | ||||
| case AuthenticationStatus.authenticated: | case AuthenticationStatus.authenticated: | ||||
| FirebaseNotificationService.initService(); | |||||
| // _navigator!.pushAndRemoveUntil<void>( | // _navigator!.pushAndRemoveUntil<void>( | ||||
| // TabbarScreen.route(), | // TabbarScreen.route(), | ||||
| // (route) => false, | // (route) => false, | ||||
| Get.offAll(() => TabbarScreen()); | Get.offAll(() => TabbarScreen()); | ||||
| break; | break; | ||||
| case AuthenticationStatus.unauthenticated: | case AuthenticationStatus.unauthenticated: | ||||
| FirebaseNotificationService.initService(); | |||||
| // _navigator!.pushAndRemoveUntil<void>( | // _navigator!.pushAndRemoveUntil<void>( | ||||
| // LoginPage.route(), | // LoginPage.route(), | ||||
| // (route) => false, | // (route) => false, |
| final GlobalKey<NavigatorState> globalNavigator = GlobalKey<NavigatorState>(); | final GlobalKey<NavigatorState> globalNavigator = GlobalKey<NavigatorState>(); | ||||
| Future<void> main() async { | Future<void> main() async { | ||||
| WidgetsFlutterBinding.ensureInitialized(); | WidgetsFlutterBinding.ensureInitialized(); | ||||
| Firebase.initializeApp(); | |||||
| // if (Platform.isAndroid) { | |||||
| // await Firebase.initializeApp( | |||||
| // options: DefaultFirebaseOptions.currentPlatform, | |||||
| // ); | |||||
| // } else { | |||||
| // await Firebase.initializeApp(); | |||||
| // } | |||||
| // await FirebaseMessaging.instance.setForegroundNotificationPresentationOptions(alert: true, badge: true, sound: true); | |||||
| // FirebaseMessaging.onBackgroundMessage(FirebaseMessages.firebaseMessagingBackgroundHandler); | |||||
| // FirebaseMessaging.onMessageOpenedApp.listen(FirebaseMessages.firebaseMessagingBackgroundHandler); | |||||
| await Firebase.initializeApp(); | |||||
| await SystemChrome.setPreferredOrientations([ | await SystemChrome.setPreferredOrientations([ | ||||
| DeviceOrientation.portraitDown, | DeviceOrientation.portraitDown, |
| import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||
| import 'package:flutter_datetime_picker/flutter_datetime_picker.dart'; | |||||
| import 'package:flutter_datetime_picker_plus/flutter_datetime_picker_plus.dart' as datatTimePicker; | |||||
| import 'package:flutter_screenutil/flutter_screenutil.dart'; | import 'package:flutter_screenutil/flutter_screenutil.dart'; | ||||
| import 'package:flutter_svg/svg.dart'; | import 'package:flutter_svg/svg.dart'; | ||||
| import 'package:intl/intl.dart'; | import 'package:intl/intl.dart'; | ||||
| onTap: widget.isEnable | onTap: widget.isEnable | ||||
| ? () { | ? () { | ||||
| widget.isShowTime | widget.isShowTime | ||||
| ? DatePicker.showDateTimePicker( | |||||
| ? datatTimePicker.DatePicker.showDateTimePicker( | |||||
| context, | context, | ||||
| showTitleActions: true, | showTitleActions: true, | ||||
| minTime: DateTime(DateTime.now().year - 5), | minTime: DateTime(DateTime.now().year - 5), | ||||
| } | } | ||||
| }, | }, | ||||
| currentTime: selectedDate, | currentTime: selectedDate, | ||||
| locale: LocaleType.vi, | |||||
| locale: datatTimePicker.LocaleType.vi, | |||||
| ) | ) | ||||
| : showDatePicker( | : showDatePicker( | ||||
| context: context, | context: context, |
| import 'package:farm_tpf/utils/validators.dart'; | import 'package:farm_tpf/utils/validators.dart'; | ||||
| import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||
| import 'package:flutter_datetime_picker/flutter_datetime_picker.dart'; | |||||
| import 'package:flutter_datetime_picker_plus/flutter_datetime_picker_plus.dart' as datatTimePicker; | |||||
| import 'package:get/get.dart'; | import 'package:get/get.dart'; | ||||
| import 'package:get/get_state_manager/get_state_manager.dart'; | import 'package:get/get_state_manager/get_state_manager.dart'; | ||||
| import 'package:farm_tpf/utils/formatter.dart'; | import 'package:farm_tpf/utils/formatter.dart'; | ||||
| height: 44, | height: 44, | ||||
| child: TextButton( | child: TextButton( | ||||
| onPressed: () { | onPressed: () { | ||||
| DatePicker.showDateTimePicker(context, showTitleActions: true, onChanged: (date) {}, onConfirm: (date) { | |||||
| controller?.change(date); | |||||
| widget.onPressed(date); | |||||
| textController.text = date.toString(); | |||||
| }, currentTime: data?.selectedDateTime, locale: LocaleType.vi); | |||||
| datatTimePicker.DatePicker.showDateTimePicker( | |||||
| context, | |||||
| showTitleActions: true, | |||||
| onChanged: (date) {}, | |||||
| onConfirm: (date) { | |||||
| controller?.change(date); | |||||
| widget.onPressed(date); | |||||
| textController.text = date.toString(); | |||||
| }, | |||||
| currentTime: data?.selectedDateTime, | |||||
| locale: datatTimePicker.LocaleType.vi, | |||||
| ); | |||||
| }, | }, | ||||
| child: Column( | child: Column( | ||||
| crossAxisAlignment: CrossAxisAlignment.start, | crossAxisAlignment: CrossAxisAlignment.start, |
| import 'package:farm_tpf/utils/const_style.dart'; | import 'package:farm_tpf/utils/const_style.dart'; | ||||
| import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||
| import 'package:flutter_datetime_picker/flutter_datetime_picker.dart'; | |||||
| import 'package:flutter_datetime_picker_plus/flutter_datetime_picker_plus.dart' as datatTimePicker; | |||||
| import 'package:farm_tpf/utils/formatter.dart'; | import 'package:farm_tpf/utils/formatter.dart'; | ||||
| import 'package:get/get.dart'; | import 'package:get/get.dart'; | ||||
| import 'package:get/state_manager.dart'; | import 'package:get/state_manager.dart'; | ||||
| builder: (value) { | builder: (value) { | ||||
| return TextButton( | return TextButton( | ||||
| onPressed: () { | onPressed: () { | ||||
| DatePicker.showDateTimePicker(context, showTitleActions: true, onChanged: (date) {}, onConfirm: (date) { | |||||
| changeDate.change(date); | |||||
| widget.onUpdateDateTime(date); | |||||
| }, currentTime: value.selectedDateTime, locale: LocaleType.vi); | |||||
| datatTimePicker.DatePicker.showDateTimePicker( | |||||
| context, | |||||
| showTitleActions: true, | |||||
| onChanged: (date) {}, | |||||
| onConfirm: (date) { | |||||
| changeDate.change(date); | |||||
| widget.onUpdateDateTime(date); | |||||
| }, | |||||
| currentTime: value.selectedDateTime, | |||||
| locale: datatTimePicker.LocaleType.vi, | |||||
| ); | |||||
| }, | }, | ||||
| child: Container( | child: Container( | ||||
| padding: EdgeInsets.only(top: 0.0, right: 0.0, bottom: 10.5, left: 0.0), | padding: EdgeInsets.only(top: 0.0, right: 0.0, bottom: 10.5, left: 0.0), |
| Future<Null> getSharedPrefs() async { | Future<Null> getSharedPrefs() async { | ||||
| token = await pref.getString(DATA_CONST.TOKEN_KEY); | token = await pref.getString(DATA_CONST.TOKEN_KEY); | ||||
| pushkey = await pref.getString(DATA_CONST.PUSH_KEY); | |||||
| currentFullName = await pref.getString(DATA_CONST.CURRENT_FULL_NAME); | currentFullName = await pref.getString(DATA_CONST.CURRENT_FULL_NAME); | ||||
| var options = BaseOptions(baseUrl: ConstCommon.baseUrl); | var options = BaseOptions(baseUrl: ConstCommon.baseUrl); | ||||
| options.headers["Authorization"] = "Bearer $token"; | options.headers["Authorization"] = "Bearer $token"; | ||||
| // } else { | // } else { | ||||
| // print("Don't need get push key"); | // print("Don't need get push key"); | ||||
| // } | // } | ||||
| var pushKey = await pref.getString(PrefKey.push_key); | |||||
| _userRepository.updateFcmToken(pushKey).then((value) { | |||||
| print("send push key successful"); | |||||
| }); | |||||
| if (currentFullName?.isEmpty ?? true) { | if (currentFullName?.isEmpty ?? true) { | ||||
| try { | try { |
| import 'dart:convert'; | |||||
| import 'package:flutter_bloc/flutter_bloc.dart'; | |||||
| import 'package:get/get.dart'; | |||||
| import '../utils/pref.dart'; | |||||
| import 'package:firebase_messaging/firebase_messaging.dart'; | |||||
| import 'package:flutter_local_notifications/flutter_local_notifications.dart'; | |||||
| class FirebaseNotificationService { | |||||
| static FirebaseMessaging messaging = FirebaseMessaging.instance; | |||||
| static final _pref = LocalPref(); | |||||
| static void initService() async { | |||||
| var token = await messaging.getToken() ?? ''; | |||||
| await _pref.saveString(PrefKey.push_key, token); | |||||
| print('pushKey: $token'); | |||||
| //config Android channel | |||||
| const channel = AndroidNotificationChannel( | |||||
| 'high_importance_channel', | |||||
| 'High Importance Notifications', | |||||
| importance: Importance.max, | |||||
| ); | |||||
| final flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin(); | |||||
| await flutterLocalNotificationsPlugin | |||||
| .resolvePlatformSpecificImplementation<AndroidFlutterLocalNotificationsPlugin>() | |||||
| ?.createNotificationChannel(channel); | |||||
| await flutterLocalNotificationsPlugin.resolvePlatformSpecificImplementation<IOSFlutterLocalNotificationsPlugin>()?.requestPermissions( | |||||
| alert: true, | |||||
| badge: true, | |||||
| sound: true, | |||||
| ); | |||||
| //handle message on background android | |||||
| FirebaseMessaging.onBackgroundMessage( | |||||
| _firebaseMessagingBackgroundHandler, | |||||
| ); | |||||
| //Message foreground | |||||
| FirebaseMessaging.onMessage.listen( | |||||
| (RemoteMessage message) { | |||||
| print('Got a message whilst in the foreground!'); | |||||
| print('Message data: $message'); | |||||
| // increase count unread notification | |||||
| // countNotificationUnRead.value = countNotificationUnRead.value + 1; | |||||
| var remoteNotification = message.notification; | |||||
| var androidNotification = message.notification?.android; | |||||
| var flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin(); | |||||
| const initializationSettingsAndroid = AndroidInitializationSettings( | |||||
| 'app_icon', | |||||
| ); | |||||
| const initializationSettingsIOS = DarwinInitializationSettings( | |||||
| requestSoundPermission: false, | |||||
| requestBadgePermission: false, | |||||
| requestAlertPermission: false, | |||||
| onDidReceiveLocalNotification: onDidReceiveLocalNotification, | |||||
| ); | |||||
| const initializationSettings = InitializationSettings( | |||||
| android: initializationSettingsAndroid, | |||||
| iOS: initializationSettingsIOS, | |||||
| ); | |||||
| flutterLocalNotificationsPlugin.initialize( | |||||
| initializationSettings, | |||||
| // onDidReceiveNotificationResponse: selectNotification, | |||||
| onDidReceiveNotificationResponse: (NotificationResponse notificationResponse) async { | |||||
| await selectNotification(notificationResponse.payload); | |||||
| }, | |||||
| ); | |||||
| var androidDetails = const AndroidNotificationDetails( | |||||
| 'default_notification_channel_id', | |||||
| 'Notification', | |||||
| importance: Importance.max, | |||||
| priority: Priority.high, | |||||
| icon: '@mipmap/ic_stat_ic_notification', | |||||
| ); | |||||
| var platformChannelSpecifics = NotificationDetails( | |||||
| android: androidDetails, | |||||
| ); | |||||
| var dataPayload = json.encode(message.data); | |||||
| try { | |||||
| // var entityType = message.data['entity_type']; | |||||
| // var entityData = message.data['entity_data']; | |||||
| // var systemMessage = message.data['system_message']; | |||||
| print('normal message'); | |||||
| flutterLocalNotificationsPlugin.show( | |||||
| 0, | |||||
| message.notification?.title, | |||||
| message.notification?.body, | |||||
| platformChannelSpecifics, | |||||
| payload: dataPayload, | |||||
| ); | |||||
| } catch (e) { | |||||
| print(e); | |||||
| } | |||||
| }, | |||||
| ); | |||||
| @pragma('vm:entry-point') | |||||
| void notificationTapBackground(NotificationResponse notificationResponse) { | |||||
| // handle action | |||||
| print('message from background: $notificationResponse'); | |||||
| } | |||||
| //Interaction Message from background | |||||
| FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) { | |||||
| print('message from background: ${message}'); | |||||
| _handleMessage(message); | |||||
| }); | |||||
| //Interaction Message from terminal | |||||
| var initialMessage = await FirebaseMessaging.instance.getInitialMessage(); | |||||
| print('initialMessage: $initialMessage'); | |||||
| if (initialMessage != null) { | |||||
| _handleMessage(initialMessage); | |||||
| } | |||||
| } | |||||
| static Future onDidReceiveLocalNotification(int? id, String? title, String? body, String? payload) async { | |||||
| // display a dialog with the notification details, tap ok to go to another page | |||||
| } | |||||
| static Future selectNotification(String? payload) async { | |||||
| try { | |||||
| var data = json.decode(payload ?? ''); | |||||
| handleNavigateScreen(data); | |||||
| } catch (e) { | |||||
| print(e); | |||||
| } | |||||
| } | |||||
| static void _handleMessage(RemoteMessage message) { | |||||
| try { | |||||
| var data = message.data; | |||||
| handleNavigateScreen(data); | |||||
| } catch (e) { | |||||
| print(e); | |||||
| } | |||||
| } | |||||
| static void handleNavigateScreen(dynamic data) { | |||||
| print(data); | |||||
| } | |||||
| } | |||||
| Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async { | |||||
| print('Handling a background message: ${message}'); | |||||
| } |
| static const String PUSH_KEY = "PUSH_KEY"; | static const String PUSH_KEY = "PUSH_KEY"; | ||||
| static const String CURRENT_FULL_NAME = "CURRENT_FULL_NAME"; | static const String CURRENT_FULL_NAME = "CURRENT_FULL_NAME"; | ||||
| } | } | ||||
| class PrefKey { | |||||
| static const String push_key = 'push_key'; | |||||
| } |
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| name: async | name: async | ||||
| sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 | |||||
| sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" | |||||
| url: "https://pub.dev" | url: "https://pub.dev" | ||||
| source: hosted | source: hosted | ||||
| version: "2.10.0" | |||||
| version: "2.11.0" | |||||
| auto_size_text: | auto_size_text: | ||||
| dependency: "direct main" | dependency: "direct main" | ||||
| description: | description: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| name: build_config | name: build_config | ||||
| sha256: edd0f55c5af49a408311330cc84b213acc7491a85d6f2f890e503ffe00290176 | |||||
| sha256: ad77deb6e9c143a3f550fbb4c5c1e0c6aadabe24274898d06b9526c61b9cf4fb | |||||
| url: "https://pub.dev" | url: "https://pub.dev" | ||||
| source: hosted | source: hosted | ||||
| version: "0.4.6" | |||||
| version: "1.0.0" | |||||
| built_collection: | built_collection: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| name: characters | name: characters | ||||
| sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c | |||||
| sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" | |||||
| url: "https://pub.dev" | url: "https://pub.dev" | ||||
| source: hosted | source: hosted | ||||
| version: "1.2.1" | |||||
| version: "1.3.0" | |||||
| checked_yaml: | checked_yaml: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| name: checked_yaml | name: checked_yaml | ||||
| sha256: d051b31d88264beeeef1fa971f19d9a1d614b157bc60dad5b3b360f996e48656 | |||||
| sha256: dd007e4fb8270916820a0d66e24f619266b60773cddd082c6439341645af2659 | |||||
| url: "https://pub.dev" | url: "https://pub.dev" | ||||
| source: hosted | source: hosted | ||||
| version: "1.0.4" | |||||
| version: "2.0.1" | |||||
| cli_util: | cli_util: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| name: collection | name: collection | ||||
| sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 | |||||
| sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 | |||||
| url: "https://pub.dev" | url: "https://pub.dev" | ||||
| source: hosted | source: hosted | ||||
| version: "1.17.0" | |||||
| version: "1.17.2" | |||||
| convert: | convert: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| url: "https://pub.dev" | url: "https://pub.dev" | ||||
| source: hosted | source: hosted | ||||
| version: "2.1.1" | version: "2.1.1" | ||||
| dbus: | |||||
| dependency: transitive | |||||
| description: | |||||
| name: dbus | |||||
| sha256: "365c771ac3b0e58845f39ec6deebc76e3276aa9922b0cc60840712094d9047ac" | |||||
| url: "https://pub.dev" | |||||
| source: hosted | |||||
| version: "0.7.10" | |||||
| dio: | dio: | ||||
| dependency: "direct main" | dependency: "direct main" | ||||
| description: | description: | ||||
| url: "https://pub.dev" | url: "https://pub.dev" | ||||
| source: hosted | source: hosted | ||||
| version: "3.3.1" | version: "3.3.1" | ||||
| flutter_datetime_picker: | |||||
| flutter_datetime_picker_plus: | |||||
| dependency: "direct main" | dependency: "direct main" | ||||
| description: | description: | ||||
| name: flutter_datetime_picker | |||||
| sha256: "8e695c63c769350e541951227c2775190ec73ceda774a315b1dc9a99d5facfe5" | |||||
| name: flutter_datetime_picker_plus | |||||
| sha256: "7d82da02c4e070bb28a9107de119ad195e2319b45c786fecc13482a9ffcc51da" | |||||
| url: "https://pub.dev" | url: "https://pub.dev" | ||||
| source: hosted | source: hosted | ||||
| version: "1.5.1" | |||||
| version: "2.2.0" | |||||
| flutter_image_compress: | flutter_image_compress: | ||||
| dependency: "direct main" | dependency: "direct main" | ||||
| description: | description: | ||||
| url: "https://pub.dev" | url: "https://pub.dev" | ||||
| source: hosted | source: hosted | ||||
| version: "0.1.3+2" | version: "0.1.3+2" | ||||
| flutter_local_notifications: | |||||
| dependency: "direct main" | |||||
| description: | |||||
| name: flutter_local_notifications | |||||
| sha256: "40e6fbd2da7dcc7ed78432c5cdab1559674b4af035fddbfb2f9a8f9c2112fcef" | |||||
| url: "https://pub.dev" | |||||
| source: hosted | |||||
| version: "17.1.2" | |||||
| flutter_local_notifications_linux: | |||||
| dependency: transitive | |||||
| description: | |||||
| name: flutter_local_notifications_linux | |||||
| sha256: "33f741ef47b5f63cc7f78fe75eeeac7e19f171ff3c3df054d84c1e38bedb6a03" | |||||
| url: "https://pub.dev" | |||||
| source: hosted | |||||
| version: "4.0.0+1" | |||||
| flutter_local_notifications_platform_interface: | |||||
| dependency: transitive | |||||
| description: | |||||
| name: flutter_local_notifications_platform_interface | |||||
| sha256: "340abf67df238f7f0ef58f4a26d2a83e1ab74c77ab03cd2b2d5018ac64db30b7" | |||||
| url: "https://pub.dev" | |||||
| source: hosted | |||||
| version: "7.1.0" | |||||
| flutter_plugin_android_lifecycle: | flutter_plugin_android_lifecycle: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| dependency: "direct main" | dependency: "direct main" | ||||
| description: | description: | ||||
| name: flutter_svg | name: flutter_svg | ||||
| sha256: "138b19e7554e97d680dc391fb21639c89db979f437a74bd2ad5ff207c0082a5c" | |||||
| sha256: "7b4ca6cf3304575fe9c8ec64813c8d02ee41d2afe60bcfe0678bcb5375d596a2" | |||||
| url: "https://pub.dev" | url: "https://pub.dev" | ||||
| source: hosted | source: hosted | ||||
| version: "0.20.0-nullsafety.3" | |||||
| version: "2.0.10+1" | |||||
| flutter_switch: | flutter_switch: | ||||
| dependency: "direct main" | dependency: "direct main" | ||||
| description: | description: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| name: http | name: http | ||||
| sha256: "5895291c13fa8a3bd82e76d5627f69e0d85ca6a30dcac95c4ea19a5d555879c2" | |||||
| sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525" | |||||
| url: "https://pub.dev" | url: "https://pub.dev" | ||||
| source: hosted | source: hosted | ||||
| version: "0.13.6" | |||||
| version: "1.1.0" | |||||
| http_parser: | http_parser: | ||||
| dependency: "direct main" | dependency: "direct main" | ||||
| description: | description: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| name: matcher | name: matcher | ||||
| sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" | |||||
| sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" | |||||
| url: "https://pub.dev" | url: "https://pub.dev" | ||||
| source: hosted | source: hosted | ||||
| version: "0.12.13" | |||||
| version: "0.12.16" | |||||
| material_color_utilities: | material_color_utilities: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| name: material_color_utilities | name: material_color_utilities | ||||
| sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 | |||||
| sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" | |||||
| url: "https://pub.dev" | url: "https://pub.dev" | ||||
| source: hosted | source: hosted | ||||
| version: "0.2.0" | |||||
| version: "0.5.0" | |||||
| meta: | meta: | ||||
| dependency: "direct main" | dependency: "direct main" | ||||
| description: | description: | ||||
| name: meta | name: meta | ||||
| sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" | |||||
| sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" | |||||
| url: "https://pub.dev" | url: "https://pub.dev" | ||||
| source: hosted | source: hosted | ||||
| version: "1.8.0" | |||||
| version: "1.9.1" | |||||
| mime: | mime: | ||||
| dependency: "direct main" | dependency: "direct main" | ||||
| description: | description: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| name: path | name: path | ||||
| sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b | |||||
| sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" | |||||
| url: "https://pub.dev" | url: "https://pub.dev" | ||||
| source: hosted | source: hosted | ||||
| version: "1.8.2" | |||||
| path_drawing: | |||||
| dependency: transitive | |||||
| description: | |||||
| name: path_drawing | |||||
| sha256: "3bdd251dae9ffaef944450b73f168610db7e968e7b20daf0c3907f8b4aafc8a2" | |||||
| url: "https://pub.dev" | |||||
| source: hosted | |||||
| version: "0.5.1+1" | |||||
| version: "1.8.3" | |||||
| path_parsing: | path_parsing: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| name: path_parsing | name: path_parsing | ||||
| sha256: ee5c47c1058ad66b4a41746ec3996af9593d0858872807bcd64ac118f0700337 | |||||
| sha256: e3e67b1629e6f7e8100b367d3db6ba6af4b1f0bb80f64db18ef1fbabd2fa9ccf | |||||
| url: "https://pub.dev" | url: "https://pub.dev" | ||||
| source: hosted | source: hosted | ||||
| version: "0.2.1" | |||||
| version: "1.0.1" | |||||
| path_provider: | path_provider: | ||||
| dependency: "direct main" | dependency: "direct main" | ||||
| description: | description: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| name: petitparser | name: petitparser | ||||
| sha256: "49392a45ced973e8d94a85fdb21293fbb40ba805fc49f2965101ae748a3683b4" | |||||
| sha256: cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750 | |||||
| url: "https://pub.dev" | url: "https://pub.dev" | ||||
| source: hosted | source: hosted | ||||
| version: "5.1.0" | |||||
| version: "5.4.0" | |||||
| platform: | platform: | ||||
| dependency: "direct overridden" | dependency: "direct overridden" | ||||
| description: | description: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| name: pubspec_parse | name: pubspec_parse | ||||
| sha256: d65b4c44175a6882692fae384be22c3eed8b9235bb758d8984b11fec55848b8c | |||||
| sha256: "0e01f805457ef610ccaf8d18067596afc34107a27149778b06b2083edbc140c1" | |||||
| url: "https://pub.dev" | url: "https://pub.dev" | ||||
| source: hosted | source: hosted | ||||
| version: "0.1.8" | |||||
| version: "1.1.0" | |||||
| qr_code_scanner: | qr_code_scanner: | ||||
| dependency: "direct main" | dependency: "direct main" | ||||
| description: | description: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| name: source_span | name: source_span | ||||
| sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 | |||||
| sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" | |||||
| url: "https://pub.dev" | url: "https://pub.dev" | ||||
| source: hosted | source: hosted | ||||
| version: "1.9.1" | |||||
| version: "1.10.0" | |||||
| sprintf: | sprintf: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| name: test_api | name: test_api | ||||
| sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 | |||||
| sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8" | |||||
| url: "https://pub.dev" | url: "https://pub.dev" | ||||
| source: hosted | source: hosted | ||||
| version: "0.4.16" | |||||
| version: "0.6.0" | |||||
| timezone: | |||||
| dependency: transitive | |||||
| description: | |||||
| name: timezone | |||||
| sha256: a6ccda4a69a442098b602c44e61a1e2b4bf6f5516e875bbf0f427d5df14745d5 | |||||
| url: "https://pub.dev" | |||||
| source: hosted | |||||
| version: "0.9.3" | |||||
| toggle_switch: | toggle_switch: | ||||
| dependency: "direct main" | dependency: "direct main" | ||||
| description: | description: | ||||
| url: "https://pub.dev" | url: "https://pub.dev" | ||||
| source: hosted | source: hosted | ||||
| version: "4.1.0" | version: "4.1.0" | ||||
| vector_graphics: | |||||
| dependency: transitive | |||||
| description: | |||||
| name: vector_graphics | |||||
| sha256: "32c3c684e02f9bc0afb0ae0aa653337a2fe022e8ab064bcd7ffda27a74e288e3" | |||||
| url: "https://pub.dev" | |||||
| source: hosted | |||||
| version: "1.1.11+1" | |||||
| vector_graphics_codec: | |||||
| dependency: transitive | |||||
| description: | |||||
| name: vector_graphics_codec | |||||
| sha256: c86987475f162fadff579e7320c7ddda04cd2fdeffbe1129227a85d9ac9e03da | |||||
| url: "https://pub.dev" | |||||
| source: hosted | |||||
| version: "1.1.11+1" | |||||
| vector_graphics_compiler: | |||||
| dependency: transitive | |||||
| description: | |||||
| name: vector_graphics_compiler | |||||
| sha256: "12faff3f73b1741a36ca7e31b292ddeb629af819ca9efe9953b70bd63fc8cd81" | |||||
| url: "https://pub.dev" | |||||
| source: hosted | |||||
| version: "1.1.11+1" | |||||
| vector_math: | vector_math: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| url: "https://pub.dev" | url: "https://pub.dev" | ||||
| source: hosted | source: hosted | ||||
| version: "1.0.2" | version: "1.0.2" | ||||
| web: | |||||
| dependency: transitive | |||||
| description: | |||||
| name: web | |||||
| sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 | |||||
| url: "https://pub.dev" | |||||
| source: hosted | |||||
| version: "0.1.4-beta" | |||||
| win32: | win32: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| name: xml | name: xml | ||||
| sha256: "80d494c09849dc3f899d227a78c30c5b949b985ededf884cb3f3bcd39f4b447a" | |||||
| sha256: "5bc72e1e45e941d825fd7468b9b4cc3b9327942649aeb6fc5cdbf135f0a86e84" | |||||
| url: "https://pub.dev" | url: "https://pub.dev" | ||||
| source: hosted | source: hosted | ||||
| version: "5.4.1" | |||||
| version: "6.3.0" | |||||
| yaml: | yaml: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| source: hosted | source: hosted | ||||
| version: "3.1.2" | version: "3.1.2" | ||||
| sdks: | sdks: | ||||
| dart: ">=2.19.0 <3.0.0" | |||||
| flutter: ">=3.7.0" | |||||
| dart: ">=3.1.0-185.0.dev <4.0.0" | |||||
| flutter: ">=3.10.0" |
| description: A new Flutter project. | description: A new Flutter project. | ||||
| publish_to: 'none' | publish_to: 'none' | ||||
| version: 1.1.8+24 | |||||
| version: 1.1.8+25 | |||||
| environment: | environment: | ||||
| sdk: ">=2.17.0 <=3.0.0" | |||||
| sdk: ">=3.0.0 <4.0.0" | |||||
| module: | module: | ||||
| androidX: true | androidX: true | ||||
| change_app_package_name: ^1.1.0 | change_app_package_name: ^1.1.0 | ||||
| #flutter pub run change_app_package_name:main vn.azteam.farmdemo | #flutter pub run change_app_package_name:main vn.azteam.farmdemo | ||||
| firebase_messaging: ^14.7.0 | firebase_messaging: ^14.7.0 | ||||
| flutter_local_notifications: ^17.1.2 | |||||
| get: ^4.1.2 | get: ^4.1.2 | ||||
| intl: ^0.18.1 | intl: ^0.18.1 | ||||
| flutter_datetime_picker: ^1.5.1 | |||||
| flutter_datetime_picker_plus: ^2.1.0 | |||||
| # http: ^1.1.0 | # http: ^1.1.0 | ||||
| http_parser: ^4.0.2 | http_parser: ^4.0.2 | ||||
| rflutter_alert: ^2.0.7 | rflutter_alert: ^2.0.7 | ||||
| mime: ^1.0.4 | mime: ^1.0.4 | ||||
| flutter_image_compress: ^2.1.0 | flutter_image_compress: ^2.1.0 | ||||
| flutter_svg: ^0.20.0-nullsafety.3 | |||||
| flutter_svg: ^2.0.10+1 | |||||
| # google_fonts: ^6.1.0 | # google_fonts: ^6.1.0 | ||||
| # ffi: ^1.0.0 | # ffi: ^1.0.0 | ||||
| qr_code_scanner: ^1.0.1 | qr_code_scanner: ^1.0.1 |