| @@ -1 +1 @@ | |||
| /Users/daivph/fvm/versions/3.7.12 | |||
| /Users/daivph/fvm/versions/3.13.9 | |||
| @@ -1,4 +1,4 @@ | |||
| { | |||
| "flutterSdkVersion": "3.7.12", | |||
| "flutterSdkVersion": "3.13.9", | |||
| "flavors": {} | |||
| } | |||
| @@ -8,9 +8,9 @@ | |||
| "name": "mobile-app", | |||
| "request": "launch", | |||
| "type": "dart", | |||
| "args": [ | |||
| "--no-sound-null-safety" | |||
| ] | |||
| // "args": [ | |||
| // "--no-sound-null-safety" | |||
| // ] | |||
| } | |||
| ] | |||
| } | |||
| @@ -1,4 +1,4 @@ | |||
| { | |||
| "dart.flutterSdkPath": "~/fvm/versions/3.7.12", | |||
| "dart.flutterSdkPath": "~/fvm/versions/3.13.9", | |||
| "java.configuration.updateBuildConfiguration": "interactive" | |||
| } | |||
| @@ -1,37 +1,27 @@ | |||
| { | |||
| "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_info": { | |||
| "mobilesdk_app_id": "1:145264060024:android:5d973afbfdac70c8802f8d", | |||
| "mobilesdk_app_id": "1:305595108522:android:92fd0887475dc2723754d3", | |||
| "android_client_info": { | |||
| "package_name": "vn.azteam.farmdemo" | |||
| } | |||
| }, | |||
| "oauth_client": [ | |||
| { | |||
| "client_id": "145264060024-fpp54hk2mhfpk5nj1m23124p0nkr72l6.apps.googleusercontent.com", | |||
| "client_type": 3 | |||
| } | |||
| ], | |||
| "oauth_client": [], | |||
| "api_key": [ | |||
| { | |||
| "current_key": "AIzaSyAVC0ArwKauoiTms8VUpn7Y9_hY0MX5V3Y" | |||
| "current_key": "AIzaSyAzNujY3dPJgMP5p8FvH4SRkxv7dv8DH5I" | |||
| } | |||
| ], | |||
| "services": { | |||
| "appinvite_service": { | |||
| "other_platform_oauth_client": [ | |||
| { | |||
| "client_id": "145264060024-fpp54hk2mhfpk5nj1m23124p0nkr72l6.apps.googleusercontent.com", | |||
| "client_type": 3 | |||
| } | |||
| ] | |||
| "other_platform_oauth_client": [] | |||
| } | |||
| } | |||
| } | |||
| @@ -9,6 +9,10 @@ | |||
| <uses-permission android:name="android.permission.INTERNET"/> | |||
| <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> | |||
| <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 | |||
| android:name=".Application" | |||
| android:label="Aztrace - Nhật ký canh tác" | |||
| @@ -17,6 +21,9 @@ | |||
| <meta-data | |||
| android:name="com.google.firebase.messaging.default_notification_icon" | |||
| android:resource="@mipmap/ic_stat_smartfarm" /> | |||
| <meta-data | |||
| android:name="com.google.firebase.messaging.default_notification_channel_id" | |||
| android:value="high_importance_channel" /> | |||
| <!-- <activity | |||
| android:name="de.mintware.barcode_scan.BarcodeScannerActivity" | |||
| android:exported="true" | |||
| @@ -70,5 +77,14 @@ | |||
| android:resource="@xml/provider_paths" | |||
| tools:replace="android:resource" /> | |||
| </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> | |||
| </manifest> | |||
| @@ -1,12 +1,12 @@ | |||
| buildscript { | |||
| ext.kotlin_version = '1.7.21' | |||
| ext.kotlin_version = '1.9.0' | |||
| repositories { | |||
| google() | |||
| jcenter() | |||
| } | |||
| 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 "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" | |||
| } | |||
| @@ -35,6 +35,6 @@ subprojects { | |||
| } | |||
| } | |||
| task clean(type: Delete) { | |||
| tasks.register("clean", Delete) { | |||
| delete rootProject.buildDir | |||
| } | |||
| @@ -73,6 +73,8 @@ PODS: | |||
| - Mantle | |||
| - SDWebImage | |||
| - SDWebImageWebPCoder | |||
| - flutter_local_notifications (0.0.1): | |||
| - Flutter | |||
| - FMDB (2.7.5): | |||
| - FMDB/standard (= 2.7.5) | |||
| - FMDB/standard (2.7.5) | |||
| @@ -152,12 +154,13 @@ DEPENDENCIES: | |||
| - firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`) | |||
| - Flutter (from `Flutter`) | |||
| - 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`) | |||
| - open_filex (from `.symlinks/plugins/open_filex/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`) | |||
| - 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`) | |||
| SPEC REPOS: | |||
| @@ -194,6 +197,8 @@ EXTERNAL SOURCES: | |||
| :path: Flutter | |||
| flutter_image_compress_common: | |||
| :path: ".symlinks/plugins/flutter_image_compress_common/ios" | |||
| flutter_local_notifications: | |||
| :path: ".symlinks/plugins/flutter_local_notifications/ios" | |||
| image_picker_ios: | |||
| :path: ".symlinks/plugins/image_picker_ios/ios" | |||
| open_filex: | |||
| @@ -201,11 +206,11 @@ EXTERNAL SOURCES: | |||
| package_info_plus: | |||
| :path: ".symlinks/plugins/package_info_plus/ios" | |||
| path_provider_foundation: | |||
| :path: ".symlinks/plugins/path_provider_foundation/ios" | |||
| :path: ".symlinks/plugins/path_provider_foundation/darwin" | |||
| qr_code_scanner: | |||
| :path: ".symlinks/plugins/qr_code_scanner/ios" | |||
| shared_preferences_foundation: | |||
| :path: ".symlinks/plugins/shared_preferences_foundation/ios" | |||
| :path: ".symlinks/plugins/shared_preferences_foundation/darwin" | |||
| sqflite: | |||
| :path: ".symlinks/plugins/sqflite/ios" | |||
| @@ -223,6 +228,7 @@ SPEC CHECKSUMS: | |||
| FirebaseMessaging: 0c0ae1eb722ef0c07f7801e5ded8dccd1357d6d4 | |||
| Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 | |||
| flutter_image_compress_common: ec1d45c362c9d30a3f6a0426c297f47c52007e3e | |||
| flutter_local_notifications: 4cde75091f6327eb8517fa068a0a5950212d2086 | |||
| FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a | |||
| GoogleDataTransport: 54dee9d48d14580407f8f5fbf2f496e92437a2f2 | |||
| GoogleUtilities: 13e2c67ede716b8741c7989e26893d151b2b2084 | |||
| @@ -9,7 +9,7 @@ | |||
| /* Begin PBXBuildFile section */ | |||
| 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; | |||
| 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 */; }; | |||
| 5A19B8D253A88BC5E5EDE8D2 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9DCE1C984F2603EE87603F8E /* Pods_Runner.framework */; }; | |||
| 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; | |||
| @@ -35,7 +35,7 @@ | |||
| 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>"; }; | |||
| 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>"; }; | |||
| 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>"; }; | |||
| @@ -100,7 +100,7 @@ | |||
| 97C146F01CF9000F007C117D /* Runner */ = { | |||
| isa = PBXGroup; | |||
| children = ( | |||
| 572C33A225FB79E100842D5E /* GoogleService-Info.plist */, | |||
| 57039D372BEF24AA002F4393 /* GoogleService-Info.plist */, | |||
| 57CB5602257E19450029CFCB /* Runner.entitlements */, | |||
| 97C146FA1CF9000F007C117D /* Main.storyboard */, | |||
| 97C146FD1CF9000F007C117D /* Assets.xcassets */, | |||
| @@ -163,7 +163,7 @@ | |||
| 97C146E61CF9000F007C117D /* Project object */ = { | |||
| isa = PBXProject; | |||
| attributes = { | |||
| LastUpgradeCheck = 1300; | |||
| LastUpgradeCheck = 1430; | |||
| ORGANIZATIONNAME = ""; | |||
| TargetAttributes = { | |||
| 97C146ED1CF9000F007C117D = { | |||
| @@ -198,9 +198,9 @@ | |||
| 57EDCFFA2BBC55CE005E5B0A /* PrivacyInfo.xcprivacy in Resources */, | |||
| 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, | |||
| 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, | |||
| 572C33A325FB79E100842D5E /* GoogleService-Info.plist in Resources */, | |||
| 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, | |||
| 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, | |||
| 57039D382BEF24AA002F4393 /* GoogleService-Info.plist in Resources */, | |||
| ); | |||
| runOnlyForDeploymentPostprocessing = 0; | |||
| }; | |||
| @@ -236,6 +236,7 @@ | |||
| files = ( | |||
| ); | |||
| inputPaths = ( | |||
| "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", | |||
| ); | |||
| name = "Thin Binary"; | |||
| outputPaths = ( | |||
| @@ -369,7 +370,7 @@ | |||
| CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; | |||
| CODE_SIGN_IDENTITY = "Apple Development"; | |||
| CODE_SIGN_STYLE = Automatic; | |||
| CURRENT_PROJECT_VERSION = 23; | |||
| CURRENT_PROJECT_VERSION = 25; | |||
| DEVELOPMENT_TEAM = C3DTD2JH94; | |||
| ENABLE_BITCODE = NO; | |||
| FRAMEWORK_SEARCH_PATHS = ( | |||
| @@ -385,7 +386,7 @@ | |||
| "$(inherited)", | |||
| "$(PROJECT_DIR)/Flutter", | |||
| ); | |||
| MARKETING_VERSION = 1.1.7; | |||
| MARKETING_VERSION = 1.1.8; | |||
| PRODUCT_BUNDLE_IDENTIFIER = vn.azteam.farmdemo; | |||
| PRODUCT_NAME = "$(TARGET_NAME)"; | |||
| PROVISIONING_PROFILE_SPECIFIER = ""; | |||
| @@ -511,7 +512,7 @@ | |||
| CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; | |||
| CODE_SIGN_IDENTITY = "Apple Development"; | |||
| CODE_SIGN_STYLE = Automatic; | |||
| CURRENT_PROJECT_VERSION = 23; | |||
| CURRENT_PROJECT_VERSION = 25; | |||
| DEVELOPMENT_TEAM = C3DTD2JH94; | |||
| ENABLE_BITCODE = NO; | |||
| FRAMEWORK_SEARCH_PATHS = ( | |||
| @@ -527,7 +528,7 @@ | |||
| "$(inherited)", | |||
| "$(PROJECT_DIR)/Flutter", | |||
| ); | |||
| MARKETING_VERSION = 1.1.7; | |||
| MARKETING_VERSION = 1.1.8; | |||
| PRODUCT_BUNDLE_IDENTIFIER = vn.azteam.farmdemo; | |||
| PRODUCT_NAME = "$(TARGET_NAME)"; | |||
| PROVISIONING_PROFILE_SPECIFIER = ""; | |||
| @@ -547,7 +548,7 @@ | |||
| CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; | |||
| CODE_SIGN_IDENTITY = "Apple Development"; | |||
| CODE_SIGN_STYLE = Automatic; | |||
| CURRENT_PROJECT_VERSION = 23; | |||
| CURRENT_PROJECT_VERSION = 25; | |||
| DEVELOPMENT_TEAM = C3DTD2JH94; | |||
| ENABLE_BITCODE = NO; | |||
| FRAMEWORK_SEARCH_PATHS = ( | |||
| @@ -563,7 +564,7 @@ | |||
| "$(inherited)", | |||
| "$(PROJECT_DIR)/Flutter", | |||
| ); | |||
| MARKETING_VERSION = 1.1.7; | |||
| MARKETING_VERSION = 1.1.8; | |||
| PRODUCT_BUNDLE_IDENTIFIER = vn.azteam.farmdemo; | |||
| PRODUCT_NAME = "$(TARGET_NAME)"; | |||
| PROVISIONING_PROFILE_SPECIFIER = ""; | |||
| @@ -1,6 +1,6 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <Scheme | |||
| LastUpgradeVersion = "1300" | |||
| LastUpgradeVersion = "1430" | |||
| version = "1.3"> | |||
| <BuildAction | |||
| parallelizeBuildables = "YES" | |||
| @@ -1,5 +1,6 @@ | |||
| import UIKit | |||
| import Flutter | |||
| import Firebase | |||
| @UIApplicationMain | |||
| @objc class AppDelegate: FlutterAppDelegate { | |||
| @@ -7,10 +8,24 @@ import Flutter | |||
| _ application: UIApplication, | |||
| didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? | |||
| ) -> Bool { | |||
| FirebaseApp.configure() | |||
| GeneratedPluginRegistrant.register(with: self) | |||
| if #available(iOS 10.0, *) { | |||
| // For iOS 10 display notification (sent via APNS) | |||
| 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) | |||
| } | |||
| } | |||
| @@ -2,22 +2,18 @@ | |||
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |||
| <plist version="1.0"> | |||
| <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> | |||
| <string>AIzaSyBWyE0r0AvSlfSZUlPGxwXT49qYX8fX7eo</string> | |||
| <string>AIzaSyDjiB8U1qE94jHiRTQMFIbJQXsopjA5RLc</string> | |||
| <key>GCM_SENDER_ID</key> | |||
| <string>145264060024</string> | |||
| <string>305595108522</string> | |||
| <key>PLIST_VERSION</key> | |||
| <string>1</string> | |||
| <key>BUNDLE_ID</key> | |||
| <string>vn.azteam.farmdemo</string> | |||
| <key>PROJECT_ID</key> | |||
| <string>smartfarm-73071</string> | |||
| <string>aztrace-nhatkycanhtac</string> | |||
| <key>STORAGE_BUCKET</key> | |||
| <string>smartfarm-73071.appspot.com</string> | |||
| <string>aztrace-nhatkycanhtac.appspot.com</string> | |||
| <key>IS_ADS_ENABLED</key> | |||
| <false></false> | |||
| <key>IS_ANALYTICS_ENABLED</key> | |||
| @@ -29,8 +25,8 @@ | |||
| <key>IS_SIGNIN_ENABLED</key> | |||
| <true></true> | |||
| <key>GOOGLE_APP_ID</key> | |||
| <string>1:145264060024:ios:537b6f9f805f96ea802f8d</string> | |||
| <string>1:305595108522:ios:4c0f809f1569feb93754d3</string> | |||
| <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> | |||
| </plist> | |||
| @@ -10,6 +10,7 @@ import 'package:get/get.dart'; | |||
| import 'authentication/bloc/authentication_bloc.dart'; | |||
| import 'data/repository/authentication_repository.dart'; | |||
| import 'presentation/screens/login/login_page.dart'; | |||
| import 'services/firebase_notification_service.dart'; | |||
| final GlobalKey<NavigatorState> globalNavigator = GlobalKey<NavigatorState>(); | |||
| @@ -59,7 +60,6 @@ class _AppViewState extends State<AppView> { | |||
| backgroundColor: Colors.white, | |||
| brightness: Brightness.light, | |||
| primaryColor: AppColors.DEFAULT, | |||
| accentColor: AppColors.DEFAULT, | |||
| hoverColor: AppColors.GREEN, | |||
| // textTheme: GoogleFonts.sairaTextTheme( | |||
| // Theme.of(context).textTheme, | |||
| @@ -71,6 +71,7 @@ class _AppViewState extends State<AppView> { | |||
| listener: (context, state) { | |||
| switch (state.status) { | |||
| case AuthenticationStatus.authenticated: | |||
| FirebaseNotificationService.initService(); | |||
| // _navigator!.pushAndRemoveUntil<void>( | |||
| // TabbarScreen.route(), | |||
| // (route) => false, | |||
| @@ -78,6 +79,7 @@ class _AppViewState extends State<AppView> { | |||
| Get.offAll(() => TabbarScreen()); | |||
| break; | |||
| case AuthenticationStatus.unauthenticated: | |||
| FirebaseNotificationService.initService(); | |||
| // _navigator!.pushAndRemoveUntil<void>( | |||
| // LoginPage.route(), | |||
| // (route) => false, | |||
| @@ -20,17 +20,8 @@ import 'presentation/screens/task/bloc/task_bloc.dart'; | |||
| final GlobalKey<NavigatorState> globalNavigator = GlobalKey<NavigatorState>(); | |||
| Future<void> main() async { | |||
| 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([ | |||
| DeviceOrientation.portraitDown, | |||
| @@ -1,5 +1,6 @@ | |||
| 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_svg/svg.dart'; | |||
| import 'package:intl/intl.dart'; | |||
| @@ -47,7 +48,7 @@ class _DatePickerWidgetState extends State<DatePickerWidget> { | |||
| onTap: widget.isEnable | |||
| ? () { | |||
| widget.isShowTime | |||
| ? DatePicker.showDateTimePicker( | |||
| ? datatTimePicker.DatePicker.showDateTimePicker( | |||
| context, | |||
| showTitleActions: true, | |||
| minTime: DateTime(DateTime.now().year - 5), | |||
| @@ -71,7 +72,7 @@ class _DatePickerWidgetState extends State<DatePickerWidget> { | |||
| } | |||
| }, | |||
| currentTime: selectedDate, | |||
| locale: LocaleType.vi, | |||
| locale: datatTimePicker.LocaleType.vi, | |||
| ) | |||
| : showDatePicker( | |||
| context: context, | |||
| @@ -1,6 +1,6 @@ | |||
| import 'package:farm_tpf/utils/validators.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_state_manager/get_state_manager.dart'; | |||
| import 'package:farm_tpf/utils/formatter.dart'; | |||
| @@ -66,11 +66,18 @@ class _FieldDateWidgetState extends State<FieldDateWidget> { | |||
| height: 44, | |||
| child: TextButton( | |||
| 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( | |||
| crossAxisAlignment: CrossAxisAlignment.start, | |||
| @@ -1,6 +1,6 @@ | |||
| import 'package:farm_tpf/utils/const_style.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:get/get.dart'; | |||
| import 'package:get/state_manager.dart'; | |||
| @@ -32,10 +32,17 @@ class _WidgetFieldDateTimePickerState extends State<WidgetFieldDateTimePicker> { | |||
| builder: (value) { | |||
| return TextButton( | |||
| 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( | |||
| padding: EdgeInsets.only(top: 0.0, right: 0.0, bottom: 10.5, left: 0.0), | |||
| @@ -52,7 +52,6 @@ class _TabbarScreenState extends State<TabbarScreen> { | |||
| Future<Null> getSharedPrefs() async { | |||
| 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); | |||
| var options = BaseOptions(baseUrl: ConstCommon.baseUrl); | |||
| options.headers["Authorization"] = "Bearer $token"; | |||
| @@ -117,6 +116,10 @@ class _TabbarScreenState extends State<TabbarScreen> { | |||
| // } else { | |||
| // 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) { | |||
| try { | |||
| @@ -0,0 +1,155 @@ | |||
| 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}'); | |||
| } | |||
| @@ -28,3 +28,7 @@ class DATA_CONST { | |||
| static const String PUSH_KEY = "PUSH_KEY"; | |||
| static const String CURRENT_FULL_NAME = "CURRENT_FULL_NAME"; | |||
| } | |||
| class PrefKey { | |||
| static const String push_key = 'push_key'; | |||
| } | |||
| @@ -37,10 +37,10 @@ packages: | |||
| dependency: transitive | |||
| description: | |||
| name: async | |||
| sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 | |||
| sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" | |||
| url: "https://pub.dev" | |||
| source: hosted | |||
| version: "2.10.0" | |||
| version: "2.11.0" | |||
| auto_size_text: | |||
| dependency: "direct main" | |||
| description: | |||
| @@ -85,10 +85,10 @@ packages: | |||
| dependency: transitive | |||
| description: | |||
| name: build_config | |||
| sha256: edd0f55c5af49a408311330cc84b213acc7491a85d6f2f890e503ffe00290176 | |||
| sha256: ad77deb6e9c143a3f550fbb4c5c1e0c6aadabe24274898d06b9526c61b9cf4fb | |||
| url: "https://pub.dev" | |||
| source: hosted | |||
| version: "0.4.6" | |||
| version: "1.0.0" | |||
| built_collection: | |||
| dependency: transitive | |||
| description: | |||
| @@ -181,18 +181,18 @@ packages: | |||
| dependency: transitive | |||
| description: | |||
| name: characters | |||
| sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c | |||
| sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" | |||
| url: "https://pub.dev" | |||
| source: hosted | |||
| version: "1.2.1" | |||
| version: "1.3.0" | |||
| checked_yaml: | |||
| dependency: transitive | |||
| description: | |||
| name: checked_yaml | |||
| sha256: d051b31d88264beeeef1fa971f19d9a1d614b157bc60dad5b3b360f996e48656 | |||
| sha256: dd007e4fb8270916820a0d66e24f619266b60773cddd082c6439341645af2659 | |||
| url: "https://pub.dev" | |||
| source: hosted | |||
| version: "1.0.4" | |||
| version: "2.0.1" | |||
| cli_util: | |||
| dependency: transitive | |||
| description: | |||
| @@ -221,10 +221,10 @@ packages: | |||
| dependency: transitive | |||
| description: | |||
| name: collection | |||
| sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 | |||
| sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 | |||
| url: "https://pub.dev" | |||
| source: hosted | |||
| version: "1.17.0" | |||
| version: "1.17.2" | |||
| convert: | |||
| dependency: transitive | |||
| description: | |||
| @@ -265,6 +265,14 @@ packages: | |||
| url: "https://pub.dev" | |||
| source: hosted | |||
| version: "2.1.1" | |||
| dbus: | |||
| dependency: transitive | |||
| description: | |||
| name: dbus | |||
| sha256: "365c771ac3b0e58845f39ec6deebc76e3276aa9922b0cc60840712094d9047ac" | |||
| url: "https://pub.dev" | |||
| source: hosted | |||
| version: "0.7.10" | |||
| dio: | |||
| dependency: "direct main" | |||
| description: | |||
| @@ -438,14 +446,14 @@ packages: | |||
| url: "https://pub.dev" | |||
| source: hosted | |||
| version: "3.3.1" | |||
| flutter_datetime_picker: | |||
| flutter_datetime_picker_plus: | |||
| dependency: "direct main" | |||
| description: | |||
| name: flutter_datetime_picker | |||
| sha256: "8e695c63c769350e541951227c2775190ec73ceda774a315b1dc9a99d5facfe5" | |||
| name: flutter_datetime_picker_plus | |||
| sha256: "7d82da02c4e070bb28a9107de119ad195e2319b45c786fecc13482a9ffcc51da" | |||
| url: "https://pub.dev" | |||
| source: hosted | |||
| version: "1.5.1" | |||
| version: "2.2.0" | |||
| flutter_image_compress: | |||
| dependency: "direct main" | |||
| description: | |||
| @@ -486,6 +494,30 @@ packages: | |||
| url: "https://pub.dev" | |||
| source: hosted | |||
| 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: | |||
| dependency: transitive | |||
| description: | |||
| @@ -506,10 +538,10 @@ packages: | |||
| dependency: "direct main" | |||
| description: | |||
| name: flutter_svg | |||
| sha256: "138b19e7554e97d680dc391fb21639c89db979f437a74bd2ad5ff207c0082a5c" | |||
| sha256: "7b4ca6cf3304575fe9c8ec64813c8d02ee41d2afe60bcfe0678bcb5375d596a2" | |||
| url: "https://pub.dev" | |||
| source: hosted | |||
| version: "0.20.0-nullsafety.3" | |||
| version: "2.0.10+1" | |||
| flutter_switch: | |||
| dependency: "direct main" | |||
| description: | |||
| @@ -572,10 +604,10 @@ packages: | |||
| dependency: transitive | |||
| description: | |||
| name: http | |||
| sha256: "5895291c13fa8a3bd82e76d5627f69e0d85ca6a30dcac95c4ea19a5d555879c2" | |||
| sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525" | |||
| url: "https://pub.dev" | |||
| source: hosted | |||
| version: "0.13.6" | |||
| version: "1.1.0" | |||
| http_parser: | |||
| dependency: "direct main" | |||
| description: | |||
| @@ -708,26 +740,26 @@ packages: | |||
| dependency: transitive | |||
| description: | |||
| name: matcher | |||
| sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" | |||
| sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" | |||
| url: "https://pub.dev" | |||
| source: hosted | |||
| version: "0.12.13" | |||
| version: "0.12.16" | |||
| material_color_utilities: | |||
| dependency: transitive | |||
| description: | |||
| name: material_color_utilities | |||
| sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 | |||
| sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" | |||
| url: "https://pub.dev" | |||
| source: hosted | |||
| version: "0.2.0" | |||
| version: "0.5.0" | |||
| meta: | |||
| dependency: "direct main" | |||
| description: | |||
| name: meta | |||
| sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" | |||
| sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" | |||
| url: "https://pub.dev" | |||
| source: hosted | |||
| version: "1.8.0" | |||
| version: "1.9.1" | |||
| mime: | |||
| dependency: "direct main" | |||
| description: | |||
| @@ -804,26 +836,18 @@ packages: | |||
| dependency: transitive | |||
| description: | |||
| name: path | |||
| sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b | |||
| sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" | |||
| url: "https://pub.dev" | |||
| 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: | |||
| dependency: transitive | |||
| description: | |||
| name: path_parsing | |||
| sha256: ee5c47c1058ad66b4a41746ec3996af9593d0858872807bcd64ac118f0700337 | |||
| sha256: e3e67b1629e6f7e8100b367d3db6ba6af4b1f0bb80f64db18ef1fbabd2fa9ccf | |||
| url: "https://pub.dev" | |||
| source: hosted | |||
| version: "0.2.1" | |||
| version: "1.0.1" | |||
| path_provider: | |||
| dependency: "direct main" | |||
| description: | |||
| @@ -892,10 +916,10 @@ packages: | |||
| dependency: transitive | |||
| description: | |||
| name: petitparser | |||
| sha256: "49392a45ced973e8d94a85fdb21293fbb40ba805fc49f2965101ae748a3683b4" | |||
| sha256: cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750 | |||
| url: "https://pub.dev" | |||
| source: hosted | |||
| version: "5.1.0" | |||
| version: "5.4.0" | |||
| platform: | |||
| dependency: "direct overridden" | |||
| description: | |||
| @@ -932,10 +956,10 @@ packages: | |||
| dependency: transitive | |||
| description: | |||
| name: pubspec_parse | |||
| sha256: d65b4c44175a6882692fae384be22c3eed8b9235bb758d8984b11fec55848b8c | |||
| sha256: "0e01f805457ef610ccaf8d18067596afc34107a27149778b06b2083edbc140c1" | |||
| url: "https://pub.dev" | |||
| source: hosted | |||
| version: "0.1.8" | |||
| version: "1.1.0" | |||
| qr_code_scanner: | |||
| dependency: "direct main" | |||
| description: | |||
| @@ -1065,10 +1089,10 @@ packages: | |||
| dependency: transitive | |||
| description: | |||
| name: source_span | |||
| sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 | |||
| sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" | |||
| url: "https://pub.dev" | |||
| source: hosted | |||
| version: "1.9.1" | |||
| version: "1.10.0" | |||
| sprintf: | |||
| dependency: transitive | |||
| description: | |||
| @@ -1145,10 +1169,18 @@ packages: | |||
| dependency: transitive | |||
| description: | |||
| name: test_api | |||
| sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 | |||
| sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8" | |||
| url: "https://pub.dev" | |||
| 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: | |||
| dependency: "direct main" | |||
| description: | |||
| @@ -1181,6 +1213,30 @@ packages: | |||
| url: "https://pub.dev" | |||
| source: hosted | |||
| 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: | |||
| dependency: transitive | |||
| description: | |||
| @@ -1197,6 +1253,14 @@ packages: | |||
| url: "https://pub.dev" | |||
| source: hosted | |||
| version: "1.0.2" | |||
| web: | |||
| dependency: transitive | |||
| description: | |||
| name: web | |||
| sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 | |||
| url: "https://pub.dev" | |||
| source: hosted | |||
| version: "0.1.4-beta" | |||
| win32: | |||
| dependency: transitive | |||
| description: | |||
| @@ -1217,10 +1281,10 @@ packages: | |||
| dependency: transitive | |||
| description: | |||
| name: xml | |||
| sha256: "80d494c09849dc3f899d227a78c30c5b949b985ededf884cb3f3bcd39f4b447a" | |||
| sha256: "5bc72e1e45e941d825fd7468b9b4cc3b9327942649aeb6fc5cdbf135f0a86e84" | |||
| url: "https://pub.dev" | |||
| source: hosted | |||
| version: "5.4.1" | |||
| version: "6.3.0" | |||
| yaml: | |||
| dependency: transitive | |||
| description: | |||
| @@ -1230,5 +1294,5 @@ packages: | |||
| source: hosted | |||
| version: "3.1.2" | |||
| 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" | |||
| @@ -2,10 +2,10 @@ name: farm_tpf | |||
| description: A new Flutter project. | |||
| publish_to: 'none' | |||
| version: 1.1.8+24 | |||
| version: 1.1.8+25 | |||
| environment: | |||
| sdk: ">=2.17.0 <=3.0.0" | |||
| sdk: ">=3.0.0 <4.0.0" | |||
| module: | |||
| androidX: true | |||
| @@ -36,9 +36,10 @@ dependencies: | |||
| change_app_package_name: ^1.1.0 | |||
| #flutter pub run change_app_package_name:main vn.azteam.farmdemo | |||
| firebase_messaging: ^14.7.0 | |||
| flutter_local_notifications: ^17.1.2 | |||
| get: ^4.1.2 | |||
| intl: ^0.18.1 | |||
| flutter_datetime_picker: ^1.5.1 | |||
| flutter_datetime_picker_plus: ^2.1.0 | |||
| # http: ^1.1.0 | |||
| http_parser: ^4.0.2 | |||
| rflutter_alert: ^2.0.7 | |||
| @@ -54,7 +55,7 @@ dependencies: | |||
| mime: ^1.0.4 | |||
| flutter_image_compress: ^2.1.0 | |||
| flutter_svg: ^0.20.0-nullsafety.3 | |||
| flutter_svg: ^2.0.10+1 | |||
| # google_fonts: ^6.1.0 | |||
| # ffi: ^1.0.0 | |||
| qr_code_scanner: ^1.0.1 | |||