├── ios ├── Flutter │ ├── Debug.xcconfig │ ├── Release.xcconfig │ ├── Generated.xcconfig │ ├── flutter_export_environment.sh │ └── AppFrameworkInfo.plist ├── Runner │ ├── AppDelegate.h │ ├── Assets.xcassets │ │ ├── LaunchImage.imageset │ │ │ ├── LaunchImage.png │ │ │ ├── LaunchImage@2x.png │ │ │ ├── LaunchImage@3x.png │ │ │ ├── README.md │ │ │ └── Contents.json │ │ └── AppIcon.appiconset │ │ │ ├── Icon-App-20x20@1x.png │ │ │ ├── Icon-App-20x20@2x.png │ │ │ ├── Icon-App-20x20@3x.png │ │ │ ├── Icon-App-29x29@1x.png │ │ │ ├── Icon-App-29x29@2x.png │ │ │ ├── Icon-App-29x29@3x.png │ │ │ ├── Icon-App-40x40@1x.png │ │ │ ├── Icon-App-40x40@2x.png │ │ │ ├── Icon-App-40x40@3x.png │ │ │ ├── Icon-App-60x60@2x.png │ │ │ ├── Icon-App-60x60@3x.png │ │ │ ├── Icon-App-76x76@1x.png │ │ │ ├── Icon-App-76x76@2x.png │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ ├── Icon-App-83.5x83.5@2x.png │ │ │ └── Contents.json │ ├── main.m │ ├── GeneratedPluginRegistrant.h │ ├── AppDelegate.m │ ├── Base.lproj │ │ ├── Main.storyboard │ │ └── LaunchScreen.storyboard │ ├── Info.plist │ └── GeneratedPluginRegistrant.m ├── Runner.xcodeproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ ├── WorkspaceSettings.xcsettings │ │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata │ │ └── xcschemes │ │ └── Runner.xcscheme └── Runner.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ ├── WorkspaceSettings.xcsettings │ └── IDEWorkspaceChecks.plist ├── assets ├── Thumbs.db ├── doctor.png ├── doctor_1.png ├── doctor_3.png ├── doctor_4.png ├── images │ ├── Thumbs.db │ └── google_signin_button.png └── img │ ├── google_signin_button.png │ ├── covid.svg │ └── Skin.svg ├── screenshots ├── home.jpg ├── doctor.jpg ├── drawer.jpg ├── login.jpg └── profile.jpg ├── lib ├── widgets │ ├── UserInfo.dart │ ├── progress.dart │ └── utils.dart ├── pages │ ├── appointments.dart │ ├── symppred.dart │ ├── covid.dart │ ├── tbpage.dart │ └── skincanc.dart ├── src │ ├── widgets │ │ ├── coustom_route.dart │ │ ├── rating_start.dart │ │ └── progress_widget.dart │ ├── theme │ │ ├── text_styles.dart │ │ ├── light_color.dart │ │ ├── theme.dart │ │ └── extention.dart │ ├── config │ │ └── route.dart │ ├── model │ │ ├── data.dart │ │ └── dactor_model.dart │ └── pages │ │ ├── splash_page.dart │ │ └── detail_page.dart ├── services │ └── authservice.dart ├── main.dart ├── authentication │ ├── signin.dart │ └── signredirect.dart └── startpage.dart ├── android ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── app │ ├── src │ │ ├── main │ │ │ ├── res │ │ │ │ ├── drawable │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ └── launch_background.xml │ │ │ │ ├── raw │ │ │ │ │ └── a_long_cold_sting.wav │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── drawable-v21 │ │ │ │ │ └── launch_background.xml │ │ │ │ ├── values │ │ │ │ │ └── styles.xml │ │ │ │ └── values-night │ │ │ │ │ └── styles.xml │ │ │ ├── kotlin │ │ │ │ └── com │ │ │ │ │ └── healthcare │ │ │ │ │ └── health │ │ │ │ │ └── MainActivity.kt │ │ │ ├── java │ │ │ │ └── io │ │ │ │ │ └── flutter │ │ │ │ │ └── plugins │ │ │ │ │ └── GeneratedPluginRegistrant.java │ │ │ └── AndroidManifest.xml │ │ ├── debug │ │ │ └── AndroidManifest.xml │ │ └── profile │ │ │ └── AndroidManifest.xml │ ├── google-services.json │ └── build.gradle ├── local.properties ├── settings.gradle ├── build.gradle ├── health_android.iml ├── gradlew.bat └── gradlew ├── .metadata ├── README.md ├── health.iml ├── .gitignore ├── .flutter-plugins ├── pubspec.yaml ├── .packages └── .flutter-plugins-dependencies /ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /assets/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/assets/Thumbs.db -------------------------------------------------------------------------------- /assets/doctor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/assets/doctor.png -------------------------------------------------------------------------------- /assets/doctor_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/assets/doctor_1.png -------------------------------------------------------------------------------- /assets/doctor_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/assets/doctor_3.png -------------------------------------------------------------------------------- /assets/doctor_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/assets/doctor_4.png -------------------------------------------------------------------------------- /screenshots/home.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/screenshots/home.jpg -------------------------------------------------------------------------------- /assets/images/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/assets/images/Thumbs.db -------------------------------------------------------------------------------- /screenshots/doctor.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/screenshots/doctor.jpg -------------------------------------------------------------------------------- /screenshots/drawer.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/screenshots/drawer.jpg -------------------------------------------------------------------------------- /screenshots/login.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/screenshots/login.jpg -------------------------------------------------------------------------------- /screenshots/profile.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/screenshots/profile.jpg -------------------------------------------------------------------------------- /lib/widgets/UserInfo.dart: -------------------------------------------------------------------------------- 1 | class UserInformation { 2 | String username; 3 | String customBio; 4 | String imgUrl; 5 | } -------------------------------------------------------------------------------- /assets/img/google_signin_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/assets/img/google_signin_button.png -------------------------------------------------------------------------------- /assets/images/google_signin_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/assets/images/google_signin_button.png -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | android.enableR8=true 5 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /ios/Runner/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @interface AppDelegate : FlutterAppDelegate 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/android/app/src/main/res/drawable/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/raw/a_long_cold_sting.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/android/app/src/main/res/raw/a_long_cold_sting.wav -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /android/local.properties: -------------------------------------------------------------------------------- 1 | sdk.dir=C:/Users/HP/AppData/Local/Android/Sdk 2 | flutter.sdk=G:\\Flutter Dev\\flutter 3 | flutter.buildMode=debug 4 | flutter.versionName=1.0.0 5 | flutter.versionCode=1 -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LakshmiNarayanan2003/HealthCare/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /android/app/src/main/kotlin/com/healthcare/health/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.healthcare.health 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/Runner/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char* argv[]) { 6 | @autoreleasepool { 7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip 7 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: 25134a16d128ed22dc0ad8d41d2b931fcad3b014 8 | channel: master 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /lib/pages/appointments.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class appointments extends StatefulWidget { 4 | @override 5 | _appointmentsState createState() => _appointmentsState(); 6 | } 7 | 8 | class _appointmentsState extends State { 9 | @override 10 | Widget build(BuildContext context) { 11 | return Container(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /lib/widgets/progress.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/cupertino.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | Container linearProgress() { 5 | return Container( 6 | // padding: EdgeInsets.only(bottom: 10.0), 7 | child: LinearProgressIndicator( 8 | // backgroundColor: Colors.white, 9 | valueColor: AlwaysStoppedAnimation(Colors.blue), 10 | ), 11 | ); 12 | } 13 | -------------------------------------------------------------------------------- /ios/Runner/GeneratedPluginRegistrant.h: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | #ifndef GeneratedPluginRegistrant_h 6 | #define GeneratedPluginRegistrant_h 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface GeneratedPluginRegistrant : NSObject 13 | + (void)registerWithRegistry:(NSObject*)registry; 14 | @end 15 | 16 | NS_ASSUME_NONNULL_END 17 | #endif /* GeneratedPluginRegistrant_h */ 18 | -------------------------------------------------------------------------------- /ios/Flutter/Generated.xcconfig: -------------------------------------------------------------------------------- 1 | // This is a generated file; do not edit or check into version control. 2 | FLUTTER_ROOT=G:\Flutter Dev\flutter 3 | FLUTTER_APPLICATION_PATH=C:\Users\HP\Documents\AndroidStudioProjects\health 4 | FLUTTER_TARGET=lib\main.dart 5 | FLUTTER_BUILD_DIR=build 6 | SYMROOT=${SOURCE_ROOT}/../build\ios 7 | FLUTTER_BUILD_NAME=1.0.0 8 | FLUTTER_BUILD_NUMBER=1 9 | DART_OBFUSCATION=false 10 | TRACK_WIDGET_CREATION=false 11 | TREE_SHAKE_ICONS=false 12 | PACKAGE_CONFIG=.packages 13 | -------------------------------------------------------------------------------- /ios/Runner/AppDelegate.m: -------------------------------------------------------------------------------- 1 | #import "AppDelegate.h" 2 | #import "GeneratedPluginRegistrant.h" 3 | 4 | @implementation AppDelegate 5 | 6 | - (BOOL)application:(UIApplication *)application 7 | didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 8 | [GeneratedPluginRegistrant registerWithRegistry:self]; 9 | // Override point for customization after application launch. 10 | return [super application:application didFinishLaunchingWithOptions:launchOptions]; 11 | } 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties") 4 | def properties = new Properties() 5 | 6 | assert localPropertiesFile.exists() 7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } 8 | 9 | def flutterSdkPath = properties.getProperty("flutter.sdk") 10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties" 11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" 12 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /lib/widgets/utils.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/cupertino.dart'; 2 | import 'package:url_launcher/url_launcher.dart'; 3 | 4 | class Utils { 5 | static Future openLink({@required String url}) => launchUrl(url); 6 | 7 | static Future launchUrl(String url) async { 8 | if (await canLaunch(url)) { 9 | await launch(url); 10 | } 11 | } 12 | 13 | static void openEmail({String toEmail, String subject, String body}) async { 14 | final url = 15 | 'mailto:$toEmail?subject=${Uri.encodeFull(subject)}&body=${Uri.encodeFull(body)}'; 16 | await launchUrl(url); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/widgets/coustom_route.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class CustomRoute extends MaterialPageRoute { 4 | CustomRoute({WidgetBuilder builder, RouteSettings settings}) 5 | : super(builder: builder, settings: settings); 6 | @override 7 | Widget buildTransitions(BuildContext context, Animation animation, 8 | Animation secondaryAnimation, Widget child) { 9 | if (settings.name == "SplashPage") { 10 | return child; 11 | } 12 | return FadeTransition( 13 | opacity: animation, 14 | child: child, 15 | ); 16 | } 17 | } -------------------------------------------------------------------------------- /ios/Flutter/flutter_export_environment.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # This is a generated file; do not edit or check into version control. 3 | export "FLUTTER_ROOT=G:\Flutter Dev\flutter" 4 | export "FLUTTER_APPLICATION_PATH=C:\Users\HP\Documents\AndroidStudioProjects\health" 5 | export "FLUTTER_TARGET=lib\main.dart" 6 | export "FLUTTER_BUILD_DIR=build" 7 | export "SYMROOT=${SOURCE_ROOT}/../build\ios" 8 | export "FLUTTER_BUILD_NAME=1.0.0" 9 | export "FLUTTER_BUILD_NUMBER=1" 10 | export "DART_OBFUSCATION=false" 11 | export "TRACK_WIDGET_CREATION=false" 12 | export "TREE_SHAKE_ICONS=false" 13 | export "PACKAGE_CONFIG=.packages" 14 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext.kotlin_version = '1.3.50' 3 | repositories { 4 | google() 5 | jcenter() 6 | } 7 | 8 | dependencies { 9 | classpath 'com.android.tools.build:gradle:4.1.0' 10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 11 | classpath 'com.google.gms:google-services:4.3.8' 12 | } 13 | } 14 | 15 | allprojects { 16 | repositories { 17 | google() 18 | jcenter() 19 | } 20 | } 21 | 22 | rootProject.buildDir = '../build' 23 | subprojects { 24 | project.buildDir = "${rootProject.buildDir}/${project.name}" 25 | } 26 | subprojects { 27 | project.evaluationDependsOn(':app') 28 | } 29 | 30 | task clean(type: Delete) { 31 | delete rootProject.buildDir 32 | } 33 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # HealthCare 2 | 3 | Patients can consult & book an appointment with the Doctors. They can use the AI for Healthcare to detect diseases early and thereby save their lives! 4 | 5 | ## ✨ Features 6 | - [x] Consult & Book appointment. 7 | - [x] Login Screen 8 | - [x] AI Predictions (Models removed) 9 | - [x] Appointment notification(Alarm) 10 | - [x] RazorPay Payment 11 | - [x] List of nearby hospitals 12 | - [x] Custom status 13 | - [x] Beautiful UI 14 | 15 | ## ✨ Screenshots: 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | ## Have fun 8^) 28 | -------------------------------------------------------------------------------- /ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 8.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /health.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /lib/pages/symppred.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:google_fonts/google_fonts.dart'; 3 | 4 | class SympPred extends StatefulWidget { 5 | @override 6 | _SympPredState createState() => _SympPredState(); 7 | } 8 | 9 | class _SympPredState extends State { 10 | @override 11 | Widget build(BuildContext context) { 12 | return Scaffold( 13 | appBar: AppBar( 14 | elevation: 0.0, 15 | backgroundColor: Colors.transparent, 16 | leading: IconButton( 17 | icon: Icon( 18 | Icons.arrow_back, 19 | color: Colors.black, 20 | ), 21 | onPressed: () { 22 | Navigator.pop(context); 23 | }, 24 | ), 25 | title: Text( 26 | "TB Prediction", 27 | style: GoogleFonts.merriweather( 28 | color: Colors.black, 29 | ), 30 | ), 31 | ), 32 | ); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | 12 | # IntelliJ related 13 | *.iml 14 | *.ipr 15 | *.iws 16 | .idea/ 17 | 18 | # The .vscode folder contains launch configuration and tasks you configure in 19 | # VS Code which you may wish to be included in version control, so this line 20 | # is commented out by default. 21 | #.vscode/ 22 | 23 | # Flutter/Dart/Pub related 24 | **/doc/api/ 25 | **/ios/Flutter/.last_build_id 26 | .dart_tool/ 27 | .flutter-plugins 28 | .flutter-plugins-dependencies 29 | .packages 30 | .pub-cache/ 31 | .pub/ 32 | /build/ 33 | 34 | # Web related 35 | lib/generated_plugin_registrant.dart 36 | 37 | # Symbolication related 38 | app.*.symbols 39 | 40 | # Obfuscation related 41 | app.*.map.json 42 | 43 | # Android Studio will place build artifacts here 44 | /android/app/debug 45 | /android/app/profile 46 | /android/app/release 47 | -------------------------------------------------------------------------------- /lib/src/theme/text_styles.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class FontSizes { 4 | static double scale = 1.2; 5 | static double get body => 14 * scale; 6 | static double get bodySm => 12 * scale; 7 | static double get title => 16 * scale; 8 | static double get titleM => 18 * scale; 9 | static double get sizeXXl => 28 * scale; 10 | } 11 | 12 | class TextStyles { 13 | static TextStyle get title =>TextStyle(fontSize: FontSizes.title); 14 | static TextStyle get titleM =>TextStyle(fontSize: FontSizes.titleM); 15 | static TextStyle get titleNormal => title.copyWith(fontWeight: FontWeight.w500); 16 | static TextStyle get titleMedium => titleM.copyWith(fontWeight: FontWeight.w300); 17 | static TextStyle get h1Style => TextStyle(fontSize: FontSizes.sizeXXl, fontWeight: FontWeight.bold); 18 | 19 | static TextStyle get body => TextStyle(fontSize: FontSizes.body, fontWeight: FontWeight.w300); 20 | static TextStyle get bodySm => body.copyWith(fontSize: FontSizes.bodySm); 21 | } -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /lib/src/theme/light_color.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class LightColor { 4 | static const Color background = Color(0XFFfefefe); 5 | 6 | static const Color titleTextColor = const Color(0xff1b1718); 7 | static const Color subTitleTextColor = const Color(0xffb9bfcd); 8 | 9 | static const Color skyBlue = Color(0xff71b4fb); 10 | static const Color lightBlue = Color(0xff7fbcfb); 11 | static const Color extraLightBlue = Color(0xffd9eeff); 12 | 13 | static const Color orange = Color(0xfffa8c73); 14 | static const Color lightOrange = Color(0xfffa9881); 15 | 16 | static const Color purple = Color(0xff8873f4); 17 | static const Color purpleLight = Color(0xff9489f4); 18 | static const Color purpleExtraLight = Color(0xffb1a5f6); 19 | 20 | static const Color grey = Color(0xffb8bfce); 21 | 22 | static const Color iconColor = Color(0xffcbd0db); 23 | static const Color green = Color(0xff4cd1bc); 24 | static const Color lightGreen = Color(0xff5ed6c3); 25 | 26 | static const Color black = Color(0xff20262C); 27 | static const Color lightblack = Color(0xff5F5F60); 28 | } 29 | -------------------------------------------------------------------------------- /android/app/src/main/res/values-night/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /lib/src/widgets/rating_start.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:health/src/theme/light_color.dart'; 3 | 4 | class RatingStar extends StatefulWidget { 5 | RatingStar({Key key, this.rating}) : super(key: key); 6 | final double rating; 7 | 8 | @override 9 | _RatingStarState createState() => _RatingStarState(); 10 | } 11 | 12 | class _RatingStarState extends State { 13 | Widget _start(int index) { 14 | bool halfStar = false; 15 | if ((widget.rating * 2) % 2 != 0) { 16 | if (index < widget.rating && index == widget.rating - .5) { 17 | halfStar = true; 18 | } 19 | } 20 | 21 | return Icon(halfStar ? Icons.star_half : Icons.star, 22 | color: index < widget.rating ? LightColor.orange : LightColor.grey); 23 | } 24 | 25 | @override 26 | Widget build(BuildContext context) { 27 | return Container( 28 | child: TweenAnimationBuilder( 29 | tween: Tween(begin: 0, end: 5), 30 | duration: Duration(milliseconds: 500), 31 | builder: (context, value, child) { 32 | return Wrap( 33 | children: 34 | Iterable.generate(value.toInt(), (index) => _start(index)) 35 | .toList()); 36 | }, 37 | ), 38 | ); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /lib/services/authservice.dart: -------------------------------------------------------------------------------- 1 | import 'package:firebase_auth/firebase_auth.dart'; 2 | import 'package:flutter/cupertino.dart'; 3 | import 'package:flutter/material.dart'; 4 | import 'package:fluttertoast/fluttertoast.dart'; 5 | import 'package:health/src/pages/home_page.dart'; 6 | import 'package:health/startpage.dart'; 7 | 8 | class AuthService { 9 | signout(BuildContext context) { 10 | FirebaseAuth.instance.signOut().then((value) { 11 | Navigator.pushReplacement(context, MaterialPageRoute(builder: (context) { 12 | return StartScreen(); 13 | })); 14 | }); 15 | } 16 | 17 | signIn(BuildContext context, AuthCredential authCredential) async { 18 | try { 19 | await FirebaseAuth.instance 20 | .signInWithCredential(authCredential) 21 | .then((value) { 22 | Navigator.pushReplacement(context, 23 | MaterialPageRoute(builder: (context) { 24 | return HomePage(); 25 | })); 26 | }); 27 | } catch (e) { 28 | Fluttertoast.showToast( 29 | msg: "The OTP you have entered is incorrect.", 30 | backgroundColor: Colors.lightGreen); 31 | } 32 | } 33 | 34 | signInWithOTP(BuildContext context, smsCode, verId) { 35 | AuthCredential authCredential = 36 | PhoneAuthProvider.credential(verificationId: verId, smsCode: smsCode); 37 | 38 | signIn(context, authCredential); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:firebase_core/firebase_core.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:flutter_local_notifications/flutter_local_notifications.dart'; 4 | import 'package:health/src/config/route.dart'; 5 | import 'package:health/startpage.dart'; 6 | 7 | 8 | final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = 9 | FlutterLocalNotificationsPlugin(); 10 | 11 | main() async { 12 | WidgetsFlutterBinding.ensureInitialized(); 13 | var initializationSettingAndroid = AndroidInitializationSettings('ic_launcher'); 14 | var initializationSettingsIOS = IOSInitializationSettings( 15 | requestAlertPermission: true, 16 | requestBadgePermission: true, 17 | requestSoundPermission: true, 18 | onDidReceiveLocalNotification: 19 | (int id, String title, String body, String payload) async {}); 20 | var initializationSettings = InitializationSettings(initializationSettingAndroid, initializationSettingsIOS); 21 | await flutterLocalNotificationsPlugin.initialize(initializationSettings, 22 | onSelectNotification: (String payload) async { 23 | if (payload != null) { 24 | debugPrint('payload' + payload); 25 | } 26 | } 27 | ); 28 | await Firebase.initializeApp(); 29 | runApp(MaterialApp( 30 | title: 'HealthCare', 31 | routes: Routes.getRoute(), 32 | onGenerateRoute: (settings) => Routes.onGenerateRoute(settings), 33 | debugShowCheckedModeBanner: false, 34 | home: StartScreen(), 35 | )); 36 | } 37 | -------------------------------------------------------------------------------- /android/app/google-services.json: -------------------------------------------------------------------------------- 1 | { 2 | "project_info": { 3 | "project_number": "603094011343", 4 | "project_id": "healthcare-c5bf1", 5 | "storage_bucket": "healthcare-c5bf1.appspot.com" 6 | }, 7 | "client": [ 8 | { 9 | "client_info": { 10 | "mobilesdk_app_id": "1:603094011343:android:198a75d4ccffc4134d96ba", 11 | "android_client_info": { 12 | "package_name": "com.healthcare.health" 13 | } 14 | }, 15 | "oauth_client": [ 16 | { 17 | "client_id": "603094011343-urcnel9tv14btcig0bqdme5qv3qiu1ep.apps.googleusercontent.com", 18 | "client_type": 1, 19 | "android_info": { 20 | "package_name": "com.healthcare.health", 21 | "certificate_hash": "6aa23740f6fd8b624e5449b58e26fb3edde083a8" 22 | } 23 | }, 24 | { 25 | "client_id": "603094011343-6aahjqkslhn1uugg2vpiftrd5t0p46f3.apps.googleusercontent.com", 26 | "client_type": 3 27 | } 28 | ], 29 | "api_key": [ 30 | { 31 | "current_key": "AIzaSyA3HL7EwtB5QRiwulftOWUPwUDp31tfz6Q" 32 | } 33 | ], 34 | "services": { 35 | "appinvite_service": { 36 | "other_platform_oauth_client": [ 37 | { 38 | "client_id": "603094011343-6aahjqkslhn1uugg2vpiftrd5t0p46f3.apps.googleusercontent.com", 39 | "client_type": 3 40 | } 41 | ] 42 | } 43 | } 44 | } 45 | ], 46 | "configuration_version": "1" 47 | } -------------------------------------------------------------------------------- /lib/src/config/route.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:health/pages/covid.dart'; 3 | import 'package:health/pages/skincanc.dart'; 4 | import 'package:health/pages/tbpage.dart'; 5 | import 'package:health/src/pages/detail_page.dart'; 6 | import 'package:health/src/pages/home_page.dart'; 7 | import 'package:health/src/widgets/coustom_route.dart'; 8 | import 'package:health/pages/appointments.dart'; 9 | 10 | class Routes { 11 | static Map getRoute() { 12 | return { 13 | '/HomePage': (_) => HomePage(), 14 | }; 15 | } 16 | 17 | static Route onGenerateRoute(RouteSettings settings) { 18 | final List pathElements = settings.name.split('/'); 19 | if (pathElements[0] != '' || pathElements.length == 1) { 20 | return null; 21 | } 22 | switch (pathElements[1]) { 23 | case "DetailPage": 24 | return CustomRoute( 25 | builder: (BuildContext context) => DetailPage( 26 | model: settings.arguments, 27 | )); 28 | case "TBPage": 29 | return CustomRoute(builder: (BuildContext context) => TBPage()); 30 | case "SkinPage": 31 | return CustomRoute(builder: (BuildContext context) => SkinPage()); 32 | case "CovidPage": 33 | return CustomRoute( 34 | builder: (BuildContext context) => CovidPage()); 35 | case "appointments": 36 | return CustomRoute( 37 | builder: (BuildContext context) => appointments() 38 | ); 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /android/health_android.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /ios/Runner/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /ios/Runner/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | health 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | $(FLUTTER_BUILD_NAME) 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | $(FLUTTER_BUILD_NUMBER) 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIMainStoryboardFile 28 | Main 29 | UISupportedInterfaceOrientations 30 | 31 | UIInterfaceOrientationPortrait 32 | UIInterfaceOrientationLandscapeLeft 33 | UIInterfaceOrientationLandscapeRight 34 | 35 | UISupportedInterfaceOrientations~ipad 36 | 37 | UIInterfaceOrientationPortrait 38 | UIInterfaceOrientationPortraitUpsideDown 39 | UIInterfaceOrientationLandscapeLeft 40 | UIInterfaceOrientationLandscapeRight 41 | 42 | UIViewControllerBasedStatusBarAppearance 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /lib/src/theme/theme.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | import 'light_color.dart'; 4 | 5 | 6 | class AppTheme { 7 | const AppTheme(); 8 | static ThemeData lightTheme = ThemeData( 9 | backgroundColor: LightColor.background, 10 | primaryColor: LightColor.purple, 11 | cardTheme: CardTheme(color: LightColor.background), 12 | textTheme: TextTheme(display1: TextStyle(color: LightColor.black)), 13 | iconTheme: IconThemeData(color: LightColor.iconColor), 14 | bottomAppBarColor: LightColor.background, 15 | dividerColor: LightColor.grey, 16 | primaryTextTheme: TextTheme( 17 | body1: TextStyle(color:LightColor.titleTextColor) 18 | ) 19 | ); 20 | 21 | static TextStyle titleStyle = const TextStyle(color: LightColor.titleTextColor, fontSize: 16); 22 | static TextStyle subTitleStyle = const TextStyle(color: LightColor.subTitleTextColor, fontSize: 12); 23 | 24 | static TextStyle h1Style = const TextStyle(fontSize: 24, fontWeight: FontWeight.bold); 25 | static TextStyle h2Style = const TextStyle(fontSize: 22); 26 | static TextStyle h3Style = const TextStyle(fontSize: 20); 27 | static TextStyle h4Style = const TextStyle(fontSize: 18); 28 | static TextStyle h5Style = const TextStyle(fontSize: 16); 29 | static TextStyle h6Style = const TextStyle(fontSize: 14); 30 | 31 | static List shadow = [ 32 | BoxShadow(color: Color(0xfff8f8f8), blurRadius: 10, spreadRadius: 15), 33 | ]; 34 | 35 | 36 | static EdgeInsets padding = const EdgeInsets.symmetric(horizontal: 20, vertical: 10); 37 | static EdgeInsets hPadding = const EdgeInsets.symmetric(horizontal: 10,); 38 | 39 | static double fullWidth(BuildContext context){ 40 | return MediaQuery.of(context).size.width; 41 | } 42 | static double fullHeight(BuildContext context){ 43 | return MediaQuery.of(context).size.height; 44 | } 45 | } -------------------------------------------------------------------------------- /lib/src/model/data.dart: -------------------------------------------------------------------------------- 1 | final doctorMapList = [ 2 | { 3 | "name": "Dr. David Kemp", 4 | "type": "Heart Sergeon", 5 | "rating": 4.5, 6 | "goodReviews": 79.2, 7 | "totalScore": 93.2, 8 | "satisfaction": 85.2, 9 | "isfavourite": true, 10 | "image":"assets/doctor.png", 11 | "description": "A doctor can be found in several settings, including public health organization, group practices and hospitals They have some of the most diverse and challenging careears available and part of a universally well-respected profession", 12 | }, 13 | { 14 | "name": "Dr. katthy Mathews", 15 | "type": "Neurology", 16 | "rating": 3.5, 17 | "goodReviews": 93.2, 18 | "totalScore": 72.2, 19 | "satisfaction": 89.2, 20 | "isfavourite": false, 21 | "image":"assets/doctor_4.png", 22 | "description": "A doctor can be found in several settings, including public health organization, group practices and hospitals They have some of the most diverse and challenging careears available and part of a universally well-respected profession", 23 | }, 24 | { 25 | "name": "DR. Morris", 26 | "type": "Cardio Sergeon", 27 | "rating": 2.5, 28 | "goodReviews": 88.2, 29 | "totalScore": 93.94, 30 | "satisfaction": 78.2, 31 | "isfavourite": false, 32 | "image":"assets/doctor_3.png", 33 | "description": "A doctor can be found in several settings, including public health organization, group practices and hospitals They have some of the most diverse and challenging careears available and part of a universally well-respected profession", 34 | }, 35 | { 36 | "name": "Dr. Bruce Banner", 37 | "type": "Heart Sergeon", 38 | "rating": 1.5, 39 | "goodReviews": 12.2, 40 | "totalScore": 75.2, 41 | "satisfaction": 84.2, 42 | "isfavourite": true, 43 | "image":"assets/doctor_1.png", 44 | "description": "A doctor can be found in several settings, including public health organization, group practices and hospitals They have some of the most diverse and challenging careears available and part of a universally well-respected profession", 45 | } 46 | ]; 47 | -------------------------------------------------------------------------------- /android/app/build.gradle: -------------------------------------------------------------------------------- 1 | def localProperties = new Properties() 2 | def localPropertiesFile = rootProject.file('local.properties') 3 | if (localPropertiesFile.exists()) { 4 | localPropertiesFile.withReader('UTF-8') { reader -> 5 | localProperties.load(reader) 6 | } 7 | } 8 | 9 | def flutterRoot = localProperties.getProperty('flutter.sdk') 10 | if (flutterRoot == null) { 11 | throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") 12 | } 13 | 14 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode') 15 | if (flutterVersionCode == null) { 16 | flutterVersionCode = '1' 17 | } 18 | 19 | def flutterVersionName = localProperties.getProperty('flutter.versionName') 20 | if (flutterVersionName == null) { 21 | flutterVersionName = '1.0' 22 | } 23 | 24 | apply plugin: 'com.android.application' 25 | apply plugin: 'kotlin-android' 26 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" 27 | apply plugin: 'com.google.gms.google-services' 28 | 29 | android { 30 | compileSdkVersion 30 31 | 32 | sourceSets { 33 | main.java.srcDirs += 'src/main/kotlin' 34 | } 35 | 36 | defaultConfig { 37 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). 38 | applicationId "com.healthcare.health" 39 | minSdkVersion 21 40 | targetSdkVersion 30 41 | versionCode flutterVersionCode.toInteger() 42 | versionName flutterVersionName 43 | } 44 | 45 | buildTypes { 46 | release { 47 | // TODO: Add your own signing config for the release build. 48 | // Signing with the debug keys for now, so `flutter run --release` works. 49 | signingConfig signingConfigs.debug 50 | } 51 | } 52 | 53 | aaptOptions { 54 | noCompress 'tflite' 55 | noCompress 'lite' 56 | } 57 | } 58 | 59 | flutter { 60 | source '../..' 61 | } 62 | 63 | dependencies { 64 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" 65 | implementation platform('com.google.firebase:firebase-bom:28.1.0') 66 | } -------------------------------------------------------------------------------- /ios/Runner/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /lib/src/pages/splash_page.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:health/src/pages/home_page.dart'; 3 | import 'package:health/src/theme/extention.dart'; 4 | import 'package:health/src/theme/light_color.dart'; 5 | import 'package:health/src/theme/text_styles.dart'; 6 | 7 | class SplashPage extends StatefulWidget { 8 | SplashPage({Key key}) : super(key: key); 9 | 10 | @override 11 | _SplashPageState createState() => _SplashPageState(); 12 | } 13 | 14 | class _SplashPageState extends State { 15 | @override 16 | void initState() { 17 | Future.delayed(Duration(seconds: 2)).then((_) { 18 | Navigator.pushReplacement( 19 | context, MaterialPageRoute(builder: (_) => HomePage())); 20 | }); 21 | super.initState(); 22 | } 23 | 24 | @override 25 | Widget build(BuildContext context) { 26 | return Scaffold( 27 | body: Stack( 28 | children: [ 29 | Container( 30 | decoration: BoxDecoration( 31 | image: DecorationImage( 32 | image: AssetImage("assets/doctor_face.jpg"), 33 | fit: BoxFit.fill, 34 | ), 35 | ), 36 | ), 37 | Positioned.fill( 38 | child: Opacity( 39 | opacity: .6, 40 | child: Container( 41 | decoration: BoxDecoration( 42 | gradient: LinearGradient( 43 | colors: [LightColor.purpleExtraLight, LightColor.purple], 44 | begin: Alignment.topCenter, 45 | end: Alignment.bottomCenter, 46 | tileMode: TileMode.mirror, 47 | stops: [.5, 6]), 48 | ), 49 | ), 50 | ), 51 | ), 52 | Column( 53 | mainAxisAlignment: MainAxisAlignment.center, 54 | crossAxisAlignment: CrossAxisAlignment.center, 55 | children: [ 56 | Expanded( 57 | flex: 2, 58 | child: SizedBox(), 59 | ), 60 | Image.asset( 61 | "assets/heartbeat.png", 62 | color: Colors.white, 63 | height: 100, 64 | ), 65 | Text( 66 | "Time Health", 67 | style: TextStyles.h1Style.white, 68 | ), 69 | Text( 70 | "By health Evolution", 71 | style: TextStyles.bodySm.white.bold, 72 | ), 73 | Expanded( 74 | flex: 7, 75 | child: SizedBox(), 76 | ), 77 | ], 78 | ).alignTopCenter, 79 | ], 80 | ), 81 | ); 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /android/gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 12 | set DEFAULT_JVM_OPTS= 13 | 14 | set DIRNAME=%~dp0 15 | if "%DIRNAME%" == "" set DIRNAME=. 16 | set APP_BASE_NAME=%~n0 17 | set APP_HOME=%DIRNAME% 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windowz variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | if "%@eval[2+2]" == "4" goto 4NT_args 53 | 54 | :win9xME_args 55 | @rem Slurp the command line arguments. 56 | set CMD_LINE_ARGS= 57 | set _SKIP=2 58 | 59 | :win9xME_args_slurp 60 | if "x%~1" == "x" goto execute 61 | 62 | set CMD_LINE_ARGS=%* 63 | goto execute 64 | 65 | :4NT_args 66 | @rem Get arguments from the 4NT Shell from JP Software 67 | set CMD_LINE_ARGS=%$ 68 | 69 | :execute 70 | @rem Setup the command line 71 | 72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if "%ERRORLEVEL%"=="0" goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 85 | exit /b 1 86 | 87 | :mainEnd 88 | if "%OS%"=="Windows_NT" endlocal 89 | 90 | :omega 91 | -------------------------------------------------------------------------------- /lib/src/theme/extention.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:health/src/theme/light_color.dart'; 3 | 4 | extension TextStyleHelpers on TextStyle { 5 | TextStyle get bold => copyWith(fontWeight: FontWeight.bold); 6 | TextStyle get white => copyWith(color: Colors.white); 7 | TextStyle get subTitleColor => copyWith(color: LightColor.subTitleTextColor); 8 | } 9 | 10 | extension PaddingHelper on Widget { 11 | Padding get p16 => Padding(padding: EdgeInsets.all(16), child: this); 12 | 13 | /// Set padding according to `value` 14 | Padding p(double value) => 15 | Padding(padding: EdgeInsets.all(value), child: this); 16 | 17 | /// Horizontal Padding 16 18 | Padding get hP4 => 19 | Padding(padding: EdgeInsets.symmetric(horizontal: 4), child: this); 20 | Padding get hP8 => 21 | Padding(padding: EdgeInsets.symmetric(horizontal: 8), child: this); 22 | Padding get hP16 => 23 | Padding(padding: EdgeInsets.symmetric(horizontal: 16), child: this); 24 | 25 | /// Vertical Padding 16 26 | Padding get vP16 => 27 | Padding(padding: EdgeInsets.symmetric(vertical: 16), child: this); 28 | Padding get vP8 => 29 | Padding(padding: EdgeInsets.symmetric(vertical: 8), child: this); 30 | Padding get vP4 => 31 | Padding(padding: EdgeInsets.symmetric(vertical: 8), child: this); 32 | } 33 | 34 | extension Extented on Widget { 35 | Expanded get extended => Expanded( 36 | child: this, 37 | ); 38 | } 39 | 40 | extension CornerRadius on Widget { 41 | ClipRRect get circular => ClipRRect( 42 | borderRadius: BorderRadius.all(Radius.circular(1000)), 43 | child: this, 44 | ); 45 | } 46 | 47 | extension OnPressed on Widget { 48 | Widget ripple(Function onPressed, 49 | {BorderRadiusGeometry borderRadius = 50 | const BorderRadius.all(Radius.circular(5))}) => 51 | Stack( 52 | children: [ 53 | this, 54 | Positioned( 55 | left: 0, 56 | right: 0, 57 | top: 0, 58 | bottom: 0, 59 | child: FlatButton( 60 | shape: RoundedRectangleBorder(borderRadius: borderRadius), 61 | onPressed: () { 62 | if (onPressed != null) { 63 | onPressed(); 64 | } 65 | }, 66 | child: Container()), 67 | ) 68 | ], 69 | ); 70 | } 71 | 72 | extension ExAlignment on Widget { 73 | Widget get alignTopCenter => Align( 74 | child: this, 75 | alignment: Alignment.topCenter, 76 | ); 77 | Widget get alignCenter => Align( 78 | child: this, 79 | alignment: Alignment.center, 80 | ); 81 | Widget get alignBottomCenter => Align( 82 | child: this, 83 | alignment: Alignment.bottomCenter, 84 | ); 85 | Widget get alignBottomLeft => Align( 86 | child: this, 87 | alignment: Alignment.bottomLeft, 88 | ); 89 | } 90 | -------------------------------------------------------------------------------- /lib/src/model/dactor_model.dart: -------------------------------------------------------------------------------- 1 | import 'dart:convert'; 2 | 3 | class DoctorModel { 4 | String name; 5 | String type; 6 | String description; 7 | double rating; 8 | double goodReviews; 9 | double totalScore; 10 | double satisfaction; 11 | bool isfavourite; 12 | String image; 13 | 14 | DoctorModel({ 15 | this.name, 16 | this.type, 17 | this.description, 18 | this.rating, 19 | this.goodReviews, 20 | this.totalScore, 21 | this.satisfaction, 22 | this.isfavourite, 23 | this.image, 24 | }); 25 | 26 | DoctorModel copyWith({ 27 | String name, 28 | String type, 29 | String description, 30 | double rating, 31 | double goodReviews, 32 | double totalScore, 33 | double satisfaction, 34 | bool isfavourite, 35 | String image, 36 | }) => 37 | DoctorModel( 38 | name: name ?? this.name, 39 | type: type ?? this.type, 40 | description: description ?? this.description, 41 | rating: rating ?? this.rating, 42 | goodReviews: goodReviews ?? this.goodReviews, 43 | totalScore: totalScore ?? this.totalScore, 44 | satisfaction: satisfaction ?? this.satisfaction, 45 | isfavourite: isfavourite ?? this.isfavourite, 46 | image: image ?? this.image, 47 | ); 48 | 49 | factory DoctorModel.fromRawJson(String str) => DoctorModel.fromJson(json.decode(str)); 50 | 51 | String toRawJson() => json.encode(toJson()); 52 | 53 | factory DoctorModel.fromJson(Map json) => DoctorModel( 54 | name: json["name"] == null ? null : json["name"], 55 | type: json["type"] == null ? null : json["type"], 56 | description: json["description"] == null ? null : json["description"], 57 | rating: json["rating"] == null ? null : json["rating"].toDouble(), 58 | goodReviews: json["goodReviews"] == null ? null : json["goodReviews"].toDouble(), 59 | totalScore: json["totalScore"] == null ? null : json["totalScore"].toDouble(), 60 | satisfaction: json["satisfaction"] == null ? null : json["satisfaction"].toDouble(), 61 | isfavourite: json["isfavourite"] == null ? null : json["isfavourite"], 62 | image: json["image"] == null ? null : json["image"], 63 | ); 64 | 65 | Map toJson() => { 66 | "name": name == null ? null : name, 67 | "type": type == null ? null : type, 68 | "description": description == null ? null : description, 69 | "rating": rating == null ? null : rating, 70 | "goodReviews": goodReviews == null ? null : goodReviews, 71 | "totalScore": totalScore == null ? null : totalScore, 72 | "satisfaction": satisfaction == null ? null : satisfaction, 73 | "isfavourite": isfavourite == null ? null : isfavourite, 74 | "image": image == null ? null : image, 75 | }; 76 | } 77 | -------------------------------------------------------------------------------- /android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java: -------------------------------------------------------------------------------- 1 | package io.flutter.plugins; 2 | 3 | import androidx.annotation.Keep; 4 | import androidx.annotation.NonNull; 5 | 6 | import io.flutter.embedding.engine.FlutterEngine; 7 | import io.flutter.embedding.engine.plugins.shim.ShimPluginRegistry; 8 | 9 | /** 10 | * Generated file. Do not edit. 11 | * This file is generated by the Flutter tool based on the 12 | * plugins that support the Android platform. 13 | */ 14 | @Keep 15 | public final class GeneratedPluginRegistrant { 16 | public static void registerWith(@NonNull FlutterEngine flutterEngine) { 17 | ShimPluginRegistry shimPluginRegistry = new ShimPluginRegistry(flutterEngine); 18 | flutterEngine.getPlugins().add(new io.flutter.plugins.firebase.firestore.FlutterFirebaseFirestorePlugin()); 19 | flutterEngine.getPlugins().add(new com.mr.flutter.plugin.filepicker.FilePickerPlugin()); 20 | flutterEngine.getPlugins().add(new io.flutter.plugins.firebase.auth.FlutterFirebaseAuthPlugin()); 21 | flutterEngine.getPlugins().add(new io.flutter.plugins.firebase.core.FlutterFirebaseCorePlugin()); 22 | flutterEngine.getPlugins().add(new io.flutter.plugins.firebase.database.FirebaseDatabasePlugin()); 23 | flutterEngine.getPlugins().add(new io.flutter.plugins.firebase.storage.FlutterFirebaseStoragePlugin()); 24 | flutterEngine.getPlugins().add(new com.dexterous.flutterlocalnotifications.FlutterLocalNotificationsPlugin()); 25 | flutterEngine.getPlugins().add(new io.flutter.plugins.flutter_plugin_android_lifecycle.FlutterAndroidLifecyclePlugin()); 26 | flutterEngine.getPlugins().add(new io.github.ponnamkarthik.toast.fluttertoast.FlutterToastPlugin()); 27 | flutterEngine.getPlugins().add(new com.baseflow.geocoding.GeocodingPlugin()); 28 | flutterEngine.getPlugins().add(new com.baseflow.geolocator.GeolocatorPlugin()); 29 | flutterEngine.getPlugins().add(new io.flutter.plugins.googlesignin.GoogleSignInPlugin()); 30 | flutterEngine.getPlugins().add(new io.flutter.plugins.imagepicker.ImagePickerPlugin()); 31 | com.codeheadlabs.libphonenumber.LibphonenumberPlugin.registerWith(shimPluginRegistry.registrarFor("com.codeheadlabs.libphonenumber.LibphonenumberPlugin")); 32 | flutterEngine.getPlugins().add(new io.flutter.plugins.localauth.LocalAuthPlugin()); 33 | flutterEngine.getPlugins().add(new com.example.maps_launcher.MapsLauncherPlugin()); 34 | flutterEngine.getPlugins().add(new io.flutter.plugins.pathprovider.PathProviderPlugin()); 35 | flutterEngine.getPlugins().add(new com.razorpay.razorpay_flutter.RazorpayFlutterPlugin()); 36 | flutterEngine.getPlugins().add(new io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin()); 37 | flutterEngine.getPlugins().add(new com.tekartik.sqflite.SqflitePlugin()); 38 | sq.flutter.tflite.TflitePlugin.registerWith(shimPluginRegistry.registrarFor("sq.flutter.tflite.TflitePlugin")); 39 | flutterEngine.getPlugins().add(new io.flutter.plugins.urllauncher.UrlLauncherPlugin()); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 10 | 17 | 21 | 25 | 30 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 48 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "20x20", 5 | "idiom" : "iphone", 6 | "filename" : "Icon-App-20x20@2x.png", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "size" : "20x20", 11 | "idiom" : "iphone", 12 | "filename" : "Icon-App-20x20@3x.png", 13 | "scale" : "3x" 14 | }, 15 | { 16 | "size" : "29x29", 17 | "idiom" : "iphone", 18 | "filename" : "Icon-App-29x29@1x.png", 19 | "scale" : "1x" 20 | }, 21 | { 22 | "size" : "29x29", 23 | "idiom" : "iphone", 24 | "filename" : "Icon-App-29x29@2x.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "29x29", 29 | "idiom" : "iphone", 30 | "filename" : "Icon-App-29x29@3x.png", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "size" : "40x40", 35 | "idiom" : "iphone", 36 | "filename" : "Icon-App-40x40@2x.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "40x40", 41 | "idiom" : "iphone", 42 | "filename" : "Icon-App-40x40@3x.png", 43 | "scale" : "3x" 44 | }, 45 | { 46 | "size" : "60x60", 47 | "idiom" : "iphone", 48 | "filename" : "Icon-App-60x60@2x.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "60x60", 53 | "idiom" : "iphone", 54 | "filename" : "Icon-App-60x60@3x.png", 55 | "scale" : "3x" 56 | }, 57 | { 58 | "size" : "20x20", 59 | "idiom" : "ipad", 60 | "filename" : "Icon-App-20x20@1x.png", 61 | "scale" : "1x" 62 | }, 63 | { 64 | "size" : "20x20", 65 | "idiom" : "ipad", 66 | "filename" : "Icon-App-20x20@2x.png", 67 | "scale" : "2x" 68 | }, 69 | { 70 | "size" : "29x29", 71 | "idiom" : "ipad", 72 | "filename" : "Icon-App-29x29@1x.png", 73 | "scale" : "1x" 74 | }, 75 | { 76 | "size" : "29x29", 77 | "idiom" : "ipad", 78 | "filename" : "Icon-App-29x29@2x.png", 79 | "scale" : "2x" 80 | }, 81 | { 82 | "size" : "40x40", 83 | "idiom" : "ipad", 84 | "filename" : "Icon-App-40x40@1x.png", 85 | "scale" : "1x" 86 | }, 87 | { 88 | "size" : "40x40", 89 | "idiom" : "ipad", 90 | "filename" : "Icon-App-40x40@2x.png", 91 | "scale" : "2x" 92 | }, 93 | { 94 | "size" : "76x76", 95 | "idiom" : "ipad", 96 | "filename" : "Icon-App-76x76@1x.png", 97 | "scale" : "1x" 98 | }, 99 | { 100 | "size" : "76x76", 101 | "idiom" : "ipad", 102 | "filename" : "Icon-App-76x76@2x.png", 103 | "scale" : "2x" 104 | }, 105 | { 106 | "size" : "83.5x83.5", 107 | "idiom" : "ipad", 108 | "filename" : "Icon-App-83.5x83.5@2x.png", 109 | "scale" : "2x" 110 | }, 111 | { 112 | "size" : "1024x1024", 113 | "idiom" : "ios-marketing", 114 | "filename" : "Icon-App-1024x1024@1x.png", 115 | "scale" : "1x" 116 | } 117 | ], 118 | "info" : { 119 | "version" : 1, 120 | "author" : "xcode" 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 43 | 44 | 54 | 56 | 62 | 63 | 64 | 65 | 66 | 67 | 73 | 75 | 81 | 82 | 83 | 84 | 86 | 87 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /lib/authentication/signin.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:google_sign_in/google_sign_in.dart'; 3 | import 'package:health/services/authservice.dart'; 4 | import 'package:health/src/pages/home_page.dart'; 5 | import 'package:health/startpage.dart'; 6 | import 'package:shared_preferences/shared_preferences.dart'; 7 | 8 | class sign_in extends StatefulWidget { 9 | @override 10 | _sign_inState createState() => _sign_inState(); 11 | } 12 | 13 | class _sign_inState extends State { 14 | bool isAuth = false; 15 | @override 16 | void initState() { 17 | super.initState(); 18 | checkLogin(); 19 | } 20 | 21 | checkLogin() async { 22 | SharedPreferences preferences = await SharedPreferences.getInstance(); 23 | googleSignIn.onCurrentUserChanged.listen((GoogleSignInAccount account) { 24 | handleSignIn(account); 25 | onError: 26 | (err) {}; 27 | }); 28 | googleSignIn 29 | .signInSilently(suppressErrors: false) //signing in automatically 30 | .then((account) { 31 | handleSignIn(account); 32 | }).catchError((err) {}); 33 | } 34 | 35 | handleSignIn(GoogleSignInAccount account) { 36 | if (account != null) { 37 | setState(() { 38 | isAuth = true; 39 | }); 40 | } else { 41 | setState(() { 42 | isAuth = false; 43 | }); 44 | } 45 | } 46 | 47 | buildUnauthScreen() { 48 | return Scaffold( 49 | body: Container( 50 | decoration: BoxDecoration( 51 | gradient: LinearGradient( 52 | begin: Alignment.topRight, 53 | end: Alignment.bottomLeft, 54 | colors: [ 55 | Theme.of(context).primaryColor.withOpacity(0.8), 56 | Theme.of(context).accentColor, 57 | ])), 58 | alignment: Alignment.center, 59 | child: Column( 60 | crossAxisAlignment: CrossAxisAlignment.center, 61 | children: [ 62 | Padding( 63 | padding: const EdgeInsets.only( 64 | top: 225, bottom: 225, left: 35, right: 35), 65 | child: RichText( 66 | text: TextSpan( 67 | style: TextStyle(fontSize: 40), 68 | children: [ 69 | TextSpan( 70 | text: 'Health', 71 | style: TextStyle( 72 | fontWeight: FontWeight.bold, color: Colors.black)), 73 | TextSpan( 74 | text: 'Care', 75 | style: TextStyle( 76 | fontWeight: FontWeight.bold, 77 | color: Colors.lightBlue.shade400)), 78 | ], 79 | ), 80 | ), 81 | ), 82 | GestureDetector( 83 | onTap: login, 84 | child: Container( 85 | width: 260.0, 86 | height: 60.0, 87 | decoration: BoxDecoration( 88 | image: DecorationImage( 89 | image: AssetImage( 90 | 'assets/images/google_signin_button.png', 91 | ), 92 | fit: BoxFit.cover, 93 | ), 94 | ), 95 | ), 96 | ) 97 | ], 98 | ), 99 | ), 100 | ); 101 | } 102 | 103 | login() { 104 | googleSignIn.signIn(); 105 | } 106 | 107 | logout() { 108 | googleSignIn.signOut(); 109 | AuthService().signout(context); 110 | } 111 | 112 | @override 113 | Widget build(BuildContext context) { 114 | return isAuth ? HomePage() : StartScreen(); 115 | } 116 | } 117 | -------------------------------------------------------------------------------- /.flutter-plugins: -------------------------------------------------------------------------------- 1 | # This is a generated file; do not edit or check into version control. 2 | cloud_firestore=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\cloud_firestore-0.14.4\\ 3 | cloud_firestore_web=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\cloud_firestore_web-0.2.1+2\\ 4 | file_picker=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\file_picker-2.1.7\\ 5 | firebase_auth=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\firebase_auth-0.18.4+1\\ 6 | firebase_auth_web=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\firebase_auth_web-0.3.2+3\\ 7 | firebase_core=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\firebase_core-0.5.3\\ 8 | firebase_core_web=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\firebase_core_web-0.2.1+1\\ 9 | firebase_database=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\firebase_database-4.4.0\\ 10 | firebase_storage=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\firebase_storage-5.2.0\\ 11 | firebase_storage_web=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\firebase_storage_web-0.1.1+1\\ 12 | flutter_local_notifications=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\flutter_local_notifications-1.5.0+1\\ 13 | flutter_plugin_android_lifecycle=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\flutter_plugin_android_lifecycle-1.0.11\\ 14 | fluttertoast=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\fluttertoast-7.1.8\\ 15 | geocoding=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\geocoding-1.0.5\\ 16 | geolocator=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\geolocator-6.2.1\\ 17 | geolocator_web=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\geolocator_web-1.0.1\\ 18 | google_sign_in=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\google_sign_in-4.5.9\\ 19 | google_sign_in_web=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\google_sign_in_web-0.9.2\\ 20 | image_picker=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\image_picker-0.6.7+22\\ 21 | libphonenumber=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\libphonenumber-1.0.2\\ 22 | local_auth=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\local_auth-0.6.3+4\\ 23 | maps_launcher=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\maps_launcher-1.2.2+2\\ 24 | path_provider=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\path_provider-1.6.28\\ 25 | path_provider_linux=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\path_provider_linux-0.0.1+2\\ 26 | path_provider_macos=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\path_provider_macos-0.0.4+8\\ 27 | path_provider_windows=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\path_provider_windows-0.0.4+3\\ 28 | razorpay_flutter=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\razorpay_flutter-1.2.5\\ 29 | shared_preferences=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\shared_preferences-0.5.12+4\\ 30 | shared_preferences_linux=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\shared_preferences_linux-0.0.2+4\\ 31 | shared_preferences_macos=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\shared_preferences_macos-0.0.1+11\\ 32 | shared_preferences_web=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\shared_preferences_web-0.1.2+7\\ 33 | shared_preferences_windows=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\shared_preferences_windows-0.0.2+3\\ 34 | sqflite=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\sqflite-1.3.2+4\\ 35 | tflite=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\tflite-1.0.5\\ 36 | url_launcher=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\url_launcher-5.7.10\\ 37 | url_launcher_linux=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\url_launcher_linux-0.0.1+4\\ 38 | url_launcher_macos=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\url_launcher_macos-0.0.1+9\\ 39 | url_launcher_web=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\url_launcher_web-0.1.5+3\\ 40 | url_launcher_windows=G:\\Flutter Dev\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\url_launcher_windows-0.0.1+3\\ 41 | -------------------------------------------------------------------------------- /lib/src/widgets/progress_widget.dart: -------------------------------------------------------------------------------- 1 | import 'dart:math'; 2 | import 'dart:ui'; 3 | 4 | import 'package:flutter/material.dart'; 5 | import 'package:health/src/theme/light_color.dart'; 6 | import 'package:health/src/theme/theme.dart'; 7 | 8 | class ProgressWidget extends StatefulWidget { 9 | ProgressWidget( 10 | {Key key, 11 | this.value, 12 | this.totalValue = 100, 13 | this.activeColor, 14 | this.backgroundColor, 15 | this.title, 16 | this.durationTime, 17 | this.rating}) 18 | : super(key: key); 19 | final double totalValue; 20 | final double rating; 21 | final double value; 22 | final Color activeColor; 23 | final Color backgroundColor; 24 | final String title; 25 | final durationTime; 26 | @override 27 | _ProgressWidgetState createState() => _ProgressWidgetState(); 28 | } 29 | 30 | class _ProgressWidgetState extends State 31 | with TickerProviderStateMixin { 32 | double progress; 33 | Color activeColor; 34 | Color backgroundColor; 35 | @override 36 | void initState() { 37 | progress = (widget.value * 100) / widget.totalValue; 38 | progress = (progress / 100) * 360; 39 | activeColor = widget.activeColor; 40 | backgroundColor = widget.backgroundColor; 41 | 42 | super.initState(); 43 | } 44 | 45 | @override 46 | Widget build(BuildContext context) { 47 | final dimenstion = (AppTheme.fullWidth(context) - 10) * .3; 48 | if (activeColor == null) { 49 | activeColor = Theme.of(context).primaryColor; 50 | } 51 | if (backgroundColor == null) { 52 | backgroundColor = Theme.of(context).disabledColor; 53 | } 54 | final inCurve = ElasticOutCurve(0.38); 55 | Widget _start(int index) { 56 | bool halfStar = false; 57 | if ((widget.rating * 2) % 2 != 0) { 58 | if (index < widget.rating && index == widget.rating - .5) { 59 | halfStar = true; 60 | } 61 | } 62 | 63 | return Icon(halfStar ? Icons.star_half : Icons.star, 64 | color: index < widget.rating ? LightColor.orange : LightColor.grey); 65 | } 66 | 67 | return Container( 68 | height: dimenstion, 69 | width: dimenstion, 70 | alignment: Alignment.center, 71 | child: Column( 72 | children: [ 73 | TweenAnimationBuilder( 74 | tween: Tween(begin: 0, end: 5), 75 | duration: Duration(milliseconds: 500), 76 | builder: (context, value, child) { 77 | return Wrap( 78 | children: 79 | Iterable.generate(value.toInt(), (index) => _start(index)) 80 | .toList()); 81 | }, 82 | ), 83 | ], 84 | ), 85 | ); 86 | } 87 | } 88 | 89 | class ProgressPainter extends CustomPainter { 90 | final double value; 91 | final Color activeColor; 92 | final Color backgroundColor; 93 | 94 | ProgressPainter(this.value, this.activeColor, this.backgroundColor); 95 | @override 96 | void paint(Canvas canvas, Size size) async { 97 | var center1 = Offset(size.width / 2, size.height / 2); 98 | Paint active = new Paint() 99 | ..color = activeColor 100 | ..strokeCap = StrokeCap.round 101 | ..style = PaintingStyle.stroke 102 | ..strokeWidth = 7; 103 | 104 | Paint inActive = new Paint() 105 | ..color = backgroundColor 106 | ..strokeCap = StrokeCap.round 107 | ..style = PaintingStyle.stroke 108 | ..strokeWidth = 8; 109 | canvas.drawArc( 110 | Rect.fromCircle(center: center1, radius: 40), 0, 180, false, inActive); 111 | 112 | canvas.drawArc(Rect.fromCircle(center: center1, radius: 40), -90 * pi / 180, 113 | value * pi / 180, false, active); 114 | } 115 | 116 | @override 117 | bool shouldRepaint(CustomPainter oldDelegate) { 118 | return true; 119 | } 120 | } 121 | 122 | class LinearPointCurve extends Curve { 123 | final double pIn; 124 | final double pOut; 125 | 126 | LinearPointCurve(this.pIn, this.pOut); 127 | 128 | @override 129 | double transform(double x) { 130 | // Just a simple bit of linear interpolation math 131 | final lowerScale = pOut / pIn; 132 | final upperScale = (1.0 - pOut) / (1.0 - pIn); 133 | final upperOffset = 1.0 - upperScale; 134 | return x < pIn ? x * lowerScale : x * upperScale + upperOffset; 135 | } 136 | } 137 | -------------------------------------------------------------------------------- /pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: health 2 | description: A new Flutter application. 3 | 4 | # The following line prevents the package from being accidentally published to 5 | # pub.dev using `pub publish`. This is preferred for private packages. 6 | publish_to: 'none' # Remove this line if you wish to publish to pub.dev 7 | 8 | # The following defines the version and build number for your application. 9 | # A version number is three numbers separated by dots, like 1.2.43 10 | # followed by an optional build number separated by a +. 11 | # Both the version and the builder number may be overridden in flutter 12 | # build by specifying --build-name and --build-number, respectively. 13 | # In Android, build-name is used as versionName while build-number used as versionCode. 14 | # Read more about Android versioning at https://developer.android.com/studio/publish/versioning 15 | # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. 16 | # Read more about iOS versioning at 17 | # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html 18 | version: 1.0.0+1 19 | 20 | environment: 21 | sdk: ">=2.7.0 <3.0.0" 22 | 23 | dependencies: 24 | flutter: 25 | sdk: flutter 26 | 27 | flutter_vector_icons: ^0.2.1 28 | shimmer: ^1.1.2 29 | animated_splash_screen: 30 | google_fonts: 31 | flutter_spinkit: 32 | firebase_auth: ^0.18.1+2 33 | fluttertoast: 34 | firebase_core: 35 | cloud_firestore: 36 | firebase_storage: 37 | firebase_auth_web: ^0.3.1+1 38 | firebase_database: 39 | google_sign_in: ^4.5.4 40 | shared_preferences: ^0.5.12+4 41 | pinput: ^0.2.6 42 | animated_onboarding: ^0.0.2 43 | international_phone_input: ^1.0.4 44 | geolocator: 45 | geocoding: 46 | cached_network_image: ^2.0.0-rc 47 | url_launcher: ^5.7.10 48 | font_awesome_flutter: 49 | image_picker: ^0.6.1+8 50 | file_picker: 51 | flutter_svg: 52 | razorpay_flutter: 53 | tflite: 1.0.5 54 | flutter_datetime_picker: 55 | local_auth: 56 | maps_launcher: 57 | flutter_local_notifications: ^1.4.4+2 58 | # The following adds the Cupertino Icons font to your application. 59 | # Use with the CupertinoIcons class for iOS style icons. 60 | cupertino_icons: 61 | 62 | dev_dependencies: 63 | flutter_test: 64 | sdk: flutter 65 | 66 | # For information on the generic Dart part of this file, see the 67 | # following page: https://dart.dev/tools/pub/pubspec 68 | 69 | # The following section is specific to Flutter. 70 | flutter: 71 | 72 | # The following line ensures that the Material Icons font is 73 | # included with your application, so that you can use the icons in 74 | # the material Icons class. 75 | uses-material-design: true 76 | 77 | # To add assets to your application, add an assets section, like this: 78 | assets: 79 | - assets/images/google_signin_button.png 80 | - assets/img/Skin.svg 81 | - assets/img/splash.svg 82 | - assets/img/TB.svg 83 | - assets/doctor.png 84 | - assets/doctor_1.png 85 | - assets/doctor_3.png 86 | - assets/doctor_4.png 87 | - assets/img/covid.svg 88 | 89 | # - images/a_dot_ham.jpeg 90 | 91 | # An image asset can refer to one or more resolution-specific "variants", see 92 | # https://flutter.dev/assets-and-images/#resolution-aware. 93 | 94 | # For details regarding adding assets from package dependencies, see 95 | # https://flutter.dev/assets-and-images/#from-packages 96 | 97 | # To add custom fonts to your application, add a fonts section here, 98 | # in this "flutter" section. Each entry in this list should have a 99 | # "family" key with the font family name, and a "fonts" key with a 100 | # list giving the asset and other descriptors for the font. For 101 | # example: 102 | # fonts: 103 | # - family: Schyler 104 | # fonts: 105 | # - asset: fonts/Schyler-Regular.ttf 106 | # - asset: fonts/Schyler-Italic.ttf 107 | # style: italic 108 | # - family: Trajan Pro 109 | # fonts: 110 | # - asset: fonts/TrajanPro.ttf 111 | # - asset: fonts/TrajanPro_Bold.ttf 112 | # weight: 700 113 | # 114 | # For details regarding fonts from package dependencies, 115 | # see https://flutter.dev/custom-fonts/#from-packages 116 | -------------------------------------------------------------------------------- /android/gradlew: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | ############################################################################## 4 | ## 5 | ## Gradle start up script for UN*X 6 | ## 7 | ############################################################################## 8 | 9 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 10 | DEFAULT_JVM_OPTS="" 11 | 12 | APP_NAME="Gradle" 13 | APP_BASE_NAME=`basename "$0"` 14 | 15 | # Use the maximum available, or set MAX_FD != -1 to use that value. 16 | MAX_FD="maximum" 17 | 18 | warn ( ) { 19 | echo "$*" 20 | } 21 | 22 | die ( ) { 23 | echo 24 | echo "$*" 25 | echo 26 | exit 1 27 | } 28 | 29 | # OS specific support (must be 'true' or 'false'). 30 | cygwin=false 31 | msys=false 32 | darwin=false 33 | case "`uname`" in 34 | CYGWIN* ) 35 | cygwin=true 36 | ;; 37 | Darwin* ) 38 | darwin=true 39 | ;; 40 | MINGW* ) 41 | msys=true 42 | ;; 43 | esac 44 | 45 | # Attempt to set APP_HOME 46 | # Resolve links: $0 may be a link 47 | PRG="$0" 48 | # Need this for relative symlinks. 49 | while [ -h "$PRG" ] ; do 50 | ls=`ls -ld "$PRG"` 51 | link=`expr "$ls" : '.*-> \(.*\)$'` 52 | if expr "$link" : '/.*' > /dev/null; then 53 | PRG="$link" 54 | else 55 | PRG=`dirname "$PRG"`"/$link" 56 | fi 57 | done 58 | SAVED="`pwd`" 59 | cd "`dirname \"$PRG\"`/" >/dev/null 60 | APP_HOME="`pwd -P`" 61 | cd "$SAVED" >/dev/null 62 | 63 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 64 | 65 | # Determine the Java command to use to start the JVM. 66 | if [ -n "$JAVA_HOME" ] ; then 67 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 68 | # IBM's JDK on AIX uses strange locations for the executables 69 | JAVACMD="$JAVA_HOME/jre/sh/java" 70 | else 71 | JAVACMD="$JAVA_HOME/bin/java" 72 | fi 73 | if [ ! -x "$JAVACMD" ] ; then 74 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 75 | 76 | Please set the JAVA_HOME variable in your environment to match the 77 | location of your Java installation." 78 | fi 79 | else 80 | JAVACMD="java" 81 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 82 | 83 | Please set the JAVA_HOME variable in your environment to match the 84 | location of your Java installation." 85 | fi 86 | 87 | # Increase the maximum file descriptors if we can. 88 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then 89 | MAX_FD_LIMIT=`ulimit -H -n` 90 | if [ $? -eq 0 ] ; then 91 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 92 | MAX_FD="$MAX_FD_LIMIT" 93 | fi 94 | ulimit -n $MAX_FD 95 | if [ $? -ne 0 ] ; then 96 | warn "Could not set maximum file descriptor limit: $MAX_FD" 97 | fi 98 | else 99 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 100 | fi 101 | fi 102 | 103 | # For Darwin, add options to specify how the application appears in the dock 104 | if $darwin; then 105 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 106 | fi 107 | 108 | # For Cygwin, switch paths to Windows format before running java 109 | if $cygwin ; then 110 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` 111 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 112 | JAVACMD=`cygpath --unix "$JAVACMD"` 113 | 114 | # We build the pattern for arguments to be converted via cygpath 115 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 116 | SEP="" 117 | for dir in $ROOTDIRSRAW ; do 118 | ROOTDIRS="$ROOTDIRS$SEP$dir" 119 | SEP="|" 120 | done 121 | OURCYGPATTERN="(^($ROOTDIRS))" 122 | # Add a user-defined pattern to the cygpath arguments 123 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then 124 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 125 | fi 126 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 127 | i=0 128 | for arg in "$@" ; do 129 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 130 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 131 | 132 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 133 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 134 | else 135 | eval `echo args$i`="\"$arg\"" 136 | fi 137 | i=$((i+1)) 138 | done 139 | case $i in 140 | (0) set -- ;; 141 | (1) set -- "$args0" ;; 142 | (2) set -- "$args0" "$args1" ;; 143 | (3) set -- "$args0" "$args1" "$args2" ;; 144 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;; 145 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 146 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 147 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 148 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 149 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 150 | esac 151 | fi 152 | 153 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules 154 | function splitJvmOpts() { 155 | JVM_OPTS=("$@") 156 | } 157 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS 158 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" 159 | 160 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" 161 | -------------------------------------------------------------------------------- /ios/Runner/GeneratedPluginRegistrant.m: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | #import "GeneratedPluginRegistrant.h" 6 | 7 | #if __has_include() 8 | #import 9 | #else 10 | @import cloud_firestore; 11 | #endif 12 | 13 | #if __has_include() 14 | #import 15 | #else 16 | @import file_picker; 17 | #endif 18 | 19 | #if __has_include() 20 | #import 21 | #else 22 | @import firebase_auth; 23 | #endif 24 | 25 | #if __has_include() 26 | #import 27 | #else 28 | @import firebase_core; 29 | #endif 30 | 31 | #if __has_include() 32 | #import 33 | #else 34 | @import firebase_database; 35 | #endif 36 | 37 | #if __has_include() 38 | #import 39 | #else 40 | @import firebase_storage; 41 | #endif 42 | 43 | #if __has_include() 44 | #import 45 | #else 46 | @import flutter_local_notifications; 47 | #endif 48 | 49 | #if __has_include() 50 | #import 51 | #else 52 | @import fluttertoast; 53 | #endif 54 | 55 | #if __has_include() 56 | #import 57 | #else 58 | @import geocoding; 59 | #endif 60 | 61 | #if __has_include() 62 | #import 63 | #else 64 | @import geolocator; 65 | #endif 66 | 67 | #if __has_include() 68 | #import 69 | #else 70 | @import google_sign_in; 71 | #endif 72 | 73 | #if __has_include() 74 | #import 75 | #else 76 | @import image_picker; 77 | #endif 78 | 79 | #if __has_include() 80 | #import 81 | #else 82 | @import libphonenumber; 83 | #endif 84 | 85 | #if __has_include() 86 | #import 87 | #else 88 | @import local_auth; 89 | #endif 90 | 91 | #if __has_include() 92 | #import 93 | #else 94 | @import maps_launcher; 95 | #endif 96 | 97 | #if __has_include() 98 | #import 99 | #else 100 | @import path_provider; 101 | #endif 102 | 103 | #if __has_include() 104 | #import 105 | #else 106 | @import razorpay_flutter; 107 | #endif 108 | 109 | #if __has_include() 110 | #import 111 | #else 112 | @import shared_preferences; 113 | #endif 114 | 115 | #if __has_include() 116 | #import 117 | #else 118 | @import sqflite; 119 | #endif 120 | 121 | #if __has_include() 122 | #import 123 | #else 124 | @import tflite; 125 | #endif 126 | 127 | #if __has_include() 128 | #import 129 | #else 130 | @import url_launcher; 131 | #endif 132 | 133 | @implementation GeneratedPluginRegistrant 134 | 135 | + (void)registerWithRegistry:(NSObject*)registry { 136 | [FLTFirebaseFirestorePlugin registerWithRegistrar:[registry registrarForPlugin:@"FLTFirebaseFirestorePlugin"]]; 137 | [FilePickerPlugin registerWithRegistrar:[registry registrarForPlugin:@"FilePickerPlugin"]]; 138 | [FLTFirebaseAuthPlugin registerWithRegistrar:[registry registrarForPlugin:@"FLTFirebaseAuthPlugin"]]; 139 | [FLTFirebaseCorePlugin registerWithRegistrar:[registry registrarForPlugin:@"FLTFirebaseCorePlugin"]]; 140 | [FLTFirebaseDatabasePlugin registerWithRegistrar:[registry registrarForPlugin:@"FLTFirebaseDatabasePlugin"]]; 141 | [FLTFirebaseStoragePlugin registerWithRegistrar:[registry registrarForPlugin:@"FLTFirebaseStoragePlugin"]]; 142 | [FlutterLocalNotificationsPlugin registerWithRegistrar:[registry registrarForPlugin:@"FlutterLocalNotificationsPlugin"]]; 143 | [FluttertoastPlugin registerWithRegistrar:[registry registrarForPlugin:@"FluttertoastPlugin"]]; 144 | [GeocodingPlugin registerWithRegistrar:[registry registrarForPlugin:@"GeocodingPlugin"]]; 145 | [GeolocatorPlugin registerWithRegistrar:[registry registrarForPlugin:@"GeolocatorPlugin"]]; 146 | [FLTGoogleSignInPlugin registerWithRegistrar:[registry registrarForPlugin:@"FLTGoogleSignInPlugin"]]; 147 | [FLTImagePickerPlugin registerWithRegistrar:[registry registrarForPlugin:@"FLTImagePickerPlugin"]]; 148 | [LibphonenumberPlugin registerWithRegistrar:[registry registrarForPlugin:@"LibphonenumberPlugin"]]; 149 | [FLTLocalAuthPlugin registerWithRegistrar:[registry registrarForPlugin:@"FLTLocalAuthPlugin"]]; 150 | [MapsLauncherPlugin registerWithRegistrar:[registry registrarForPlugin:@"MapsLauncherPlugin"]]; 151 | [FLTPathProviderPlugin registerWithRegistrar:[registry registrarForPlugin:@"FLTPathProviderPlugin"]]; 152 | [RazorpayFlutterPlugin registerWithRegistrar:[registry registrarForPlugin:@"RazorpayFlutterPlugin"]]; 153 | [FLTSharedPreferencesPlugin registerWithRegistrar:[registry registrarForPlugin:@"FLTSharedPreferencesPlugin"]]; 154 | [SqflitePlugin registerWithRegistrar:[registry registrarForPlugin:@"SqflitePlugin"]]; 155 | [TflitePlugin registerWithRegistrar:[registry registrarForPlugin:@"TflitePlugin"]]; 156 | [FLTURLLauncherPlugin registerWithRegistrar:[registry registrarForPlugin:@"FLTURLLauncherPlugin"]]; 157 | } 158 | 159 | @end 160 | -------------------------------------------------------------------------------- /lib/pages/covid.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | 3 | import 'package:file_picker/file_picker.dart'; 4 | import 'package:firebase_database/firebase_database.dart'; 5 | import 'package:firebase_storage/firebase_storage.dart' as firebase_storage; 6 | import 'package:flutter/cupertino.dart'; 7 | import 'package:flutter/material.dart'; 8 | import 'package:flutter_svg/flutter_svg.dart'; 9 | import 'package:flutter_vector_icons/flutter_vector_icons.dart'; 10 | import 'package:google_fonts/google_fonts.dart'; 11 | import 'package:http/http.dart'; 12 | import 'package:shared_preferences/shared_preferences.dart'; 13 | 14 | class CovidPage extends StatefulWidget { 15 | @override 16 | _CovidPageState createState() => _CovidPageState(); 17 | } 18 | 19 | class _CovidPageState extends State { 20 | String name; 21 | String condition = ''; 22 | bool loading = false; 23 | 24 | getname() async { 25 | SharedPreferences preferences = await SharedPreferences.getInstance(); 26 | setState(() { 27 | name = preferences.getString('username'); 28 | }); 29 | } 30 | 31 | getFile() async { 32 | FilePickerResult result = await FilePicker.platform.pickFiles( 33 | type: FileType.custom, 34 | allowedExtensions: ['wav'], 35 | ); 36 | if (result != null) { 37 | PlatformFile file = result.files.first; 38 | firebase_storage.FirebaseStorage storage = 39 | firebase_storage.FirebaseStorage.instance; 40 | File toUpload = File(file.path); 41 | try { 42 | final databaseReference = FirebaseDatabase.instance.reference(); 43 | await firebase_storage.FirebaseStorage.instance 44 | .ref('covid/$name') 45 | .putFile(toUpload); 46 | String url = await firebase_storage.FirebaseStorage.instance 47 | .ref('-covid/$name') 48 | .getDownloadURL(); 49 | await databaseReference.child('covid/$name').update({'audio': url}); 50 | Response response = await get('{URL}'); 51 | print(response.body); 52 | setState(() { 53 | condition = response.body; 54 | loading = false; 55 | }); 56 | } catch (e) { 57 | print('error $e'); 58 | } 59 | } 60 | } 61 | 62 | @override 63 | void initState() { 64 | // TODO: implement initState 65 | super.initState(); 66 | getname(); 67 | } 68 | 69 | @override 70 | Widget build(BuildContext context) { 71 | return Scaffold( 72 | appBar: AppBar( 73 | elevation: 0.0, 74 | backgroundColor: Colors.transparent, 75 | leading: IconButton( 76 | icon: Icon( 77 | Icons.arrow_back, 78 | color: Colors.black, 79 | ), 80 | onPressed: () { 81 | Navigator.pop(context); 82 | }, 83 | ), 84 | title: Text( 85 | "Covid-19 cough check", 86 | style: GoogleFonts.merriweather( 87 | color: Colors.black, 88 | ), 89 | ), 90 | ), 91 | body: Column( 92 | children: [ 93 | Padding( 94 | padding: const EdgeInsets.only(top: 25, left: 25, right: 25), 95 | child: SvgPicture.asset('assets/img/covid.svg', height: 350), 96 | ), 97 | Padding( 98 | padding: const EdgeInsets.only(top: 50.0), 99 | child: Container( 100 | height: 50.0, 101 | width: 220.0, 102 | decoration: BoxDecoration( 103 | boxShadow: [ 104 | BoxShadow( 105 | offset: Offset(0.0, 20.0), 106 | blurRadius: 30.0, 107 | color: Colors.black12, 108 | ), 109 | ], 110 | color: Colors.white, 111 | borderRadius: BorderRadius.only( 112 | bottomLeft: Radius.circular(25.0), 113 | topLeft: Radius.circular(25.0), 114 | bottomRight: Radius.circular(15.0), 115 | topRight: Radius.circular(15.0), 116 | ), 117 | // borderRadius: 118 | // BorderRadius.circular(25.0), 119 | ), 120 | child: GestureDetector( 121 | onTap: () { 122 | setState(() { 123 | loading = true; 124 | }); 125 | getFile(); 126 | }, 127 | child: Row( 128 | children: [ 129 | Container( 130 | height: 70.0, 131 | width: 170.0, 132 | margin: 133 | EdgeInsets.symmetric(vertical: 0, horizontal: 0.0), 134 | child: Padding( 135 | padding: EdgeInsets.symmetric( 136 | vertical: 15, horizontal: 10.0), 137 | child: Text( 138 | 'Upload audio', 139 | style: GoogleFonts.nunito( 140 | fontSize: 15, 141 | ), 142 | ), 143 | ), 144 | decoration: BoxDecoration( 145 | color: Colors.lightBlue, 146 | borderRadius: BorderRadius.only( 147 | bottomLeft: Radius.circular(25.0), 148 | topLeft: Radius.circular(25.0), 149 | bottomRight: Radius.circular(200.0), 150 | ), 151 | ), 152 | ), 153 | Padding( 154 | padding: const EdgeInsets.only(left: 10.0), 155 | child: Icon(FontAwesome.picture_o), 156 | ) 157 | ], 158 | ), 159 | ), 160 | ), 161 | ), 162 | SizedBox( 163 | height: 20, 164 | ), 165 | loading 166 | ? CircularProgressIndicator() 167 | : Padding( 168 | padding: EdgeInsets.all(5), 169 | child: Card( 170 | elevation: 10, 171 | child: Padding( 172 | padding: const EdgeInsets.all(12.0), 173 | child: Text( 174 | condition == '' ? 'Choose a file' : condition, 175 | style: TextStyle( 176 | color: Colors.white, fontWeight: FontWeight.bold), 177 | ), 178 | ), 179 | color: condition == '' 180 | ? Colors.blueGrey 181 | : condition == 'negative' 182 | ? Colors.green 183 | : Colors.red, 184 | ), 185 | ) 186 | ], 187 | ), 188 | ); 189 | } 190 | } 191 | -------------------------------------------------------------------------------- /lib/pages/tbpage.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | 3 | import 'package:flutter/cupertino.dart'; 4 | import 'package:flutter/material.dart'; 5 | import 'package:flutter_vector_icons/flutter_vector_icons.dart'; 6 | import 'package:google_fonts/google_fonts.dart'; 7 | import 'package:tflite/tflite.dart'; 8 | import 'package:image_picker/image_picker.dart'; 9 | 10 | class TBPage extends StatefulWidget { 11 | @override 12 | _TBPageState createState() => _TBPageState(); 13 | } 14 | 15 | class _TBPageState extends State { 16 | 17 | File _image; 18 | List _recognitions = []; 19 | bool _busy; 20 | bool loaded = false; 21 | final picker = ImagePicker(); 22 | 23 | loadTfModel() async { 24 | Tflite.close(); 25 | String res = await Tflite.loadModel( 26 | model: "assets/models/tb_model.tflite", 27 | labels: "assets/models/tb_labels.txt", 28 | numThreads: 1 29 | ); 30 | setState(() { 31 | _busy = false; 32 | }); 33 | print('----------------res'); 34 | print(res); 35 | 36 | } 37 | 38 | detectObject(File image) async { 39 | var recognitions = await Tflite.runModelOnImage( 40 | path: image.path, // required 41 | imageMean: 127.5, 42 | imageStd: 127.5, 43 | threshold: 0.4, // defaults to 0.1 44 | asynch: true // defaults to true 45 | ); 46 | FileImage(image) 47 | .resolve(ImageConfiguration()) 48 | .addListener((ImageStreamListener((ImageInfo info, bool _) { 49 | }))); 50 | setState(() { 51 | _recognitions = recognitions; 52 | }); 53 | print('--------------rekog'); 54 | print(_recognitions); 55 | } 56 | 57 | @override 58 | void dispose() { 59 | Tflite.close(); 60 | super.dispose(); 61 | } 62 | 63 | Future getImageFromGallery() async { 64 | final pickedFile = await picker.getImage(source: ImageSource.gallery); 65 | setState(() { 66 | if (pickedFile != null) { 67 | _image = File(pickedFile.path); 68 | setState(() { 69 | loaded = true; 70 | }); 71 | } else {} 72 | }); 73 | detectObject(_image); 74 | } 75 | 76 | @override 77 | void initState() { 78 | // TODO: implement initState 79 | super.initState(); 80 | loadTfModel(); 81 | } 82 | @override 83 | Widget build(BuildContext context) { 84 | return Scaffold( 85 | appBar: AppBar( 86 | elevation: 0.0, 87 | backgroundColor: Colors.transparent, 88 | leading: IconButton( 89 | icon: Icon( 90 | Icons.arrow_back, 91 | color: Colors.black, 92 | ), 93 | onPressed: () { 94 | Navigator.pop(context); 95 | }, 96 | ), 97 | title: Text( 98 | "TB Prediction", 99 | style: GoogleFonts.merriweather( 100 | color: Colors.black, 101 | ), 102 | ), 103 | ), 104 | body: Center( 105 | child: Column( 106 | mainAxisAlignment : MainAxisAlignment.center, 107 | crossAxisAlignment:CrossAxisAlignment.center, 108 | children: [ 109 | Padding( 110 | padding: const EdgeInsets.all(25), 111 | child: GestureDetector( 112 | onTap: () { 113 | getImageFromGallery(); 114 | }, 115 | child: SizedBox( 116 | height: 300, 117 | width: 300, 118 | child: loaded ? Image.file(_image) : Card( 119 | child: Column( 120 | mainAxisAlignment: MainAxisAlignment.center, 121 | crossAxisAlignment: CrossAxisAlignment.center, 122 | children: [ 123 | Icon(Icons.add, size: 30,), 124 | SizedBox(height: 20,), 125 | Text('Upload Image') 126 | ], 127 | ), 128 | elevation: 20, 129 | ), 130 | ), 131 | ) 132 | ), 133 | Padding( 134 | padding: const EdgeInsets.only(top: 50.0), 135 | child: Container( 136 | height: 50.0, 137 | width: 220.0, 138 | decoration: BoxDecoration( 139 | boxShadow: [ 140 | BoxShadow( 141 | offset: Offset(0.0, 20.0), 142 | blurRadius: 30.0, 143 | color: Colors.black12, 144 | ), 145 | ], 146 | color: Colors.white, 147 | borderRadius: BorderRadius.only( 148 | bottomLeft: Radius.circular(25.0), 149 | topLeft: Radius.circular(25.0), 150 | bottomRight: Radius.circular(15.0), 151 | topRight: Radius.circular(15.0), 152 | ), 153 | // borderRadius: 154 | // BorderRadius.circular(25.0), 155 | ), 156 | child: GestureDetector( 157 | onTap: () { 158 | print('lol'); 159 | 160 | }, 161 | child: Row( 162 | children: [ 163 | Container( 164 | height: 70.0, 165 | width: 170.0, 166 | margin: EdgeInsets.symmetric(vertical: 0, horizontal: 0.0), 167 | child: Padding( 168 | padding: 169 | EdgeInsets.symmetric(vertical: 15, horizontal: 10.0), 170 | child: Text( 171 | 'Predict', 172 | style: GoogleFonts.nunito( 173 | fontSize: 15, 174 | ), 175 | ), 176 | ), 177 | decoration: BoxDecoration( 178 | color: Colors.lightBlue, 179 | borderRadius: BorderRadius.only( 180 | bottomLeft: Radius.circular(25.0), 181 | topLeft: Radius.circular(25.0), 182 | bottomRight: Radius.circular(200.0), 183 | ), 184 | ), 185 | ), 186 | Padding( 187 | padding: const EdgeInsets.only(left: 10.0), 188 | child: Icon(FontAwesome.picture_o), 189 | ) 190 | ], 191 | ), 192 | ), 193 | ), 194 | ), 195 | Padding( 196 | padding: EdgeInsets.all(5), 197 | child: Card( 198 | elevation: 10, 199 | child: Padding( 200 | padding: const EdgeInsets.all(8.0), 201 | child: Text( 202 | _recognitions.isEmpty ? 'Choose a file' : _recognitions[0]['label'], 203 | style: TextStyle( 204 | color: Colors.white, 205 | fontWeight: FontWeight.bold 206 | ), 207 | ), 208 | ), 209 | color: _recognitions.isEmpty ? Colors.blueGrey : _recognitions[0] == 'Normal' ? Colors.green : Colors.red, 210 | ), 211 | ) 212 | ], 213 | ), 214 | ), 215 | ); 216 | } 217 | } 218 | -------------------------------------------------------------------------------- /lib/pages/skincanc.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/cupertino.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:flutter_svg/flutter_svg.dart'; 4 | import 'package:flutter_vector_icons/flutter_vector_icons.dart'; 5 | import 'package:google_fonts/google_fonts.dart'; 6 | import 'package:tflite/tflite.dart'; 7 | import 'package:image_picker/image_picker.dart'; 8 | import 'dart:io'; 9 | 10 | class SkinPage extends StatefulWidget { 11 | @override 12 | _SkinPageState createState() => _SkinPageState(); 13 | } 14 | 15 | class _SkinPageState extends State { 16 | 17 | File _image; 18 | List _recognitions = []; 19 | bool _busy; 20 | bool loaded = false; 21 | final picker = ImagePicker(); 22 | 23 | loadTfModel() async { 24 | Tflite.close(); 25 | String res = await Tflite.loadModel( 26 | model: "assets/models/sc_model.tflite", 27 | labels: "assets/models/sc_labels.txt", 28 | numThreads: 1 29 | ); 30 | setState(() { 31 | _busy = false; 32 | }); 33 | print('----------------res'); 34 | print(res); 35 | 36 | } 37 | 38 | detectObject(File image) async { 39 | var recognitions = await Tflite.runModelOnImage( 40 | path: image.path, // required 41 | imageMean: 127.5, 42 | imageStd: 127.5, 43 | threshold: 0.4, // defaults to 0.1 44 | asynch: true // defaults to true 45 | ); 46 | FileImage(image) 47 | .resolve(ImageConfiguration()) 48 | .addListener((ImageStreamListener((ImageInfo info, bool _) { 49 | }))); 50 | setState(() { 51 | _recognitions = recognitions; 52 | }); 53 | print('--------------rekog'); 54 | print(_recognitions); 55 | } 56 | 57 | @override 58 | void dispose() { 59 | Tflite.close(); 60 | super.dispose(); 61 | } 62 | 63 | Future getImageFromGallery() async { 64 | final pickedFile = await picker.getImage(source: ImageSource.gallery); 65 | setState(() { 66 | if (pickedFile != null) { 67 | _image = File(pickedFile.path); 68 | setState(() { 69 | loaded = true; 70 | }); 71 | } else {} 72 | }); 73 | detectObject(_image); 74 | } 75 | 76 | @override 77 | void initState() { 78 | // TODO: implement initState 79 | super.initState(); 80 | loadTfModel(); 81 | } 82 | 83 | @override 84 | Widget build(BuildContext context) { 85 | return Scaffold( 86 | appBar: AppBar( 87 | elevation: 0.0, 88 | backgroundColor: Colors.transparent, 89 | leading: IconButton( 90 | icon: Icon( 91 | Icons.arrow_back, 92 | color: Colors.black, 93 | ), 94 | onPressed: () { 95 | Navigator.pop(context); 96 | }, 97 | ), 98 | title: Text( 99 | "Skin cancer Prediction", 100 | style: GoogleFonts.merriweather( 101 | color: Colors.black, 102 | ), 103 | ), 104 | ), 105 | body: Center( 106 | child: Column( 107 | mainAxisAlignment : MainAxisAlignment.center, 108 | crossAxisAlignment:CrossAxisAlignment.center, 109 | children: [ 110 | Padding( 111 | padding: const EdgeInsets.all(25), 112 | child: GestureDetector( 113 | onTap: () { 114 | getImageFromGallery(); 115 | }, 116 | child: SizedBox( 117 | height: 300, 118 | width: 300, 119 | child: loaded ? Image.file(_image) : Card( 120 | child: Column( 121 | mainAxisAlignment: MainAxisAlignment.center, 122 | crossAxisAlignment: CrossAxisAlignment.center, 123 | children: [ 124 | Icon(Icons.add, size: 30,), 125 | SizedBox(height: 20,), 126 | Text('Upload Image') 127 | ], 128 | ), 129 | elevation: 20, 130 | ), 131 | ), 132 | ) 133 | ), 134 | Padding( 135 | padding: const EdgeInsets.only(top: 50.0), 136 | child: Container( 137 | height: 50.0, 138 | width: 220.0, 139 | decoration: BoxDecoration( 140 | boxShadow: [ 141 | BoxShadow( 142 | offset: Offset(0.0, 20.0), 143 | blurRadius: 30.0, 144 | color: Colors.black12, 145 | ), 146 | ], 147 | color: Colors.white, 148 | borderRadius: BorderRadius.only( 149 | bottomLeft: Radius.circular(25.0), 150 | topLeft: Radius.circular(25.0), 151 | bottomRight: Radius.circular(15.0), 152 | topRight: Radius.circular(15.0), 153 | ), 154 | // borderRadius: 155 | // BorderRadius.circular(25.0), 156 | ), 157 | child: GestureDetector( 158 | onTap: () { 159 | print('lol'); 160 | getImageFromGallery(); 161 | }, 162 | child: Row( 163 | children: [ 164 | Container( 165 | height: 70.0, 166 | width: 170.0, 167 | margin: EdgeInsets.symmetric(vertical: 0, horizontal: 0.0), 168 | child: Padding( 169 | padding: 170 | EdgeInsets.symmetric(vertical: 15, horizontal: 10.0), 171 | child: Text( 172 | 'Predict', 173 | style: GoogleFonts.nunito( 174 | fontSize: 15, 175 | ), 176 | ), 177 | ), 178 | decoration: BoxDecoration( 179 | color: Colors.lightBlue, 180 | borderRadius: BorderRadius.only( 181 | bottomLeft: Radius.circular(25.0), 182 | topLeft: Radius.circular(25.0), 183 | bottomRight: Radius.circular(200.0), 184 | ), 185 | ), 186 | ), 187 | Padding( 188 | padding: const EdgeInsets.only(left: 10.0), 189 | child: Icon(FontAwesome.picture_o), 190 | ) 191 | ], 192 | ), 193 | ), 194 | ), 195 | ), 196 | Padding( 197 | padding: EdgeInsets.all(5), 198 | child: Card( 199 | elevation: 10, 200 | child: Padding( 201 | padding: const EdgeInsets.all(12.0), 202 | child: Text( 203 | _recognitions.isEmpty ? 'Choose a file' : _recognitions[0]['label'], 204 | style: TextStyle( 205 | color: Colors.white, 206 | fontWeight: FontWeight.bold 207 | ), 208 | ), 209 | ), 210 | color: _recognitions.isEmpty ? Colors.blueGrey : _recognitions[0] == 'Normal' ? Colors.green : Colors.red, 211 | ), 212 | ) 213 | ], 214 | ), 215 | ), 216 | ); 217 | } 218 | } 219 | -------------------------------------------------------------------------------- /lib/startpage.dart: -------------------------------------------------------------------------------- 1 | // Start page, detects silently whether the user has signed in for not. If not, he's re-directed to the sign in page. 2 | import 'dart:async'; 3 | import 'dart:io'; 4 | 5 | import 'package:flutter/cupertino.dart'; 6 | import 'package:flutter/material.dart'; 7 | import 'package:fluttertoast/fluttertoast.dart'; 8 | import 'package:google_fonts/google_fonts.dart'; 9 | import 'package:google_sign_in/google_sign_in.dart'; 10 | import 'package:health/authentication/signredirect.dart'; 11 | import 'package:health/widgets/UserInfo.dart'; 12 | import 'package:shared_preferences/shared_preferences.dart'; 13 | import 'package:shimmer/shimmer.dart'; 14 | import 'package:local_auth/local_auth.dart'; 15 | 16 | final GoogleSignIn googleSignIn = GoogleSignIn(); 17 | 18 | class StartScreen extends StatefulWidget { 19 | @override 20 | _StartScreenState createState() => _StartScreenState(); 21 | } 22 | 23 | class _StartScreenState extends State { 24 | final LocalAuthentication _localAuthentication = LocalAuthentication(); 25 | bool _hasFingerPrintSupport = false; 26 | List _availableBuimetricType = List(); 27 | 28 | bool isAuth; 29 | 30 | Future _getBiometricsSupport() async { 31 | bool hasFingerPrintSupport = false; 32 | try { 33 | hasFingerPrintSupport = await _localAuthentication.canCheckBiometrics; 34 | } catch (e) { 35 | print(e); 36 | } 37 | if (!mounted) return; 38 | setState(() { 39 | _hasFingerPrintSupport = hasFingerPrintSupport; 40 | }); 41 | } 42 | 43 | Future _getAvailableSupport() async { 44 | // 7. this method fetches all the available biometric supports of the device 45 | List availableBuimetricType = List(); 46 | try { 47 | availableBuimetricType = 48 | await _localAuthentication.getAvailableBiometrics(); 49 | } catch (e) { 50 | print(e); 51 | } 52 | if (!mounted) return; 53 | setState(() { 54 | _availableBuimetricType = availableBuimetricType; 55 | }); 56 | } 57 | 58 | Future _authenticateMe() async { 59 | print('-----------------imma trying'); 60 | // 8. this method opens a dialog for fingerprint authentication. 61 | // we do not need to create a dialog nut it popsup from device natively. 62 | bool authenticated = false; 63 | try { 64 | authenticated = await _localAuthentication.authenticateWithBiometrics( 65 | localizedReason: "Authenticate for Testing", // message for dialog 66 | useErrorDialogs: true,// show error in dialog 67 | stickyAuth: true,// native process 68 | ); 69 | } catch (e) { 70 | print(e); 71 | } 72 | if (!mounted) return; 73 | if (authenticated) { 74 | checkLogin(); 75 | } 76 | } 77 | 78 | @override 79 | void initState() { 80 | super.initState(); 81 | startTimer(); 82 | checkInternet(); 83 | _authenticateMe(); 84 | } 85 | 86 | checkInternet() async { 87 | try { 88 | final result = await InternetAddress.lookup('example.com'); 89 | if (result.isNotEmpty && result[0].rawAddress.isNotEmpty) {} 90 | } on SocketException catch (_) { 91 | Fluttertoast.showToast( 92 | msg: 'Not connected to Internet.', 93 | backgroundColor: Colors.black, 94 | textColor: Colors.white, 95 | toastLength: Toast.LENGTH_LONG); 96 | } 97 | } 98 | 99 | checkLogin() async { 100 | googleSignIn.onCurrentUserChanged.listen((GoogleSignInAccount account) { 101 | handleSignIn(account); 102 | onError: 103 | (err) {}; 104 | }); 105 | googleSignIn 106 | .signInSilently(suppressErrors: false) //signing in automatically 107 | .then((account) { 108 | handleSignIn(account); 109 | }).catchError((err) {}); 110 | } 111 | 112 | handleSignIn(GoogleSignInAccount account) async { 113 | if (account != null) { 114 | SharedPreferences preferences = await SharedPreferences.getInstance(); 115 | preferences.setString('username', account.displayName); 116 | preferences.setString('imgUrl', account.photoUrl); 117 | 118 | setState(() { 119 | UserInformation().username = preferences.get('username'); 120 | UserInformation().imgUrl = preferences.get('imgUrl'); 121 | isAuth = true; 122 | }); 123 | } else { 124 | setState(() { 125 | isAuth = false; 126 | }); 127 | } 128 | } 129 | 130 | login() { 131 | googleSignIn.signIn(); 132 | } 133 | 134 | callback() { 135 | Navigator.pushReplacement(context, MaterialPageRoute(builder: (context) { 136 | return SignInPage(); 137 | })); 138 | } 139 | 140 | startTimer() async { 141 | var duration = Duration( 142 | seconds: 143 | 1); // After 1 seconds, it is re-directed to the sign-in screen if the user is not authenticated, else it takes him into the app. 144 | return Timer(duration, callback); 145 | } 146 | 147 | buildUnAuthScreen() { 148 | return Scaffold( 149 | body: Container( 150 | decoration: BoxDecoration( 151 | gradient: LinearGradient( 152 | begin: Alignment.topRight, 153 | end: Alignment.bottomLeft, 154 | colors: [ 155 | Theme.of(context).primaryColor.withOpacity(0.8), 156 | Theme.of(context).accentColor, 157 | ])), 158 | alignment: Alignment.center, 159 | child: Column( 160 | crossAxisAlignment: CrossAxisAlignment.center, 161 | children: [ 162 | Padding( 163 | padding: const EdgeInsets.only( 164 | top: 225, bottom: 225, left: 35, right: 35), 165 | child: RichText( 166 | text: TextSpan( 167 | style: GoogleFonts.satisfy( 168 | fontWeight: FontWeight.bold, 169 | color: Colors.lightBlue.shade400, 170 | ), 171 | children: [ 172 | TextSpan( 173 | text: 'Health', 174 | style: GoogleFonts.satisfy( 175 | fontWeight: FontWeight.bold, color: Colors.black)), 176 | TextSpan( 177 | text: 'Care', 178 | style: GoogleFonts.satisfy( 179 | fontWeight: FontWeight.bold, 180 | color: Colors.green.shade700)), 181 | ], 182 | ), 183 | ), 184 | ), 185 | GestureDetector( 186 | onTap: login, 187 | child: Container( 188 | width: 260.0, 189 | height: 60.0, 190 | decoration: BoxDecoration( 191 | image: DecorationImage( 192 | image: AssetImage( 193 | 'assets/images/google_signin_button.png', 194 | ), 195 | fit: BoxFit.cover, 196 | ), 197 | ), 198 | ), 199 | ) 200 | ], 201 | ), 202 | ), 203 | ); 204 | } 205 | 206 | @override 207 | Widget build(BuildContext context) { 208 | return Scaffold( 209 | resizeToAvoidBottomInset: true, 210 | body: Container( 211 | alignment: Alignment.center, 212 | child: Stack( 213 | alignment: Alignment.center, 214 | children: [ 215 | Shimmer.fromColors( 216 | baseColor: Colors.lightBlue, 217 | highlightColor: Colors.lightBlue.shade400, 218 | child: RichText( 219 | text: TextSpan( 220 | style: GoogleFonts.satisfy( 221 | fontWeight: FontWeight.bold, 222 | color: Colors.lightBlue.shade400, 223 | fontSize: 50, 224 | ), 225 | children: [ 226 | TextSpan( 227 | text: 'Health', 228 | style: GoogleFonts.satisfy( 229 | fontWeight: FontWeight.bold, color: Colors.black)), 230 | TextSpan( 231 | text: 'Care', 232 | style: GoogleFonts.satisfy( 233 | fontWeight: FontWeight.bold, 234 | color: Colors.green.shade700)), 235 | ], 236 | ), 237 | ), 238 | ), 239 | ], 240 | ), 241 | ), 242 | ); 243 | } 244 | } 245 | -------------------------------------------------------------------------------- /assets/img/covid.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /lib/authentication/signredirect.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | 3 | import 'package:firebase_auth/firebase_auth.dart'; 4 | import 'package:flutter/cupertino.dart'; 5 | import 'package:flutter/material.dart'; 6 | import 'package:flutter_svg/flutter_svg.dart'; 7 | import 'package:google_fonts/google_fonts.dart'; 8 | import 'package:google_sign_in/google_sign_in.dart'; 9 | import 'package:health/services/authservice.dart'; 10 | import 'package:health/src/pages/home_page.dart'; 11 | import 'package:health/startpage.dart'; 12 | 13 | //Google authentication & 14 | //Mobile authentication 15 | String phisoCode; 16 | 17 | class SignInPage extends StatefulWidget { 18 | @override 19 | _SignInPageState createState() => _SignInPageState(); 20 | } 21 | 22 | class _SignInPageState extends State { 23 | callback() { 24 | setState(() { 25 | isLoading = false; 26 | }); 27 | } 28 | 29 | startTimer() async { 30 | var duration = Duration( 31 | seconds: 32 | 2); // After 2 seconds, it is re-directed to the sign-in screen if the user is not authenticated, else it takes him into the app. 33 | return Timer(duration, callback); 34 | } 35 | 36 | final formKey = new GlobalKey(); 37 | String phoneNo, verificationId; 38 | String smsCode; 39 | bool codeSent = false; 40 | bool isAuth = false; 41 | bool _visible = true; 42 | String isoCCode; 43 | bool isLoading = true; 44 | 45 | @override 46 | void initState() { 47 | startTimer(); 48 | super.initState(); 49 | checkLogin(); 50 | } 51 | 52 | checkLogin() async { 53 | googleSignIn.onCurrentUserChanged.listen((GoogleSignInAccount account) { 54 | handleSignIn(account); 55 | onError: 56 | (err) {}; 57 | }); 58 | googleSignIn 59 | .signInSilently(suppressErrors: false) //signing in automatically 60 | .then((account) { 61 | handleSignIn(account); 62 | }).catchError((err) {}); 63 | 64 | FirebaseAuth.instance.authStateChanges().listen((acc) { 65 | if (acc != null) { 66 | setState(() { 67 | isAuth = true; 68 | }); 69 | } else { 70 | googleSignIn.onCurrentUserChanged.listen((GoogleSignInAccount account) { 71 | handleSignIn(account); 72 | onError: 73 | (err) {}; 74 | }); 75 | googleSignIn 76 | .signInSilently(suppressErrors: false) //signing in automatically 77 | .then((account) { 78 | handleSignIn(account); 79 | }).catchError((err) {}); 80 | } 81 | }); 82 | } 83 | 84 | handleSignIn(GoogleSignInAccount account) async { 85 | if (account != null) { 86 | setState(() { 87 | isAuth = true; 88 | }); 89 | } else { 90 | setState(() { 91 | isAuth = false; 92 | }); 93 | } 94 | } 95 | 96 | void onPhoneNumberChange( 97 | String number, String internationalizedPhoneNumber, String isoCode) { 98 | setState(() { 99 | phoneNo = internationalizedPhoneNumber; 100 | phisoCode = isoCode; 101 | }); 102 | } 103 | 104 | @override 105 | buildUnauthScreen() { 106 | return Scaffold( 107 | appBar: _visible == false 108 | ? AppBar( 109 | elevation: 0, 110 | backgroundColor: Colors.white, 111 | leading: IconButton( 112 | icon: Icon(Icons.arrow_back), 113 | onPressed: () { 114 | Navigator.pushReplacement(context, 115 | MaterialPageRoute(builder: (context) { 116 | return SignInPage(); 117 | })); 118 | }), 119 | ) 120 | : null, 121 | resizeToAvoidBottomInset: false, 122 | body: Container( 123 | color: Colors.white, 124 | alignment: Alignment.center, 125 | child: Column( 126 | crossAxisAlignment: CrossAxisAlignment.center, 127 | children: [ 128 | Padding( 129 | padding: _visible 130 | ? const EdgeInsets.only( 131 | top: 150, bottom: 0, left: 35, right: 35) 132 | : const EdgeInsets.only( 133 | top: 150, bottom: 0, left: 35, right: 35), 134 | child: RichText( 135 | text: TextSpan( 136 | style: GoogleFonts.satisfy( 137 | fontWeight: FontWeight.bold, 138 | color: Colors.green.shade700, 139 | fontSize: 36), 140 | children: [ 141 | TextSpan( 142 | text: 'Health', 143 | style: GoogleFonts.satisfy( 144 | fontWeight: FontWeight.bold, color: Colors.black)), 145 | TextSpan( 146 | text: 'Care', 147 | style: GoogleFonts.satisfy( 148 | fontWeight: FontWeight.bold, 149 | color: Colors.lightBlue.shade400)), 150 | ], 151 | ), 152 | ), 153 | ), 154 | Text( 155 | "Always close to you", 156 | style: TextStyle( 157 | fontSize: 12, 158 | color: Colors.grey.shade800.withOpacity(0.8), 159 | fontStyle: FontStyle.italic, 160 | fontWeight: FontWeight.bold, 161 | letterSpacing: 0.8), 162 | ), 163 | Padding( 164 | padding: const EdgeInsets.all(50.0), 165 | child: SvgPicture.asset( 166 | 'assets/img/splash.svg', 167 | height: 250, 168 | ), 169 | ), 170 | Padding( 171 | padding: const EdgeInsets.only(top: 50), 172 | child: isLoading == true 173 | ? CircularProgressIndicator( 174 | strokeWidth: 2, 175 | valueColor: AlwaysStoppedAnimation(Colors.blue), 176 | ) 177 | : GestureDetector( 178 | onTap: login, 179 | child: Container( 180 | width: 260.0, 181 | height: 60.0, 182 | decoration: BoxDecoration( 183 | image: DecorationImage( 184 | image: AssetImage( 185 | 'assets/images/google_signin_button.png', 186 | ), 187 | fit: BoxFit.cover, 188 | ), 189 | ), 190 | ), 191 | ), 192 | ), 193 | isLoading == true 194 | ? CircularProgressIndicator( 195 | strokeWidth: 2, 196 | valueColor: AlwaysStoppedAnimation(Colors.white), 197 | ) 198 | : Padding( 199 | padding: const EdgeInsets.all(8.0), 200 | child: Container( 201 | height: 55, 202 | width: 256, 203 | child: ElevatedButton( 204 | style: ElevatedButton.styleFrom( 205 | primary: Colors.blue.shade400, 206 | textStyle: TextStyle( 207 | color: Colors.white, 208 | ), 209 | shape: RoundedRectangleBorder( 210 | borderRadius: BorderRadius.circular(5.0), 211 | ), 212 | ), 213 | child: Padding( 214 | padding: const EdgeInsets.only(top: 5.0), 215 | child: Wrap( 216 | children: [ 217 | Icon( 218 | Icons.fingerprint, 219 | color: Colors.white, 220 | size: 30, 221 | ), 222 | Padding( 223 | padding: 224 | const EdgeInsets.only(top: 5.0, left: 25.0), 225 | child: Text( 226 | "Sign in with Fingerprint", 227 | style: TextStyle( 228 | fontSize: 15, 229 | fontWeight: FontWeight.bold), 230 | ), 231 | ) 232 | ], 233 | ), 234 | ), 235 | onPressed: () { 236 | // TODO Fingerprint signin 237 | }, 238 | ), 239 | ), 240 | ), 241 | ], 242 | ), 243 | ), 244 | ); 245 | } 246 | 247 | login() async { 248 | await googleSignIn.signIn(); 249 | } 250 | 251 | logout() { 252 | googleSignIn.signOut(); 253 | AuthService().signout(context); 254 | } 255 | 256 | @override 257 | Widget build(BuildContext context) { 258 | return isAuth ? HomePage() : buildUnauthScreen(); 259 | } 260 | } 261 | -------------------------------------------------------------------------------- /.packages: -------------------------------------------------------------------------------- 1 | # This file is deprecated. Tools should instead consume 2 | # `.dart_tools/package_config.json`. 3 | # 4 | # For more info see: https://dart.dev/go/dot-packages-deprecation 5 | # 6 | # Generated by pub on 2021-06-26 13:25:41.701716. 7 | animated_onboarding:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/animated_onboarding-0.0.2/lib/ 8 | animated_splash_screen:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/animated_splash_screen-1.0.1+2/lib/ 9 | archive:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/archive-2.0.13/lib/ 10 | args:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/args-1.6.0/lib/ 11 | async:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/async-2.5.0-nullsafety.3/lib/ 12 | boolean_selector:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/boolean_selector-2.1.0-nullsafety.3/lib/ 13 | cached_network_image:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/cached_network_image-2.5.1/lib/ 14 | characters:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/characters-1.1.0-nullsafety.5/lib/ 15 | charcode:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/charcode-1.2.0-nullsafety.3/lib/ 16 | clock:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/clock-1.1.0-nullsafety.3/lib/ 17 | cloud_firestore:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.14.4/lib/ 18 | cloud_firestore_platform_interface:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/cloud_firestore_platform_interface-2.2.1/lib/ 19 | cloud_firestore_web:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/cloud_firestore_web-0.2.1+2/lib/ 20 | collection:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/collection-1.15.0-nullsafety.5/lib/ 21 | convert:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/convert-2.1.1/lib/ 22 | crypto:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/crypto-2.1.5/lib/ 23 | cupertino_icons:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/cupertino_icons-1.0.2/lib/ 24 | eventify:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/eventify-0.1.6/lib/ 25 | fake_async:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/fake_async-1.2.0-nullsafety.3/lib/ 26 | ffi:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/ffi-0.1.3/lib/ 27 | file:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/file-5.2.1/lib/ 28 | file_picker:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/file_picker-2.1.7/lib/ 29 | firebase_auth:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_auth-0.18.4+1/lib/ 30 | firebase_auth_platform_interface:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_auth_platform_interface-2.1.4/lib/ 31 | firebase_auth_web:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_auth_web-0.3.2+3/lib/ 32 | firebase_core:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_core-0.5.3/lib/ 33 | firebase_core_platform_interface:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_core_platform_interface-2.1.0/lib/ 34 | firebase_core_web:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_core_web-0.2.1+1/lib/ 35 | firebase_database:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_database-4.4.0/lib/ 36 | firebase_storage:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_storage-5.2.0/lib/ 37 | firebase_storage_platform_interface:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_storage_platform_interface-1.0.2/lib/ 38 | firebase_storage_web:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_storage_web-0.1.1+1/lib/ 39 | flutter:file:///G:/Flutter%20Dev/flutter/packages/flutter/lib/ 40 | flutter_blurhash:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_blurhash-0.5.0/lib/ 41 | flutter_cache_manager:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_cache_manager-2.1.2/lib/ 42 | flutter_datetime_picker:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_datetime_picker-1.5.0/lib/ 43 | flutter_local_notifications:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_local_notifications-1.5.0+1/lib/ 44 | flutter_local_notifications_platform_interface:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_local_notifications_platform_interface-1.0.1/lib/ 45 | flutter_plugin_android_lifecycle:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_plugin_android_lifecycle-1.0.11/lib/ 46 | flutter_spinkit:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_spinkit-4.1.2+1/lib/ 47 | flutter_svg:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_svg-0.19.3/lib/ 48 | flutter_test:file:///G:/Flutter%20Dev/flutter/packages/flutter_test/lib/ 49 | flutter_vector_icons:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_vector_icons-0.2.1/lib/ 50 | flutter_web_plugins:file:///G:/Flutter%20Dev/flutter/packages/flutter_web_plugins/lib/ 51 | fluttertoast:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/fluttertoast-7.1.8/lib/ 52 | font_awesome_flutter:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/font_awesome_flutter-8.12.0/lib/ 53 | geocoding:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/geocoding-1.0.5/lib/ 54 | geocoding_platform_interface:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/geocoding_platform_interface-1.0.1+1/lib/ 55 | geolocator:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/geolocator-6.2.1/lib/ 56 | geolocator_platform_interface:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/geolocator_platform_interface-1.0.9/lib/ 57 | geolocator_web:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/geolocator_web-1.0.1/lib/ 58 | google_fonts:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/google_fonts-1.1.2/lib/ 59 | google_sign_in:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/google_sign_in-4.5.9/lib/ 60 | google_sign_in_platform_interface:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/google_sign_in_platform_interface-1.1.2/lib/ 61 | google_sign_in_web:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/google_sign_in_web-0.9.2/lib/ 62 | http:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/http-0.12.2/lib/ 63 | http_parser:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/http_parser-3.1.4/lib/ 64 | image:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/image-2.1.19/lib/ 65 | image_picker:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/image_picker-0.6.7+22/lib/ 66 | image_picker_platform_interface:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/image_picker_platform_interface-1.1.6/lib/ 67 | international_phone_input:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/international_phone_input-1.0.4/lib/ 68 | intl:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/intl-0.16.1/lib/ 69 | js:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/js-0.6.3-nullsafety.3/lib/ 70 | libphonenumber:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/libphonenumber-1.0.2/lib/ 71 | local_auth:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/local_auth-0.6.3+4/lib/ 72 | maps_launcher:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/maps_launcher-1.2.2+2/lib/ 73 | matcher:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/matcher-0.12.10-nullsafety.3/lib/ 74 | meta:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/meta-1.3.0-nullsafety.6/lib/ 75 | octo_image:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/octo_image-0.3.0/lib/ 76 | page_transition:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/page_transition-1.1.7+6/lib/ 77 | path:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/path-1.8.0-nullsafety.3/lib/ 78 | path_drawing:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/path_drawing-0.4.1+1/lib/ 79 | path_parsing:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/path_parsing-0.1.4/lib/ 80 | path_provider:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider-1.6.28/lib/ 81 | path_provider_linux:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_linux-0.0.1+2/lib/ 82 | path_provider_macos:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_macos-0.0.4+8/lib/ 83 | path_provider_platform_interface:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_platform_interface-1.0.4/lib/ 84 | path_provider_windows:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_windows-0.0.4+3/lib/ 85 | pedantic:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/pedantic-1.11.1/lib/ 86 | petitparser:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/petitparser-3.1.0/lib/ 87 | pinput:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/pinput-0.2.6/lib/ 88 | platform:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/platform-3.0.0/lib/ 89 | plugin_platform_interface:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/plugin_platform_interface-1.0.3/lib/ 90 | process:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/process-3.0.13/lib/ 91 | quiver:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/quiver-2.1.5/lib/ 92 | razorpay_flutter:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/razorpay_flutter-1.2.5/lib/ 93 | rxdart:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/rxdart-0.25.0/lib/ 94 | shared_preferences:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences-0.5.12+4/lib/ 95 | shared_preferences_linux:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_linux-0.0.2+4/lib/ 96 | shared_preferences_macos:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_macos-0.0.1+11/lib/ 97 | shared_preferences_platform_interface:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_platform_interface-1.0.4/lib/ 98 | shared_preferences_web:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_web-0.1.2+7/lib/ 99 | shared_preferences_windows:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_windows-0.0.2+3/lib/ 100 | shimmer:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/shimmer-1.1.2/lib/ 101 | sky_engine:file:///G:/Flutter%20Dev/flutter/bin/cache/pkg/sky_engine/lib/ 102 | source_span:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/source_span-1.8.0-nullsafety.4/lib/ 103 | sqflite:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/sqflite-1.3.2+4/lib/ 104 | sqflite_common:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/sqflite_common-1.0.3+3/lib/ 105 | stack_trace:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/stack_trace-1.10.0-nullsafety.6/lib/ 106 | stream_channel:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/stream_channel-2.1.0-nullsafety.3/lib/ 107 | string_scanner:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/string_scanner-1.1.0-nullsafety.3/lib/ 108 | synchronized:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/synchronized-2.2.0+2/lib/ 109 | term_glyph:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/term_glyph-1.2.0-nullsafety.3/lib/ 110 | test_api:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/test_api-0.2.19-nullsafety.6/lib/ 111 | tflite:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/tflite-1.0.5/lib/ 112 | typed_data:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/typed_data-1.3.0-nullsafety.5/lib/ 113 | url_launcher:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-5.7.10/lib/ 114 | url_launcher_linux:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_linux-0.0.1+4/lib/ 115 | url_launcher_macos:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_macos-0.0.1+9/lib/ 116 | url_launcher_platform_interface:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_platform_interface-1.0.9/lib/ 117 | url_launcher_web:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_web-0.1.5+3/lib/ 118 | url_launcher_windows:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_windows-0.0.1+3/lib/ 119 | uuid:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/uuid-2.2.2/lib/ 120 | vector_math:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/vector_math-2.1.0-nullsafety.5/lib/ 121 | win32:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/win32-1.7.4+1/lib/ 122 | xdg_directories:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/xdg_directories-0.1.2/lib/ 123 | xml:file:///G:/Flutter%20Dev/flutter/.pub-cache/hosted/pub.dartlang.org/xml-4.5.1/lib/ 124 | health:lib/ 125 | -------------------------------------------------------------------------------- /.flutter-plugins-dependencies: -------------------------------------------------------------------------------- 1 | {"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"cloud_firestore","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\cloud_firestore-0.14.4\\\\","dependencies":["firebase_core"]},{"name":"file_picker","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\file_picker-2.1.7\\\\","dependencies":[]},{"name":"firebase_auth","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\firebase_auth-0.18.4+1\\\\","dependencies":["firebase_core"]},{"name":"firebase_core","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\firebase_core-0.5.3\\\\","dependencies":[]},{"name":"firebase_database","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\firebase_database-4.4.0\\\\","dependencies":["firebase_core"]},{"name":"firebase_storage","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\firebase_storage-5.2.0\\\\","dependencies":["firebase_core"]},{"name":"flutter_local_notifications","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\flutter_local_notifications-1.5.0+1\\\\","dependencies":[]},{"name":"fluttertoast","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\fluttertoast-7.1.8\\\\","dependencies":[]},{"name":"geocoding","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\geocoding-1.0.5\\\\","dependencies":["url_launcher"]},{"name":"geolocator","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\geolocator-6.2.1\\\\","dependencies":[]},{"name":"google_sign_in","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\google_sign_in-4.5.9\\\\","dependencies":[]},{"name":"image_picker","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\image_picker-0.6.7+22\\\\","dependencies":[]},{"name":"libphonenumber","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\libphonenumber-1.0.2\\\\","dependencies":[]},{"name":"local_auth","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\local_auth-0.6.3+4\\\\","dependencies":[]},{"name":"maps_launcher","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\maps_launcher-1.2.2+2\\\\","dependencies":["url_launcher"]},{"name":"path_provider","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider-1.6.28\\\\","dependencies":[]},{"name":"razorpay_flutter","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\razorpay_flutter-1.2.5\\\\","dependencies":[]},{"name":"shared_preferences","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\shared_preferences-0.5.12+4\\\\","dependencies":[]},{"name":"sqflite","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\sqflite-1.3.2+4\\\\","dependencies":[]},{"name":"tflite","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\tflite-1.0.5\\\\","dependencies":[]},{"name":"url_launcher","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\url_launcher-5.7.10\\\\","dependencies":[]}],"android":[{"name":"cloud_firestore","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\cloud_firestore-0.14.4\\\\","dependencies":["firebase_core"]},{"name":"file_picker","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\file_picker-2.1.7\\\\","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"firebase_auth","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\firebase_auth-0.18.4+1\\\\","dependencies":["firebase_core"]},{"name":"firebase_core","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\firebase_core-0.5.3\\\\","dependencies":[]},{"name":"firebase_database","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\firebase_database-4.4.0\\\\","dependencies":["firebase_core"]},{"name":"firebase_storage","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\firebase_storage-5.2.0\\\\","dependencies":["firebase_core"]},{"name":"flutter_local_notifications","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\flutter_local_notifications-1.5.0+1\\\\","dependencies":[]},{"name":"flutter_plugin_android_lifecycle","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\flutter_plugin_android_lifecycle-1.0.11\\\\","dependencies":[]},{"name":"fluttertoast","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\fluttertoast-7.1.8\\\\","dependencies":[]},{"name":"geocoding","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\geocoding-1.0.5\\\\","dependencies":["url_launcher"]},{"name":"geolocator","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\geolocator-6.2.1\\\\","dependencies":[]},{"name":"google_sign_in","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\google_sign_in-4.5.9\\\\","dependencies":[]},{"name":"image_picker","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\image_picker-0.6.7+22\\\\","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"libphonenumber","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\libphonenumber-1.0.2\\\\","dependencies":[]},{"name":"local_auth","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\local_auth-0.6.3+4\\\\","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"maps_launcher","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\maps_launcher-1.2.2+2\\\\","dependencies":["url_launcher"]},{"name":"path_provider","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider-1.6.28\\\\","dependencies":[]},{"name":"razorpay_flutter","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\razorpay_flutter-1.2.5\\\\","dependencies":[]},{"name":"shared_preferences","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\shared_preferences-0.5.12+4\\\\","dependencies":[]},{"name":"sqflite","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\sqflite-1.3.2+4\\\\","dependencies":[]},{"name":"tflite","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\tflite-1.0.5\\\\","dependencies":[]},{"name":"url_launcher","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\url_launcher-5.7.10\\\\","dependencies":[]}],"macos":[{"name":"cloud_firestore","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\cloud_firestore-0.14.4\\\\","dependencies":["firebase_core"]},{"name":"firebase_auth","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\firebase_auth-0.18.4+1\\\\","dependencies":["firebase_core"]},{"name":"firebase_core","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\firebase_core-0.5.3\\\\","dependencies":[]},{"name":"firebase_database","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\firebase_database-4.4.0\\\\","dependencies":["firebase_core"]},{"name":"firebase_storage","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\firebase_storage-5.2.0\\\\","dependencies":["firebase_core"]},{"name":"path_provider_macos","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider_macos-0.0.4+8\\\\","dependencies":[]},{"name":"shared_preferences_macos","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\shared_preferences_macos-0.0.1+11\\\\","dependencies":[]},{"name":"sqflite","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\sqflite-1.3.2+4\\\\","dependencies":[]},{"name":"url_launcher_macos","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\url_launcher_macos-0.0.1+9\\\\","dependencies":[]}],"linux":[{"name":"maps_launcher","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\maps_launcher-1.2.2+2\\\\","dependencies":[]},{"name":"path_provider_linux","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider_linux-0.0.1+2\\\\","dependencies":[]},{"name":"shared_preferences_linux","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\shared_preferences_linux-0.0.2+4\\\\","dependencies":["path_provider_linux"]},{"name":"url_launcher_linux","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\url_launcher_linux-0.0.1+4\\\\","dependencies":[]}],"windows":[{"name":"path_provider_windows","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider_windows-0.0.4+3\\\\","dependencies":[]},{"name":"shared_preferences_windows","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\shared_preferences_windows-0.0.2+3\\\\","dependencies":["path_provider_windows"]},{"name":"url_launcher_windows","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\url_launcher_windows-0.0.1+3\\\\","dependencies":[]}],"web":[{"name":"cloud_firestore_web","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\cloud_firestore_web-0.2.1+2\\\\","dependencies":["firebase_core_web"]},{"name":"file_picker","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\file_picker-2.1.7\\\\","dependencies":[]},{"name":"firebase_auth_web","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\firebase_auth_web-0.3.2+3\\\\","dependencies":["firebase_core_web"]},{"name":"firebase_core_web","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\firebase_core_web-0.2.1+1\\\\","dependencies":[]},{"name":"firebase_storage_web","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\firebase_storage_web-0.1.1+1\\\\","dependencies":["firebase_core_web"]},{"name":"fluttertoast","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\fluttertoast-7.1.8\\\\","dependencies":[]},{"name":"geolocator_web","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\geolocator_web-1.0.1\\\\","dependencies":[]},{"name":"google_sign_in_web","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\google_sign_in_web-0.9.2\\\\","dependencies":[]},{"name":"maps_launcher","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\maps_launcher-1.2.2+2\\\\","dependencies":[]},{"name":"shared_preferences_web","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\shared_preferences_web-0.1.2+7\\\\","dependencies":[]},{"name":"url_launcher_web","path":"G:\\\\Flutter Dev\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\url_launcher_web-0.1.5+3\\\\","dependencies":[]}]},"dependencyGraph":[{"name":"cloud_firestore","dependencies":["firebase_core","cloud_firestore_web"]},{"name":"cloud_firestore_web","dependencies":["firebase_core","firebase_core_web"]},{"name":"file_picker","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"firebase_auth","dependencies":["firebase_core","firebase_auth_web"]},{"name":"firebase_auth_web","dependencies":["firebase_core","firebase_core_web"]},{"name":"firebase_core","dependencies":["firebase_core_web"]},{"name":"firebase_core_web","dependencies":[]},{"name":"firebase_database","dependencies":["firebase_core"]},{"name":"firebase_storage","dependencies":["firebase_core","firebase_storage_web"]},{"name":"firebase_storage_web","dependencies":["firebase_core","firebase_core_web"]},{"name":"flutter_local_notifications","dependencies":[]},{"name":"flutter_plugin_android_lifecycle","dependencies":[]},{"name":"fluttertoast","dependencies":[]},{"name":"geocoding","dependencies":["url_launcher"]},{"name":"geolocator","dependencies":["geolocator_web"]},{"name":"geolocator_web","dependencies":[]},{"name":"google_sign_in","dependencies":["google_sign_in_web"]},{"name":"google_sign_in_web","dependencies":[]},{"name":"image_picker","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"libphonenumber","dependencies":[]},{"name":"local_auth","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"maps_launcher","dependencies":["url_launcher"]},{"name":"path_provider","dependencies":["path_provider_macos","path_provider_linux","path_provider_windows"]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_macos","dependencies":[]},{"name":"path_provider_windows","dependencies":[]},{"name":"razorpay_flutter","dependencies":[]},{"name":"shared_preferences","dependencies":["shared_preferences_linux","shared_preferences_macos","shared_preferences_web","shared_preferences_windows"]},{"name":"shared_preferences_linux","dependencies":["path_provider_linux"]},{"name":"shared_preferences_macos","dependencies":[]},{"name":"shared_preferences_web","dependencies":[]},{"name":"shared_preferences_windows","dependencies":["path_provider_windows"]},{"name":"sqflite","dependencies":[]},{"name":"tflite","dependencies":[]},{"name":"url_launcher","dependencies":["url_launcher_web","url_launcher_linux","url_launcher_macos","url_launcher_windows"]},{"name":"url_launcher_linux","dependencies":[]},{"name":"url_launcher_macos","dependencies":[]},{"name":"url_launcher_web","dependencies":[]},{"name":"url_launcher_windows","dependencies":[]}],"date_created":"2021-06-26 13:52:09.078334","version":"1.26.0-18.0.pre.90"} -------------------------------------------------------------------------------- /assets/img/Skin.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /lib/src/pages/detail_page.dart: -------------------------------------------------------------------------------- 1 | import 'package:cloud_firestore/cloud_firestore.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:flutter_datetime_picker/flutter_datetime_picker.dart'; 4 | import 'package:flutter_local_notifications/flutter_local_notifications.dart'; 5 | import 'package:fluttertoast/fluttertoast.dart'; 6 | import 'package:google_fonts/google_fonts.dart'; 7 | import 'package:health/src/model/dactor_model.dart'; 8 | import 'package:health/src/theme/extention.dart'; 9 | import 'package:health/src/theme/light_color.dart'; 10 | import 'package:health/src/theme/text_styles.dart'; 11 | import 'package:health/src/theme/theme.dart'; 12 | import 'package:health/src/widgets/rating_start.dart'; 13 | import 'package:razorpay_flutter/razorpay_flutter.dart'; 14 | import 'package:shared_preferences/shared_preferences.dart'; 15 | import 'package:url_launcher/url_launcher.dart'; 16 | 17 | import '../../main.dart'; 18 | 19 | class DetailPage extends StatefulWidget { 20 | DetailPage({Key key, this.model}) : super(key: key); 21 | final DoctorModel model; 22 | 23 | @override 24 | _DetailPageState createState() => _DetailPageState(); 25 | } 26 | 27 | class _DetailPageState extends State { 28 | FirebaseFirestore firestore = FirebaseFirestore.instance; 29 | DoctorModel model; 30 | String username = ''; 31 | String imgUrl = ''; 32 | String msg = ''; 33 | final authctrl = TextEditingController(); 34 | String times = ''; 35 | List appnts = []; 36 | Razorpay _razorpay; 37 | bool success = false; 38 | DateTime date; 39 | 40 | @override 41 | void initState() { 42 | model = widget.model; 43 | super.initState(); 44 | getName(); 45 | getCloudData(); 46 | _razorpay = Razorpay(); 47 | _razorpay.on(Razorpay.EVENT_PAYMENT_SUCCESS, _handlePaymentSuccess); 48 | _razorpay.on(Razorpay.EVENT_PAYMENT_ERROR, _handlePaymentError); 49 | _razorpay.on(Razorpay.EVENT_EXTERNAL_WALLET, _handleExternalWallet); 50 | } 51 | 52 | getName() async { 53 | SharedPreferences preferences = await SharedPreferences.getInstance(); 54 | username = preferences.getString('username'); 55 | imgUrl = preferences.getString('imgUrl'); 56 | times = preferences.getString('times'); 57 | if (times == null) { 58 | setState(() { 59 | times = '0'; 60 | }); 61 | } 62 | } 63 | 64 | getCloudData() async { 65 | appnts.clear(); 66 | CollectionReference _collectionRef = 67 | FirebaseFirestore.instance.collection(model.name); 68 | QuerySnapshot querySnapshot = await _collectionRef.get(); 69 | final allData = querySnapshot.docs.map((e) => e.data()).toList(); 70 | for (int i = 0; i < allData.length; i++) { 71 | if (allData[i]["name"] == username) { 72 | appnts.add(allData[i]); 73 | } 74 | } 75 | print(appnts); 76 | } 77 | 78 | @override 79 | void dispose() { 80 | super.dispose(); 81 | _razorpay.clear(); 82 | } 83 | 84 | void openCheckout(int cost, String name) async { 85 | var options = { 86 | 'key': '{RAZORPAY_API_KEY}', 87 | 'amount': cost, 88 | 'name': name, 89 | 'description': 'Doctor Fees', 90 | 'prefill': {'contact': '8888888888', 'email': 'test@razorpay.com'}, 91 | 'external': { 92 | 'wallets': ['paytm'] 93 | } 94 | }; 95 | 96 | try { 97 | _razorpay.open(options); 98 | } catch (e) { 99 | debugPrint('Error: e'); 100 | } 101 | } 102 | 103 | void _handlePaymentSuccess(PaymentSuccessResponse response) { 104 | Fluttertoast.showToast( 105 | msg: "SUCCESS: " + response.paymentId, toastLength: Toast.LENGTH_SHORT); 106 | setState(() { 107 | success = true; 108 | }); 109 | final ref = FirebaseFirestore.instance 110 | .collection(model.name) 111 | .doc('$username-$times') 112 | .set({ 113 | 'cost': '500', 114 | 'doc_id': '$username-$times', 115 | 'img': imgUrl, 116 | 'msg': msg, 117 | 'name': username, 118 | 'status': 'waiting', 119 | 'time': date.toString() 120 | }).then((value) async { 121 | int t = num.parse(times); 122 | SharedPreferences preferences = await SharedPreferences.getInstance(); 123 | preferences.setString('times', (t + 1).toString()); 124 | getCloudData(); 125 | Fluttertoast.showToast( 126 | msg: 'Successfully sent request', 127 | backgroundColor: Colors.green, 128 | textColor: Colors.green); 129 | setState(() { 130 | success = false; 131 | }); 132 | }); 133 | } 134 | 135 | void _handlePaymentError(PaymentFailureResponse response) { 136 | Fluttertoast.showToast( 137 | msg: "ERROR: " + response.code.toString() + " - " + response.message, 138 | toastLength: Toast.LENGTH_SHORT); 139 | } 140 | 141 | void _handleExternalWallet(ExternalWalletResponse response) { 142 | Fluttertoast.showToast( 143 | msg: "EXTERNAL_WALLET: " + response.walletName, 144 | toastLength: Toast.LENGTH_SHORT); 145 | } 146 | 147 | Widget _appbar() { 148 | return Row( 149 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 150 | children: [ 151 | BackButton(color: Theme.of(context).primaryColor), 152 | IconButton( 153 | icon: Icon( 154 | model.isfavourite ? Icons.favorite : Icons.favorite_border, 155 | color: model.isfavourite ? Colors.red : LightColor.grey, 156 | ), 157 | onPressed: () { 158 | setState(() { 159 | model.isfavourite = !model.isfavourite; 160 | }); 161 | }) 162 | ], 163 | ); 164 | } 165 | 166 | @override 167 | Widget build(BuildContext context) { 168 | TextStyle titleStyle = TextStyles.title.copyWith(fontSize: 25).bold; 169 | if (AppTheme.fullWidth(context) < 393) { 170 | titleStyle = TextStyles.title.copyWith(fontSize: 23).bold; 171 | } 172 | return Scaffold( 173 | backgroundColor: LightColor.extraLightBlue, 174 | body: SafeArea( 175 | bottom: false, 176 | child: Stack( 177 | children: [ 178 | Image.asset(model.image), 179 | DraggableScrollableSheet( 180 | maxChildSize: .8, 181 | initialChildSize: .6, 182 | minChildSize: .6, 183 | builder: (context, scrollController) { 184 | return Container( 185 | height: AppTheme.fullHeight(context) * .5, 186 | padding: EdgeInsets.only( 187 | left: 19, 188 | right: 19, 189 | top: 16), //symmetric(horizontal: 19, vertical: 16), 190 | decoration: BoxDecoration( 191 | borderRadius: BorderRadius.only( 192 | topLeft: Radius.circular(30), 193 | topRight: Radius.circular(30)), 194 | color: Colors.white, 195 | ), 196 | child: SingleChildScrollView( 197 | physics: BouncingScrollPhysics(), 198 | controller: scrollController, 199 | child: Column( 200 | crossAxisAlignment: CrossAxisAlignment.start, 201 | children: [ 202 | ListTile( 203 | contentPadding: EdgeInsets.all(0), 204 | title: Row( 205 | crossAxisAlignment: CrossAxisAlignment.center, 206 | children: [ 207 | Text(model.name, 208 | style: GoogleFonts.marmelad( 209 | fontSize: 20, 210 | fontWeight: FontWeight.bold)), 211 | SizedBox( 212 | width: 10, 213 | ), 214 | Icon(Icons.check_circle, 215 | size: 20, 216 | color: Theme.of(context).primaryColor), 217 | Spacer(), 218 | ], 219 | ), 220 | subtitle: Text( 221 | model.type, 222 | style: TextStyles.bodySm.subTitleColor.bold, 223 | ), 224 | ), 225 | Divider( 226 | thickness: .3, 227 | color: LightColor.grey, 228 | ), 229 | Column( 230 | mainAxisAlignment: MainAxisAlignment.center, 231 | children: [ 232 | RatingStar( 233 | rating: model.rating, 234 | ) 235 | ], 236 | ), 237 | Divider( 238 | thickness: .3, 239 | color: LightColor.grey, 240 | ), 241 | Text("About", style: titleStyle).vP16, 242 | Text( 243 | model.description, 244 | style: TextStyles.body.subTitleColor, 245 | ), 246 | SizedBox( 247 | height: 40, 248 | ), 249 | TextField( 250 | controller: authctrl, 251 | decoration: InputDecoration( 252 | suffixIcon: Transform.rotate( 253 | angle: 3.92, 254 | child: IconButton( 255 | icon: Icon( 256 | Icons.add_circle, 257 | color: Colors.grey, 258 | ), 259 | onPressed: () { 260 | authctrl.clear(); 261 | }, 262 | ), 263 | ), 264 | border: OutlineInputBorder(), 265 | labelText: 'Enter your message', 266 | labelStyle: TextStyle(color: Colors.blueGrey), 267 | fillColor: Colors.blueGrey, 268 | focusedBorder: OutlineInputBorder( 269 | borderSide: const BorderSide( 270 | color: Colors.black, width: 2.0), 271 | borderRadius: BorderRadius.circular(25.0), 272 | ), 273 | enabledBorder: OutlineInputBorder( 274 | borderSide: const BorderSide( 275 | color: Colors.grey, width: 2.0), 276 | borderRadius: BorderRadius.circular(25.0), 277 | ), 278 | ), 279 | onSubmitted: (tag) { 280 | print('--------------tag'); 281 | print(tag); 282 | setState(() { 283 | msg = tag; 284 | }); 285 | }, 286 | ), 287 | Padding( 288 | padding: EdgeInsets.only(top: 20), 289 | child: Row( 290 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 291 | children: [ 292 | FloatingActionButton( 293 | heroTag: "lol", 294 | child: Icon(Icons.call), 295 | onPressed: () async { 296 | const url = 'tel:9444160512'; 297 | if (await canLaunch(url)) { 298 | launch(url); 299 | } 300 | }, 301 | backgroundColor: Colors.blueGrey, 302 | ), 303 | SizedBox( 304 | width: 10, 305 | ), 306 | FloatingActionButton( 307 | heroTag: "ogg", 308 | child: Icon(Icons.message), 309 | onPressed: () async { 310 | print('lol'); 311 | const url = 312 | 'sms:+919444160512?body=Hello%20Doctor'; 313 | if (await canLaunch(url)) { 314 | launch(url); 315 | } 316 | }, 317 | backgroundColor: Colors.blueGrey, 318 | focusColor: Colors.blueGrey, 319 | ), 320 | SizedBox( 321 | width: 10, 322 | ), 323 | FlatButton( 324 | color: Theme.of(context).primaryColor, 325 | shape: RoundedRectangleBorder( 326 | borderRadius: BorderRadius.circular(10)), 327 | onPressed: () async { 328 | await DatePicker.showDateTimePicker(context, 329 | showTitleActions: true, 330 | minTime: DateTime(2020, 5, 5, 20, 50), 331 | maxTime: DateTime(2021, 6, 30, 05, 09), 332 | onConfirm: (time) async { 333 | print('confirm $time'); 334 | setState(() { 335 | date = time; 336 | }); 337 | await scheduleAlarm(date, 338 | 'Medical checkup on ${date.toString()} with ${model.name}'); 339 | }); 340 | await openCheckout(5000, model.name); 341 | if (msg == '' || success == false) { 342 | } else { 343 | await getName(); 344 | } 345 | }, 346 | child: Text( 347 | "Make an appointment", 348 | style: TextStyles.titleNormal.white, 349 | ).p(10), 350 | ), 351 | ], 352 | ).vP16, 353 | ), 354 | Padding( 355 | padding: EdgeInsets.all(2), 356 | child: SizedBox( 357 | height: 100, 358 | child: ListView.builder( 359 | itemCount: appnts.length, 360 | scrollDirection: Axis.horizontal, 361 | shrinkWrap: true, 362 | itemBuilder: (context, int) { 363 | return Card( 364 | shadowColor: Colors.tealAccent, 365 | elevation: 10, 366 | child: Padding( 367 | padding: const EdgeInsets.all(8.0), 368 | child: Row( 369 | children: [ 370 | Column( 371 | mainAxisAlignment: 372 | MainAxisAlignment.center, 373 | children: [ 374 | CircleAvatar( 375 | backgroundColor: appnts[int] 376 | ["status"] == 377 | 'waiting' 378 | ? Colors.yellow 379 | : Colors.green, 380 | ), 381 | SizedBox( 382 | height: 5, 383 | ), 384 | Text( 385 | 'Status: \n${appnts[int]["status"]}', 386 | style: TextStyle( 387 | fontSize: 10, 388 | fontWeight: FontWeight.bold), 389 | textAlign: TextAlign.center, 390 | ) 391 | ], 392 | ), 393 | SizedBox( 394 | width: 10, 395 | ), 396 | SingleChildScrollView( 397 | scrollDirection: Axis.vertical, 398 | child: SizedBox( 399 | width: 100, 400 | child: Text( 401 | appnts[int]["msg"], 402 | softWrap: true, 403 | style: TextStyle( 404 | fontWeight: FontWeight.bold), 405 | ), 406 | ), 407 | ), 408 | SizedBox( 409 | width: 10, 410 | ), 411 | Text( 412 | '₹ ${appnts[int]["cost"]}', 413 | style: TextStyle( 414 | fontWeight: FontWeight.bold), 415 | ) 416 | ], 417 | ), 418 | ), 419 | ); 420 | }, 421 | ), 422 | ), 423 | ) 424 | ], 425 | ), 426 | ), 427 | ); 428 | }, 429 | ), 430 | _appbar(), 431 | ], 432 | ), 433 | ), 434 | ); 435 | } 436 | 437 | void scheduleAlarm( 438 | DateTime scheduledNotificationDateTime, String alarmInfo) async { 439 | print('doing alaram-----------'); 440 | var androidPlatformChannelSpecifics = AndroidNotificationDetails( 441 | 'alarm_notif', 442 | 'alarm_notif', 443 | 'Channel for Alarm notification', 444 | icon: 'ic_launcher', 445 | sound: RawResourceAndroidNotificationSound('a_long_cold_sting'), 446 | largeIcon: DrawableResourceAndroidBitmap('ic_launcher'), 447 | ); 448 | 449 | var iOSPlatformChannelSpecifics = IOSNotificationDetails( 450 | sound: 'a_long_cold_sting.wav', 451 | presentAlert: true, 452 | presentBadge: true, 453 | presentSound: true); 454 | 455 | var platformChannelSpecifics = NotificationDetails( 456 | androidPlatformChannelSpecifics, iOSPlatformChannelSpecifics); 457 | 458 | await flutterLocalNotificationsPlugin 459 | .schedule(0, 'Office', alarmInfo, scheduledNotificationDateTime, 460 | platformChannelSpecifics) 461 | .then((value) => print('----------------------value')); 462 | } 463 | } 464 | --------------------------------------------------------------------------------