[
  {
    "path": ".gitignore",
    "content": "# Miscellaneous\n*.class\n*.log\n*.pyc\n*.swp\n.DS_Store\n.atom/\n.buildlog/\n.history\n.svn/\n\n# IntelliJ related\n*.iml\n*.ipr\n*.iws\n.idea/\n\n# The .vscode folder contains launch configuration and tasks you configure in\n# VS Code which you may wish to be included in version control, so this line\n# is commented out by default.\n#.vscode/\n\n# Flutter/Dart/Pub related\n**/doc/api/\n**/ios/Flutter/.last_build_id\n.dart_tool/\n.flutter-plugins\n.flutter-plugins-dependencies\n.packages\n.pub-cache/\n.pub/\n/build/\n\n# Web related\nlib/generated_plugin_registrant.dart\n\n# Symbolication related\napp.*.symbols\n\n# Obfuscation related\napp.*.map.json\n"
  },
  {
    "path": ".metadata",
    "content": "# This file tracks properties of this Flutter project.\n# Used by Flutter tool to assess capabilities and perform upgrades etc.\n#\n# This file should be version controlled and should not be manually edited.\n\nversion:\n  revision: 1aafb3a8b9b0c36241c5f5b34ee914770f015818\n  channel: stable\n\nproject_type: app\n"
  },
  {
    "path": "LICENSE",
    "content": "BSD 3-Clause License\n\nCopyright (c) 2021, Balram Rathore\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this\n   list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice,\n   this list of conditions and the following disclaimer in the documentation\n   and/or other materials provided with the distribution.\n\n3. Neither the name of the copyright holder nor the names of its\n   contributors may be used to endorse or promote products derived from\n   this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "README.md",
    "content": "### Chat App Development Front-End and Back-End using Flutter, SocketIo, and NodeJS. (Limited code)\n\n\n\n<a href=\"https://www.buymeacoffee.com/DevStack06\" target=\"_blank\"  align=\"center\">\n    <p  align=\"center\">\n   <img   src=\"https://cdn.buymeacoffee.com/buttons/default-orange.png\" alt=\"Buy Me A Coffee\" height=\"41\" width=\"174\">\n   </p>\n</a>\n\n<p align=\"center\">\n( You can buy the full source code of tutorial in $30 (mail me):\n <a href=\"mailto:devstackin@gmail.com\"> devstackin@gmail.com</a>\n )\n</p>\n\nIn this full tutrial source code you will get:\n- One to one chatting\n- One to one file sharing\n- All the basic UI of whatsapp\n- Camera and Video integration\n- Socket Integration \n\nThings are not there yet:\n- Database integration\n- Group chat functionality\n- Calling and Voice features\n\n**Please note in $30 you will going to get the full tutorial code, which I have covered in youtube, It is just a tutorial code not real whatsapp code**\n\n<img src= \"https://github.com/DevStack06/images/blob/master/ChatImages/chatapp.png\"></img>\n\n\n\n### Playlist for Chat App Development series -:\n\n| Playlist Name                                               |     | YouTube Playlist Link                                                        |\n| ----------------------------------------------------------- | --- | ---------------------------------------------------------------------------- |\n| Chat App Development (Main Playlist)                        |     | [Link](https://youtube.com/playlist?list=PLtIU0BH0pkKovuEaNsrGE_Xd5Tz3m1zeC) |\n| Chat App Development (Only Front-End using Flutter)         |     | [Link](https://youtube.com/playlist?list=PLtIU0BH0pkKrgqaT-9JSrRRyetkVEkDn6) |\n| Chat Server Development (Only Back-End using Node/SocketIo) |     | [Link](https://youtube.com/playlist?list=PLtIU0BH0pkKqKm88PUSRWiKsZ50ztsITv) |\n\n<br>\n\n### Some Screenshots of this series\n<h3 align=\"center\" style=\"color:green\" >1. Landing Page</h3>\n <p align=\"center\">\n<img src=\"https://github.com/DevStack06/images/blob/master/ChatImages/LandingPage.png\" width=\"500\"></img>\n</p>\n<br>\n<h3 align=\"center\" style=\"color:green\" >2. Login Page</h3>\n <p align=\"center\">\n<img src=\"https://github.com/DevStack06/images/blob/master/ChatImages/loginpage.png\" width=\"500\"></img>\n</p>\n<br>\n<h3 align=\"center\" style=\"color:green\" >3. Login Page with Alert</h3>\n <p align=\"center\">\n<img src=\"https://github.com/DevStack06/images/blob/master/ChatImages/LoginWithAlert.png\" width=\"500\"></img>\n</p>\n<br>\n<h3 align=\"center\" style=\"color:green\" >4. OTP Screen</h3>\n <p align=\"center\">\n<img src=\"https://github.com/DevStack06/images/blob/master/ChatImages/OTPSCreen.png\" width=\"500\"></img>\n</p>\n<br>\n<h3 align=\"center\" style=\"color:green\" >5. Country Page</h3>\n <p align=\"center\">\n<img src=\"https://github.com/DevStack06/images/blob/master/ChatImages/ChooseACountry.png\" width=\"500\"></img>\n</p>\n<br>\n\n<h3 align=\"center\" style=\"color:green\" >6. Home page</h3>\n <p align=\"center\">\n<img src=\"https://github.com/DevStack06/images/blob/master/ChatImages/homepage.png\" width=\"500\"></img>\n</p>\n<br>\n<h3 align=\"center\" style=\"color:green\" >7. Chat page</h3>\n <p align=\"center\">\n<img src=\"https://github.com/DevStack06/images/blob/master/ChatImages/IndividualCHatPage.png\" width=\"500\"></img>\n</p>\n<br>\n<h3 align=\"center\" style=\"color:green\" >8. Camera Page</h3>\n <p align=\"center\">\n<img src=\"https://github.com/DevStack06/images/blob/master/ChatImages/Camerapage.png\" width=\"450\"></img>\n</p>\n<br>\n<h3 align=\"center\" style=\"color:green\" >9. Status Page</h3>\n <p align=\"center\">\n<img src=\"https://github.com/DevStack06/images/blob/master/ChatImages/StatusPage.png\" width=\"450\" ></img>\n</p>\n<br>\n<h3 align=\"center\" style=\"color:green\" >10. PopUp Menu Item</h3>\n <p align=\"center\">\n<img src=\"https://github.com/DevStack06/images/blob/master/ChatImages/PopupMenuItem.png\" width=\"500\"></img>\n</p>\n<br>\n<h3 align=\"center\" style=\"color:green\" >11. Emoji Picker</h3>\n <p align=\"center\">\n<img src=\"https://github.com/DevStack06/images/blob/master/ChatImages/EmojiPicker.png\" width=\"500\"></img>\n</p>\n<br>\n<h3 align=\"center\" style=\"color:green\" >12. Create Group Page</h3>\n <p align=\"center\">\n<img src=\"https://github.com/DevStack06/images/blob/master/ChatImages/SelectCOntactPage.png\" width=\"450\"></img>\n</p>\n<br>\n<h3 align=\"center\" style=\"color:green\" >13. Select Contact Page</h3>\n <p align=\"center\">\n<img src=\"https://github.com/DevStack06/images/blob/master/ChatImages/newgroup.png\" width=\"500\"></img>\n</p>\n<br>\n<h3 align=\"center\" style=\"color:green\" >14.View Image/Video Page </h3>\n <p align=\"center\">\n<img src=\"https://github.com/DevStack06/images/blob/master/ChatImages/Viewphoto.png\" width=\"450\"></img>\n</p>\n<br>\n\n### Some Other playlist\n\n| Playlist Name                                                        |     | YouTube Playlist Link                                                                       |\n| -------------------------------------------------------------------- | --- | ------------------------------------------------------------------------------------------- |\n| Flutter model class series, for Rest API connection and JSON parsing |     | [Link](https://www.youtube.com/playlist?list=PLtIU0BH0pkKpXE-1vC7NswofFPby1OYh-)            |\n| Flutter Basic series                                                 |     | [link](https://www.youtube.com/playlist?list=PLtIU0BH0pkKrk8C7KToFeRSVTi2CLpFTG)            |\n| Blog App Development (Main Playlist)                                 |     | [Link](https://youtube.com/playlist?list=PLtIU0BH0pkKoE2PBvgbHEBPAP-sd670VI)                |\n| Blog App Development (Only Front-End using Flutter)                  |     | [Link](https://www.youtube.com/watch?v=6VCLeHRnixg&list=PLtIU0BH0pkKpitsp5jzt-yDAoXAFBkcPb) |\n| Blog App Development (Only Back-End using Node/ExpressJs)            |     | [Link](https://www.youtube.com/watch?v=T35T8nzyRDI&list=PLtIU0BH0pkKqypuOtDhcXZ4oATJfji49r) |\n\n### **_If this tutorial helped you please give a star and also fork the repo, Thank you happy coding :)_**\n\n### To use this app follow below instructions-:\n\n1. Clone this app using below syntax -:\n\n   > git clone https://github.com/DevStack06/Whatsapp-Clone-Flutter.git\n\n2. After cloning install packages using below syntax -:\n   > flutter pub get\n\nAbove command will install all the neccery packges.\n\n3. Run the app on your mobile using below command -:\n   > flutter run\n"
  },
  {
    "path": "android/.gitignore",
    "content": "gradle-wrapper.jar\n/.gradle\n/captures/\n/gradlew\n/gradlew.bat\n/local.properties\nGeneratedPluginRegistrant.java\n\n# Remember to never publicly share your keystore.\n# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app\nkey.properties\n"
  },
  {
    "path": "android/app/build.gradle",
    "content": "def localProperties = new Properties()\ndef localPropertiesFile = rootProject.file('local.properties')\nif (localPropertiesFile.exists()) {\n    localPropertiesFile.withReader('UTF-8') { reader ->\n        localProperties.load(reader)\n    }\n}\n\ndef flutterRoot = localProperties.getProperty('flutter.sdk')\nif (flutterRoot == null) {\n    throw new GradleException(\"Flutter SDK not found. Define location with flutter.sdk in the local.properties file.\")\n}\n\ndef flutterVersionCode = localProperties.getProperty('flutter.versionCode')\nif (flutterVersionCode == null) {\n    flutterVersionCode = '1'\n}\n\ndef flutterVersionName = localProperties.getProperty('flutter.versionName')\nif (flutterVersionName == null) {\n    flutterVersionName = '1.0'\n}\n\napply plugin: 'com.android.application'\napply plugin: 'kotlin-android'\napply from: \"$flutterRoot/packages/flutter_tools/gradle/flutter.gradle\"\n\nandroid {\n    compileSdkVersion 29\n\n    sourceSets {\n        main.java.srcDirs += 'src/main/kotlin'\n    }\n\n    lintOptions {\n        disable 'InvalidPackage'\n    }\n\n    defaultConfig {\n        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).\n        applicationId \"com.example.chatapp\"\n        minSdkVersion 21\n        targetSdkVersion 29\n        versionCode flutterVersionCode.toInteger()\n        versionName flutterVersionName\n    }\n\n    buildTypes {\n        release {\n            // TODO: Add your own signing config for the release build.\n            // Signing with the debug keys for now, so `flutter run --release` works.\n            signingConfig signingConfigs.debug\n        }\n    }\n}\n\nflutter {\n    source '../..'\n}\n\ndependencies {\n    implementation \"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version\"\n}\n"
  },
  {
    "path": "android/app/src/debug/AndroidManifest.xml",
    "content": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    package=\"com.example.chatapp\">\n    <!-- Flutter needs it to communicate with the running application\n         to allow setting breakpoints, to provide hot reload, etc.\n    -->\n    <uses-permission android:name=\"android.permission.INTERNET\"/>\n</manifest>\n"
  },
  {
    "path": "android/app/src/main/AndroidManifest.xml",
    "content": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    package=\"com.example.chatapp\">\n    <!-- io.flutter.app.FlutterApplication is an android.app.Application that\n         calls FlutterMain.startInitialization(this); in its onCreate method.\n         In most cases you can leave this as-is, but you if you want to provide\n         additional functionality it is fine to subclass or reimplement\n         FlutterApplication and put your custom class here. -->\n    <uses-permission android:name=\"android.permission.INTERNET\" />\n    <application\n        android:name=\"io.flutter.app.FlutterApplication\"\n        android:label=\"chatapp\"\n        android:icon=\"@mipmap/ic_launcher\"\n        android:usesCleartextTraffic=\"true\">\n        \n        <activity\n            android:name=\".MainActivity\"\n            android:launchMode=\"singleTop\"\n            android:theme=\"@style/LaunchTheme\"\n            android:configChanges=\"orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode\"\n            android:hardwareAccelerated=\"true\"\n            android:windowSoftInputMode=\"adjustResize\">\n            \n            <!-- Specifies an Android theme to apply to this Activity as soon as\n                 the Android process has started. This theme is visible to the user\n                 while the Flutter UI initializes. After that, this theme continues\n                 to determine the Window background behind the Flutter UI. -->\n            <meta-data\n              android:name=\"io.flutter.embedding.android.NormalTheme\"\n              android:resource=\"@style/NormalTheme\"\n              />\n            <!-- Displays an Android View that continues showing the launch screen\n                 Drawable until Flutter paints its first frame, then this splash\n                 screen fades out. A splash screen is useful to avoid any visual\n                 gap between the end of Android's launch screen and the painting of\n                 Flutter's first frame. -->\n            <meta-data\n              android:name=\"io.flutter.embedding.android.SplashScreenDrawable\"\n              android:resource=\"@drawable/launch_background\"\n              />\n            <intent-filter>\n                <action android:name=\"android.intent.action.MAIN\"/>\n                <category android:name=\"android.intent.category.LAUNCHER\"/>\n            </intent-filter>\n        </activity>\n        <!-- Don't delete the meta-data below.\n             This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->\n        <meta-data\n            android:name=\"flutterEmbedding\"\n            android:value=\"2\" />\n    </application>\n</manifest>\n"
  },
  {
    "path": "android/app/src/main/kotlin/com/example/chatapp/MainActivity.kt",
    "content": "package com.example.chatapp\n\nimport io.flutter.embedding.android.FlutterActivity\n\nclass MainActivity: FlutterActivity() {\n}\n"
  },
  {
    "path": "android/app/src/main/res/drawable/launch_background.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Modify this file to customize your launch splash screen -->\n<layer-list xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <item android:drawable=\"@android:color/white\" />\n\n    <!-- You can insert your own image assets here -->\n    <!-- <item>\n        <bitmap\n            android:gravity=\"center\"\n            android:src=\"@mipmap/launch_image\" />\n    </item> -->\n</layer-list>\n"
  },
  {
    "path": "android/app/src/main/res/drawable-v21/launch_background.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Modify this file to customize your launch splash screen -->\n<layer-list xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <item android:drawable=\"?android:colorBackground\" />\n\n    <!-- You can insert your own image assets here -->\n    <!-- <item>\n        <bitmap\n            android:gravity=\"center\"\n            android:src=\"@mipmap/launch_image\" />\n    </item> -->\n</layer-list>\n"
  },
  {
    "path": "android/app/src/main/res/values/styles.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <!-- Theme applied to the Android Window while the process is starting -->\n    <style name=\"LaunchTheme\" parent=\"@android:style/Theme.Black.NoTitleBar\">\n        <!-- Show a splash screen on the activity. Automatically removed when\n             Flutter draws its first frame -->\n        <item name=\"android:windowBackground\">@drawable/launch_background</item>\n    </style>\n    <!-- Theme applied to the Android Window as soon as the process has started.\n         This theme determines the color of the Android Window while your\n         Flutter UI initializes, as well as behind your Flutter UI while its\n         running.\n         \n         This Theme is only used starting with V2 of Flutter's Android embedding. -->\n    <style name=\"NormalTheme\" parent=\"@android:style/Theme.Black.NoTitleBar\">\n        <item name=\"android:windowBackground\">@android:color/white</item>\n    </style>\n</resources>\n"
  },
  {
    "path": "android/app/src/main/res/values-night/styles.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->\n    <style name=\"LaunchTheme\" parent=\"@android:style/Theme.Black.NoTitleBar\">\n        <!-- Show a splash screen on the activity. Automatically removed when\n             Flutter draws its first frame -->\n        <item name=\"android:windowBackground\">@drawable/launch_background</item>\n    </style>\n    <!-- Theme applied to the Android Window as soon as the process has started.\n         This theme determines the color of the Android Window while your\n         Flutter UI initializes, as well as behind your Flutter UI while its\n         running.\n         \n         This Theme is only used starting with V2 of Flutter's Android embedding. -->\n    <style name=\"NormalTheme\" parent=\"@android:style/Theme.Black.NoTitleBar\">\n        <item name=\"android:windowBackground\">?android:colorBackground</item>\n    </style>\n</resources>\n"
  },
  {
    "path": "android/app/src/profile/AndroidManifest.xml",
    "content": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    package=\"com.example.chatapp\">\n    <!-- Flutter needs it to communicate with the running application\n         to allow setting breakpoints, to provide hot reload, etc.\n    -->\n    <uses-permission android:name=\"android.permission.INTERNET\"/>\n</manifest>\n"
  },
  {
    "path": "android/build.gradle",
    "content": "buildscript {\n    ext.kotlin_version = '1.3.50'\n    repositories {\n        google()\n        jcenter()\n    }\n\n    dependencies {\n        classpath 'com.android.tools.build:gradle:3.5.0'\n        classpath \"org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version\"\n    }\n}\n\nallprojects {\n    repositories {\n        google()\n        jcenter()\n    }\n}\n\nrootProject.buildDir = '../build'\nsubprojects {\n    project.buildDir = \"${rootProject.buildDir}/${project.name}\"\n}\nsubprojects {\n    project.evaluationDependsOn(':app')\n}\n\ntask clean(type: Delete) {\n    delete rootProject.buildDir\n}\n"
  },
  {
    "path": "android/gradle/wrapper/gradle-wrapper.properties",
    "content": "#Fri Jun 23 08:50:38 CEST 2017\ndistributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\nzipStoreBase=GRADLE_USER_HOME\nzipStorePath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributions/gradle-5.6.2-all.zip\n"
  },
  {
    "path": "android/gradle.properties",
    "content": "org.gradle.jvmargs=-Xmx1536M\nandroid.useAndroidX=true\nandroid.enableJetifier=true\nandroid.enableR8=true\n"
  },
  {
    "path": "android/settings.gradle",
    "content": "include ':app'\n\ndef localPropertiesFile = new File(rootProject.projectDir, \"local.properties\")\ndef properties = new Properties()\n\nassert localPropertiesFile.exists()\nlocalPropertiesFile.withReader(\"UTF-8\") { reader -> properties.load(reader) }\n\ndef flutterSdkPath = properties.getProperty(\"flutter.sdk\")\nassert flutterSdkPath != null, \"flutter.sdk not set in local.properties\"\napply from: \"$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle\"\n"
  },
  {
    "path": "android/settings_aar.gradle",
    "content": "include ':app'\n"
  },
  {
    "path": "ios/.gitignore",
    "content": "*.mode1v3\n*.mode2v3\n*.moved-aside\n*.pbxuser\n*.perspectivev3\n**/*sync/\n.sconsign.dblite\n.tags*\n**/.vagrant/\n**/DerivedData/\nIcon?\n**/Pods/\n**/.symlinks/\nprofile\nxcuserdata\n**/.generated/\nFlutter/App.framework\nFlutter/Flutter.framework\nFlutter/Flutter.podspec\nFlutter/Generated.xcconfig\nFlutter/app.flx\nFlutter/app.zip\nFlutter/flutter_assets/\nFlutter/flutter_export_environment.sh\nServiceDefinitions.json\nRunner/GeneratedPluginRegistrant.*\n\n# Exceptions to above rules.\n!default.mode1v3\n!default.mode2v3\n!default.pbxuser\n!default.perspectivev3\n"
  },
  {
    "path": "ios/Flutter/AppFrameworkInfo.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n  <key>CFBundleDevelopmentRegion</key>\n  <string>$(DEVELOPMENT_LANGUAGE)</string>\n  <key>CFBundleExecutable</key>\n  <string>App</string>\n  <key>CFBundleIdentifier</key>\n  <string>io.flutter.flutter.app</string>\n  <key>CFBundleInfoDictionaryVersion</key>\n  <string>6.0</string>\n  <key>CFBundleName</key>\n  <string>App</string>\n  <key>CFBundlePackageType</key>\n  <string>FMWK</string>\n  <key>CFBundleShortVersionString</key>\n  <string>1.0</string>\n  <key>CFBundleSignature</key>\n  <string>????</string>\n  <key>CFBundleVersion</key>\n  <string>1.0</string>\n  <key>MinimumOSVersion</key>\n  <string>8.0</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "ios/Flutter/Debug.xcconfig",
    "content": "#include \"Generated.xcconfig\"\n"
  },
  {
    "path": "ios/Flutter/Release.xcconfig",
    "content": "#include \"Generated.xcconfig\"\n"
  },
  {
    "path": "ios/Runner/AppDelegate.swift",
    "content": "import UIKit\nimport Flutter\n\n@UIApplicationMain\n@objc class AppDelegate: FlutterAppDelegate {\n  override func application(\n    _ application: UIApplication,\n    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?\n  ) -> Bool {\n    GeneratedPluginRegistrant.register(with: self)\n    return super.application(application, didFinishLaunchingWithOptions: launchOptions)\n  }\n}\n"
  },
  {
    "path": "ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"size\" : \"20x20\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"Icon-App-20x20@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"20x20\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"Icon-App-20x20@3x.png\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"size\" : \"29x29\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"Icon-App-29x29@1x.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"size\" : \"29x29\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"Icon-App-29x29@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"29x29\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"Icon-App-29x29@3x.png\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"size\" : \"40x40\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"Icon-App-40x40@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"40x40\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"Icon-App-40x40@3x.png\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"size\" : \"60x60\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"Icon-App-60x60@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"60x60\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"Icon-App-60x60@3x.png\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"size\" : \"20x20\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"Icon-App-20x20@1x.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"size\" : \"20x20\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"Icon-App-20x20@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"29x29\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"Icon-App-29x29@1x.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"size\" : \"29x29\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"Icon-App-29x29@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"40x40\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"Icon-App-40x40@1x.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"size\" : \"40x40\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"Icon-App-40x40@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"76x76\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"Icon-App-76x76@1x.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"size\" : \"76x76\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"Icon-App-76x76@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"83.5x83.5\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"Icon-App-83.5x83.5@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"1024x1024\",\n      \"idiom\" : \"ios-marketing\",\n      \"filename\" : \"Icon-App-1024x1024@1x.png\",\n      \"scale\" : \"1x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}\n"
  },
  {
    "path": "ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"LaunchImage.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"LaunchImage@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"LaunchImage@3x.png\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}\n"
  },
  {
    "path": "ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md",
    "content": "# Launch Screen Assets\n\nYou can customize the launch screen with your own desired assets by replacing the image files in this directory.\n\nYou 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."
  },
  {
    "path": "ios/Runner/Base.lproj/LaunchScreen.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"12121\" systemVersion=\"16G29\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" launchScreen=\"YES\" colorMatched=\"YES\" initialViewController=\"01J-lp-oVM\">\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"12089\"/>\n    </dependencies>\n    <scenes>\n        <!--View Controller-->\n        <scene sceneID=\"EHf-IW-A2E\">\n            <objects>\n                <viewController id=\"01J-lp-oVM\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"Ydg-fD-yQy\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"xbc-2k-c8Z\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"Ze5-6b-2t3\">\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <imageView opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" image=\"LaunchImage\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"YRO-k0-Ey4\">\n                            </imageView>\n                        </subviews>\n                        <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <constraints>\n                            <constraint firstItem=\"YRO-k0-Ey4\" firstAttribute=\"centerX\" secondItem=\"Ze5-6b-2t3\" secondAttribute=\"centerX\" id=\"1a2-6s-vTC\"/>\n                            <constraint firstItem=\"YRO-k0-Ey4\" firstAttribute=\"centerY\" secondItem=\"Ze5-6b-2t3\" secondAttribute=\"centerY\" id=\"4X2-HB-R7a\"/>\n                        </constraints>\n                    </view>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"iYj-Kq-Ea1\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"53\" y=\"375\"/>\n        </scene>\n    </scenes>\n    <resources>\n        <image name=\"LaunchImage\" width=\"168\" height=\"185\"/>\n    </resources>\n</document>\n"
  },
  {
    "path": "ios/Runner/Base.lproj/Main.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"10117\" systemVersion=\"15F34\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" initialViewController=\"BYZ-38-t0r\">\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"10085\"/>\n    </dependencies>\n    <scenes>\n        <!--Flutter View Controller-->\n        <scene sceneID=\"tne-QT-ifu\">\n            <objects>\n                <viewController id=\"BYZ-38-t0r\" customClass=\"FlutterViewController\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"y3c-jy-aDJ\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"wfy-db-euE\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"8bC-Xf-vdC\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"600\" height=\"600\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"calibratedWhite\"/>\n                    </view>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"dkx-z0-nzr\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n        </scene>\n    </scenes>\n</document>\n"
  },
  {
    "path": "ios/Runner/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>$(DEVELOPMENT_LANGUAGE)</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>chatapp</string>\n\t<key>CFBundlePackageType</key>\n\t<string>APPL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>$(FLUTTER_BUILD_NAME)</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>$(FLUTTER_BUILD_NUMBER)</string>\n\t<key>LSRequiresIPhoneOS</key>\n\t<true/>\n\t<key>UILaunchStoryboardName</key>\n\t<string>LaunchScreen</string>\n\t<key>UIMainStoryboardFile</key>\n\t<string>Main</string>\n\t<key>UISupportedInterfaceOrientations</key>\n\t<array>\n\t\t<string>UIInterfaceOrientationPortrait</string>\n\t\t<string>UIInterfaceOrientationLandscapeLeft</string>\n\t\t<string>UIInterfaceOrientationLandscapeRight</string>\n\t</array>\n\t<key>UISupportedInterfaceOrientations~ipad</key>\n\t<array>\n\t\t<string>UIInterfaceOrientationPortrait</string>\n\t\t<string>UIInterfaceOrientationPortraitUpsideDown</string>\n\t\t<string>UIInterfaceOrientationLandscapeLeft</string>\n\t\t<string>UIInterfaceOrientationLandscapeRight</string>\n\t</array>\n\t<key>UIViewControllerBasedStatusBarAppearance</key>\n\t<false/>\n</dict>\n</plist>\n"
  },
  {
    "path": "ios/Runner/Runner-Bridging-Header.h",
    "content": "#import \"GeneratedPluginRegistrant.h\"\n"
  },
  {
    "path": "ios/Runner.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };\n\t\t3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };\n\t\t74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };\n\t\t97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };\n\t\t97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };\n\t\t97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXCopyFilesBuildPhase section */\n\t\t9705A1C41CF9048500538489 /* Embed Frameworks */ = {\n\t\t\tisa = PBXCopyFilesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tdstPath = \"\";\n\t\t\tdstSubfolderSpec = 10;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tname = \"Embed Frameworks\";\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXCopyFilesBuildPhase section */\n\n/* Begin PBXFileReference section */\n\t\t1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = \"<group>\"; };\n\t\t1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = \"<group>\"; };\n\t\t3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = \"<group>\"; };\n\t\t74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = \"Runner-Bridging-Header.h\"; sourceTree = \"<group>\"; };\n\t\t74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = \"<group>\"; };\n\t\t7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = \"<group>\"; };\n\t\t9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = \"<group>\"; };\n\t\t9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = \"<group>\"; };\n\t\t97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = \"<group>\"; };\n\t\t97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = \"<group>\"; };\n\t\t97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = \"<group>\"; };\n\t\t97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t97C146EB1CF9000F007C117D /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t9740EEB11CF90186004384FC /* Flutter */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,\n\t\t\t\t9740EEB21CF90195004384FC /* Debug.xcconfig */,\n\t\t\t\t7AFA3C8E1D35360C0083082E /* Release.xcconfig */,\n\t\t\t\t9740EEB31CF90195004384FC /* Generated.xcconfig */,\n\t\t\t);\n\t\t\tname = Flutter;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t97C146E51CF9000F007C117D = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t9740EEB11CF90186004384FC /* Flutter */,\n\t\t\t\t97C146F01CF9000F007C117D /* Runner */,\n\t\t\t\t97C146EF1CF9000F007C117D /* Products */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t97C146EF1CF9000F007C117D /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t97C146EE1CF9000F007C117D /* Runner.app */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t97C146F01CF9000F007C117D /* Runner */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t97C146FA1CF9000F007C117D /* Main.storyboard */,\n\t\t\t\t97C146FD1CF9000F007C117D /* Assets.xcassets */,\n\t\t\t\t97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,\n\t\t\t\t97C147021CF9000F007C117D /* Info.plist */,\n\t\t\t\t1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,\n\t\t\t\t1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,\n\t\t\t\t74858FAE1ED2DC5600515810 /* AppDelegate.swift */,\n\t\t\t\t74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */,\n\t\t\t);\n\t\t\tpath = Runner;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\t97C146ED1CF9000F007C117D /* Runner */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget \"Runner\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t9740EEB61CF901F6004384FC /* Run Script */,\n\t\t\t\t97C146EA1CF9000F007C117D /* Sources */,\n\t\t\t\t97C146EB1CF9000F007C117D /* Frameworks */,\n\t\t\t\t97C146EC1CF9000F007C117D /* Resources */,\n\t\t\t\t9705A1C41CF9048500538489 /* Embed Frameworks */,\n\t\t\t\t3B06AD1E1E4923F5004D2608 /* Thin Binary */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = Runner;\n\t\t\tproductName = Runner;\n\t\t\tproductReference = 97C146EE1CF9000F007C117D /* Runner.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t97C146E61CF9000F007C117D /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastUpgradeCheck = 1020;\n\t\t\t\tORGANIZATIONNAME = \"\";\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t97C146ED1CF9000F007C117D = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 7.3.1;\n\t\t\t\t\t\tLastSwiftMigration = 1100;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject \"Runner\" */;\n\t\t\tcompatibilityVersion = \"Xcode 9.3\";\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = 97C146E51CF9000F007C117D;\n\t\t\tproductRefGroup = 97C146EF1CF9000F007C117D /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t97C146ED1CF9000F007C117D /* Runner */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t97C146EC1CF9000F007C117D /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,\n\t\t\t\t3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,\n\t\t\t\t97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,\n\t\t\t\t97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXShellScriptBuildPhase section */\n\t\t3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t);\n\t\t\tname = \"Thin Binary\";\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"/bin/sh \\\"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\\\" embed_and_thin\";\n\t\t};\n\t\t9740EEB61CF901F6004384FC /* Run Script */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t);\n\t\t\tname = \"Run Script\";\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"/bin/sh \\\"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\\\" build\";\n\t\t};\n/* End PBXShellScriptBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t97C146EA1CF9000F007C117D /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,\n\t\t\t\t1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXVariantGroup section */\n\t\t97C146FA1CF9000F007C117D /* Main.storyboard */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t97C146FB1CF9000F007C117D /* Base */,\n\t\t\t);\n\t\t\tname = Main.storyboard;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t97C147001CF9000F007C117D /* Base */,\n\t\t\t);\n\t\t\tname = LaunchScreen.storyboard;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXVariantGroup section */\n\n/* Begin XCBuildConfiguration section */\n\t\t249021D3217E4FDB00AE95B9 /* Profile */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 9.0;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSUPPORTED_PLATFORMS = iphoneos;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Profile;\n\t\t};\n\t\t249021D4217E4FDB00AE95B9 /* Profile */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCURRENT_PROJECT_VERSION = \"$(FLUTTER_BUILD_NUMBER)\";\n\t\t\t\tENABLE_BITCODE = NO;\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)/Flutter\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = Runner/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tLIBRARY_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)/Flutter\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.example.chatapp;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_OBJC_BRIDGING_HEADER = \"Runner/Runner-Bridging-Header.h\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t};\n\t\t\tname = Profile;\n\t\t};\n\t\t97C147031CF9000F007C117D /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 9.0;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t97C147041CF9000F007C117D /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 9.0;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSUPPORTED_PLATFORMS = iphoneos;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Owholemodule\";\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t97C147061CF9000F007C117D /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCURRENT_PROJECT_VERSION = \"$(FLUTTER_BUILD_NUMBER)\";\n\t\t\t\tENABLE_BITCODE = NO;\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)/Flutter\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = Runner/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tLIBRARY_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)/Flutter\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.example.chatapp;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_OBJC_BRIDGING_HEADER = \"Runner/Runner-Bridging-Header.h\";\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t97C147071CF9000F007C117D /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCURRENT_PROJECT_VERSION = \"$(FLUTTER_BUILD_NUMBER)\";\n\t\t\t\tENABLE_BITCODE = NO;\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)/Flutter\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = Runner/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tLIBRARY_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)/Flutter\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.example.chatapp;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_OBJC_BRIDGING_HEADER = \"Runner/Runner-Bridging-Header.h\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t97C146E91CF9000F007C117D /* Build configuration list for PBXProject \"Runner\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t97C147031CF9000F007C117D /* Debug */,\n\t\t\t\t97C147041CF9000F007C117D /* Release */,\n\t\t\t\t249021D3217E4FDB00AE95B9 /* Profile */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget \"Runner\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t97C147061CF9000F007C117D /* Debug */,\n\t\t\t\t97C147071CF9000F007C117D /* Release */,\n\t\t\t\t249021D4217E4FDB00AE95B9 /* Profile */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = 97C146E61CF9000F007C117D /* Project object */;\n}\n"
  },
  {
    "path": "ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"group:Runner.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>PreviewsEnabled</key>\n\t<false/>\n</dict>\n</plist>\n"
  },
  {
    "path": "ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1020\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"97C146ED1CF9000F007C117D\"\n               BuildableName = \"Runner.app\"\n               BlueprintName = \"Runner\"\n               ReferencedContainer = \"container:Runner.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n      </Testables>\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"97C146ED1CF9000F007C117D\"\n            BuildableName = \"Runner.app\"\n            BlueprintName = \"Runner\"\n            ReferencedContainer = \"container:Runner.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <BuildableProductRunnable\n         runnableDebuggingMode = \"0\">\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"97C146ED1CF9000F007C117D\"\n            BuildableName = \"Runner.app\"\n            BlueprintName = \"Runner\"\n            ReferencedContainer = \"container:Runner.xcodeproj\">\n         </BuildableReference>\n      </BuildableProductRunnable>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Profile\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <BuildableProductRunnable\n         runnableDebuggingMode = \"0\">\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"97C146ED1CF9000F007C117D\"\n            BuildableName = \"Runner.app\"\n            BlueprintName = \"Runner\"\n            ReferencedContainer = \"container:Runner.xcodeproj\">\n         </BuildableReference>\n      </BuildableProductRunnable>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "ios/Runner.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"group:Runner.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>PreviewsEnabled</key>\n\t<false/>\n</dict>\n</plist>\n"
  },
  {
    "path": "lib/CustomUI/AvtarCard.dart",
    "content": "import 'package:chatapp/Model/ChatModel.dart';\nimport 'package:flutter/material.dart';\nimport 'package:flutter_svg/svg.dart';\n\nclass AvatarCard extends StatelessWidget {\n  const AvatarCard({Key key, this.chatModel}) : super(key: key);\n  final ChatModel chatModel;\n\n  @override\n  Widget build(BuildContext context) {\n    return Padding(\n      padding: const EdgeInsets.symmetric(vertical: 2, horizontal: 8),\n      child: Column(\n        mainAxisAlignment: MainAxisAlignment.end,\n        children: [\n          Stack(\n            children: [\n              CircleAvatar(\n                radius: 23,\n                child: SvgPicture.asset(\n                  \"assets/person.svg\",\n                  color: Colors.white,\n                  height: 30,\n                  width: 30,\n                ),\n                backgroundColor: Colors.blueGrey[200],\n              ),\n              Positioned(\n                bottom: 0,\n                right: 0,\n                child: CircleAvatar(\n                  backgroundColor: Colors.grey,\n                  radius: 11,\n                  child: Icon(\n                    Icons.clear,\n                    color: Colors.white,\n                    size: 13,\n                  ),\n                ),\n              )\n            ],\n          ),\n          SizedBox(\n            height: 2,\n          ),\n          Text(\n            chatModel.name,\n            style: TextStyle(\n              fontSize: 12,\n            ),\n          ),\n        ],\n      ),\n    );\n  }\n}\n"
  },
  {
    "path": "lib/CustomUI/ButtonCard.dart",
    "content": "import 'package:flutter/material.dart';\n\nclass ButtonCard extends StatelessWidget {\n  const ButtonCard({Key key, this.name, this.icon}) : super(key: key);\n  final String name;\n  final IconData icon;\n\n  @override\n  Widget build(BuildContext context) {\n    return ListTile(\n      leading: CircleAvatar(\n        radius: 23,\n        child: Icon(\n          icon,\n          size: 26,\n          color: Colors.white,\n        ),\n        backgroundColor: Color(0xFF25D366),\n      ),\n      title: Text(\n        name,\n        style: TextStyle(\n          fontSize: 15,\n          fontWeight: FontWeight.bold,\n        ),\n      ),\n    );\n  }\n}\n"
  },
  {
    "path": "lib/CustomUI/ContactCard.dart",
    "content": "import 'package:chatapp/Model/ChatModel.dart';\nimport 'package:flutter/material.dart';\nimport 'package:flutter_svg/flutter_svg.dart';\n\nclass ContactCard extends StatelessWidget {\n  const ContactCard({Key key, this.contact}) : super(key: key);\n  final ChatModel contact;\n\n  @override\n  Widget build(BuildContext context) {\n    return ListTile(\n      leading: Container(\n        width: 50,\n        height: 53,\n        child: Stack(\n          children: [\n            CircleAvatar(\n              radius: 23,\n              child: SvgPicture.asset(\n                \"assets/person.svg\",\n                color: Colors.white,\n                height: 30,\n                width: 30,\n              ),\n              backgroundColor: Colors.blueGrey[200],\n            ),\n            contact.select\n                ? Positioned(\n                    bottom: 4,\n                    right: 5,\n                    child: CircleAvatar(\n                      backgroundColor: Colors.teal,\n                      radius: 11,\n                      child: Icon(\n                        Icons.check,\n                        color: Colors.white,\n                        size: 18,\n                      ),\n                    ),\n                  )\n                : Container(),\n          ],\n        ),\n      ),\n      title: Text(\n        contact.name,\n        style: TextStyle(\n          fontSize: 15,\n          fontWeight: FontWeight.bold,\n        ),\n      ),\n      subtitle: Text(\n        contact.status,\n        style: TextStyle(\n          fontSize: 13,\n        ),\n      ),\n    );\n  }\n}\n"
  },
  {
    "path": "lib/CustomUI/CustomCard.dart",
    "content": "import 'package:chatapp/Model/ChatModel.dart';\nimport 'package:chatapp/Screens/IndividualPage.dart';\nimport 'package:flutter/material.dart';\nimport 'package:flutter_svg/flutter_svg.dart';\n\nclass CustomCard extends StatelessWidget {\n  const CustomCard({Key key, this.chatModel, this.sourchat}) : super(key: key);\n  final ChatModel chatModel;\n  final ChatModel sourchat;\n\n  @override\n  Widget build(BuildContext context) {\n    return InkWell(\n      onTap: () {\n        Navigator.push(\n            context,\n            MaterialPageRoute(\n                builder: (contex) => IndividualPage(\n                      chatModel: chatModel,\n                      sourchat: sourchat,\n                    )));\n      },\n      child: Column(\n        children: [\n          ListTile(\n            leading: CircleAvatar(\n              radius: 30,\n              child: SvgPicture.asset(\n                chatModel.isGroup ? \"assets/groups.svg\" : \"assets/person.svg\",\n                color: Colors.white,\n                height: 36,\n                width: 36,\n              ),\n              backgroundColor: Colors.blueGrey,\n            ),\n            title: Text(\n              chatModel.name,\n              style: TextStyle(\n                fontSize: 16,\n                fontWeight: FontWeight.bold,\n              ),\n            ),\n            subtitle: Row(\n              children: [\n                Icon(Icons.done_all),\n                SizedBox(\n                  width: 3,\n                ),\n                Text(\n                  chatModel.currentMessage,\n                  style: TextStyle(\n                    fontSize: 13,\n                  ),\n                ),\n              ],\n            ),\n            trailing: Text(chatModel.time),\n          ),\n          Padding(\n            padding: const EdgeInsets.only(right: 20, left: 80),\n            child: Divider(\n              thickness: 1,\n            ),\n          ),\n        ],\n      ),\n    );\n  }\n}\n"
  },
  {
    "path": "lib/CustomUI/OwnMessgaeCrad.dart",
    "content": "import 'package:flutter/material.dart';\n\nclass OwnMessageCard extends StatelessWidget {\n  const OwnMessageCard({Key key, this.message, this.time}) : super(key: key);\n  final String message;\n  final String time;\n\n  @override\n  Widget build(BuildContext context) {\n    return Align(\n      alignment: Alignment.centerRight,\n      child: ConstrainedBox(\n        constraints: BoxConstraints(\n          maxWidth: MediaQuery.of(context).size.width - 45,\n        ),\n        child: Card(\n          elevation: 1,\n          shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)),\n          color: Color(0xffdcf8c6),\n          margin: EdgeInsets.symmetric(horizontal: 15, vertical: 5),\n          child: Stack(\n            children: [\n              Padding(\n                padding: const EdgeInsets.only(\n                  left: 10,\n                  right: 30,\n                  top: 5,\n                  bottom: 20,\n                ),\n                child: Text(\n                  message,\n                  style: TextStyle(\n                    fontSize: 16,\n                  ),\n                ),\n              ),\n              Positioned(\n                bottom: 4,\n                right: 10,\n                child: Row(\n                  children: [\n                    Text(\n                      time,\n                      style: TextStyle(\n                        fontSize: 13,\n                        color: Colors.grey[600],\n                      ),\n                    ),\n                    SizedBox(\n                      width: 5,\n                    ),\n                    Icon(\n                      Icons.done_all,\n                      size: 20,\n                    ),\n                  ],\n                ),\n              ),\n            ],\n          ),\n        ),\n      ),\n    );\n  }\n}\n"
  },
  {
    "path": "lib/CustomUI/ReplyCard.dart",
    "content": "import 'package:flutter/material.dart';\n\nclass ReplyCard extends StatelessWidget {\n  const ReplyCard({Key key, this.message, this.time}) : super(key: key);\n  final String message;\n  final String time;\n\n  @override\n  Widget build(BuildContext context) {\n    return Align(\n      alignment: Alignment.centerLeft,\n      child: ConstrainedBox(\n        constraints: BoxConstraints(\n          maxWidth: MediaQuery.of(context).size.width - 45,\n        ),\n        child: Card(\n          elevation: 1,\n          shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)),\n          // color: Color(0xffdcf8c6),\n          margin: EdgeInsets.symmetric(horizontal: 15, vertical: 5),\n          child: Stack(\n            children: [\n              Padding(\n                padding: const EdgeInsets.only(\n                  left: 8,\n                  right: 50,\n                  top: 5,\n                  bottom: 10,\n                ),\n                child: Text(\n                  message,\n                  style: TextStyle(\n                    fontSize: 16,\n                  ),\n                ),\n              ),\n              Positioned(\n                bottom: 4,\n                right: 10,\n                child: Text(\n                  time,\n                  style: TextStyle(\n                    fontSize: 13,\n                    color: Colors.grey[600],\n                  ),\n                ),\n              ),\n            ],\n          ),\n        ),\n      ),\n    );\n  }\n}\n"
  },
  {
    "path": "lib/Model/ChatModel.dart",
    "content": "class ChatModel {\n  String name;\n  String icon;\n  bool isGroup;\n  String time;\n  String currentMessage;\n  String status;\n  bool select = false;\n  int id;\n  ChatModel({\n    this.name,\n    this.icon,\n    this.isGroup,\n    this.time,\n    this.currentMessage,\n    this.status,\n    this.select = false,\n    this.id,\n  });\n}\n"
  },
  {
    "path": "lib/Model/MessageModel.dart",
    "content": "class MessageModel {\n  String type;\n  String message;\n  String time;\n  MessageModel({this.message, this.type, this.time});\n}\n"
  },
  {
    "path": "lib/Pages/CameraPage.dart",
    "content": "import 'package:chatapp/Screens/CameraScreen.dart';\nimport 'package:flutter/material.dart';\n\nclass CameraPage extends StatelessWidget {\n  const CameraPage({Key key}) : super(key: key);\n\n  @override\n  Widget build(BuildContext context) {\n    return CameraScreen();\n  }\n}\n"
  },
  {
    "path": "lib/Pages/ChatPage.dart",
    "content": "import 'package:chatapp/CustomUI/CustomCard.dart';\nimport 'package:chatapp/Model/ChatModel.dart';\nimport 'package:chatapp/Screens/SelectContact.dart';\nimport 'package:flutter/material.dart';\n\nclass ChatPage extends StatefulWidget {\n  ChatPage({Key key, this.chatmodels, this.sourchat}) : super(key: key);\n  final List<ChatModel> chatmodels;\n  final ChatModel sourchat;\n\n  @override\n  _ChatPageState createState() => _ChatPageState();\n}\n\nclass _ChatPageState extends State<ChatPage> {\n  @override\n  Widget build(BuildContext context) {\n    return Scaffold(\n      floatingActionButton: FloatingActionButton(\n        onPressed: () {\n          Navigator.push(context,\n              MaterialPageRoute(builder: (builder) => SelectContact()));\n        },\n        child: Icon(\n          Icons.chat,\n          color: Colors.white,\n        ),\n      ),\n      body: ListView.builder(\n        itemCount: widget.chatmodels.length,\n        itemBuilder: (contex, index) => CustomCard(\n          chatModel: widget.chatmodels[index],\n          sourchat: widget.sourchat,\n        ),\n      ),\n    );\n  }\n}\n"
  },
  {
    "path": "lib/Screens/CameraScreen.dart",
    "content": "import 'dart:math';\n\nimport 'package:camera/camera.dart';\nimport 'package:chatapp/Screens/CameraView.dart';\nimport 'package:chatapp/Screens/VideoView.dart';\nimport 'package:flutter/material.dart';\nimport 'package:path/path.dart';\nimport 'package:path_provider/path_provider.dart';\n\nList<CameraDescription> cameras;\n\nclass CameraScreen extends StatefulWidget {\n  CameraScreen({Key key}) : super(key: key);\n\n  @override\n  _CameraScreenState createState() => _CameraScreenState();\n}\n\nclass _CameraScreenState extends State<CameraScreen> {\n  CameraController _cameraController;\n  Future<void> cameraValue;\n  bool isRecoring = false;\n  bool flash = false;\n  bool iscamerafront = true;\n  double transform = 0;\n\n  @override\n  void initState() {\n    super.initState();\n    _cameraController = CameraController(cameras[0], ResolutionPreset.high);\n    cameraValue = _cameraController.initialize();\n  }\n\n  @override\n  void dispose() {\n    super.dispose();\n    _cameraController.dispose();\n  }\n\n  @override\n  Widget build(BuildContext context) {\n    return Scaffold(\n      body: Stack(\n        children: [\n          FutureBuilder(\n              future: cameraValue,\n              builder: (context, snapshot) {\n                if (snapshot.connectionState == ConnectionState.done) {\n                  return Container(\n                      width: MediaQuery.of(context).size.width,\n                      height: MediaQuery.of(context).size.height,\n                      child: CameraPreview(_cameraController));\n                } else {\n                  return Center(\n                    child: CircularProgressIndicator(),\n                  );\n                }\n              }),\n          Positioned(\n            bottom: 0.0,\n            child: Container(\n              color: Colors.black,\n              padding: EdgeInsets.only(top: 5, bottom: 5),\n              width: MediaQuery.of(context).size.width,\n              child: Column(\n                children: [\n                  Row(\n                    mainAxisSize: MainAxisSize.max,\n                    mainAxisAlignment: MainAxisAlignment.spaceEvenly,\n                    children: [\n                      IconButton(\n                          icon: Icon(\n                            flash ? Icons.flash_on : Icons.flash_off,\n                            color: Colors.white,\n                            size: 28,\n                          ),\n                          onPressed: () {\n                            setState(() {\n                              flash = !flash;\n                            });\n                            flash\n                                ? _cameraController\n                                    .setFlashMode(FlashMode.torch)\n                                : _cameraController.setFlashMode(FlashMode.off);\n                          }),\n                      GestureDetector(\n                        onLongPress: () async {\n                          await _cameraController.startVideoRecording();\n                          setState(() {\n                            isRecoring = true;\n                          });\n                        },\n                        onLongPressUp: () async {\n                          XFile videopath =\n                              await _cameraController.stopVideoRecording();\n                          setState(() {\n                            isRecoring = false;\n                          });\n                          Navigator.push(\n                              context,\n                              MaterialPageRoute(\n                                  builder: (builder) => VideoViewPage(\n                                        path: videopath.path,\n                                      )));\n                        },\n                        onTap: () {\n                          if (!isRecoring) takePhoto(context);\n                        },\n                        child: isRecoring\n                            ? Icon(\n                                Icons.radio_button_on,\n                                color: Colors.red,\n                                size: 80,\n                              )\n                            : Icon(\n                                Icons.panorama_fish_eye,\n                                color: Colors.white,\n                                size: 70,\n                              ),\n                      ),\n                      IconButton(\n                          icon: Transform.rotate(\n                            angle: transform,\n                            child: Icon(\n                              Icons.flip_camera_ios,\n                              color: Colors.white,\n                              size: 28,\n                            ),\n                          ),\n                          onPressed: () async {\n                            setState(() {\n                              iscamerafront = !iscamerafront;\n                              transform = transform + pi;\n                            });\n                            int cameraPos = iscamerafront ? 0 : 1;\n                            _cameraController = CameraController(\n                                cameras[cameraPos], ResolutionPreset.high);\n                            cameraValue = _cameraController.initialize();\n                          }),\n                    ],\n                  ),\n                  SizedBox(\n                    height: 4,\n                  ),\n                  Text(\n                    \"Hold for Video, tap for photo\",\n                    style: TextStyle(\n                      color: Colors.white,\n                    ),\n                    textAlign: TextAlign.center,\n                  )\n                ],\n              ),\n            ),\n          ),\n        ],\n      ),\n    );\n  }\n\n  void takePhoto(BuildContext context) async {\n    XFile file = await _cameraController.takePicture();\n    Navigator.push(\n        context,\n        MaterialPageRoute(\n            builder: (builder) => CameraViewPage(\n                  path: file.path,\n                )));\n  }\n}\n"
  },
  {
    "path": "lib/Screens/CameraView.dart",
    "content": "import 'dart:io';\n\nimport 'package:flutter/material.dart';\n\nclass CameraViewPage extends StatelessWidget {\n  const CameraViewPage({Key key, this.path}) : super(key: key);\n  final String path;\n\n  @override\n  Widget build(BuildContext context) {\n    return Scaffold(\n      backgroundColor: Colors.black,\n      appBar: AppBar(\n        backgroundColor: Colors.black,\n        actions: [\n          IconButton(\n              icon: Icon(\n                Icons.crop_rotate,\n                size: 27,\n              ),\n              onPressed: () {}),\n          IconButton(\n              icon: Icon(\n                Icons.emoji_emotions_outlined,\n                size: 27,\n              ),\n              onPressed: () {}),\n          IconButton(\n              icon: Icon(\n                Icons.title,\n                size: 27,\n              ),\n              onPressed: () {}),\n          IconButton(\n              icon: Icon(\n                Icons.edit,\n                size: 27,\n              ),\n              onPressed: () {}),\n        ],\n      ),\n      body: Container(\n        width: MediaQuery.of(context).size.width,\n        height: MediaQuery.of(context).size.height,\n        child: Stack(\n          children: [\n            Container(\n              width: MediaQuery.of(context).size.width,\n              height: MediaQuery.of(context).size.height - 150,\n              child: Image.file(\n                File(path),\n                fit: BoxFit.cover,\n              ),\n            ),\n            Positioned(\n              bottom: 0,\n              child: Container(\n                color: Colors.black38,\n                width: MediaQuery.of(context).size.width,\n                padding: EdgeInsets.symmetric(vertical: 5, horizontal: 8),\n                child: TextFormField(\n                  style: TextStyle(\n                    color: Colors.white,\n                    fontSize: 17,\n                  ),\n                  maxLines: 6,\n                  minLines: 1,\n                  decoration: InputDecoration(\n                      border: InputBorder.none,\n                      hintText: \"Add Caption....\",\n                      prefixIcon: Icon(\n                        Icons.add_photo_alternate,\n                        color: Colors.white,\n                        size: 27,\n                      ),\n                      hintStyle: TextStyle(\n                        color: Colors.white,\n                        fontSize: 17,\n                      ),\n                      suffixIcon: CircleAvatar(\n                        radius: 27,\n                        backgroundColor: Colors.tealAccent[700],\n                        child: Icon(\n                          Icons.check,\n                          color: Colors.white,\n                          size: 27,\n                        ),\n                      )),\n                ),\n              ),\n            ),\n          ],\n        ),\n      ),\n    );\n  }\n}\n"
  },
  {
    "path": "lib/Screens/CreateGroup.dart",
    "content": "import 'package:chatapp/CustomUI/AvtarCard.dart';\nimport 'package:chatapp/CustomUI/ButtonCard.dart';\nimport 'package:chatapp/CustomUI/ContactCard.dart';\nimport 'package:chatapp/Model/ChatModel.dart';\nimport 'package:flutter/material.dart';\n\nclass CreateGroup extends StatefulWidget {\n  CreateGroup({Key key}) : super(key: key);\n\n  @override\n  _CreateGroupState createState() => _CreateGroupState();\n}\n\nclass _CreateGroupState extends State<CreateGroup> {\n  List<ChatModel> contacts = [\n    ChatModel(name: \"Dev Stack\", status: \"A full stack developer\"),\n    ChatModel(name: \"Balram\", status: \"Flutter Developer...........\"),\n    ChatModel(name: \"Saket\", status: \"Web developer...\"),\n    ChatModel(name: \"Bhanu Dev\", status: \"App developer....\"),\n    ChatModel(name: \"Collins\", status: \"Raect developer..\"),\n    ChatModel(name: \"Kishor\", status: \"Full Stack Web\"),\n    ChatModel(name: \"Testing1\", status: \"Example work\"),\n    ChatModel(name: \"Testing2\", status: \"Sharing is caring\"),\n    ChatModel(name: \"Divyanshu\", status: \".....\"),\n    ChatModel(name: \"Helper\", status: \"Love you Mom Dad\"),\n    ChatModel(name: \"Tester\", status: \"I find the bugs\"),\n  ];\n  List<ChatModel> groupmember = [];\n  @override\n  Widget build(BuildContext context) {\n    return Scaffold(\n        appBar: AppBar(\n          title: Column(\n            mainAxisAlignment: MainAxisAlignment.start,\n            crossAxisAlignment: CrossAxisAlignment.start,\n            children: [\n              Text(\n                \"New Group\",\n                style: TextStyle(\n                  fontSize: 19,\n                  fontWeight: FontWeight.bold,\n                ),\n              ),\n              Text(\n                \"Add participants\",\n                style: TextStyle(\n                  fontSize: 13,\n                ),\n              )\n            ],\n          ),\n          actions: [\n            IconButton(\n                icon: Icon(\n                  Icons.search,\n                  size: 26,\n                ),\n                onPressed: () {}),\n          ],\n        ),\n        floatingActionButton: FloatingActionButton(\n            backgroundColor: Color(0xFF128C7E),\n            onPressed: () {},\n            child: Icon(Icons.arrow_forward)),\n        body: Stack(\n          children: [\n            ListView.builder(\n                itemCount: contacts.length + 1,\n                itemBuilder: (context, index) {\n                  if (index == 0) {\n                    return Container(\n                      height: groupmember.length > 0 ? 90 : 10,\n                    );\n                  }\n                  return InkWell(\n                    onTap: () {\n                      setState(() {\n                        if (contacts[index - 1].select == true) {\n                          groupmember.remove(contacts[index - 1]);\n                          contacts[index - 1].select = false;\n                        } else {\n                          groupmember.add(contacts[index - 1]);\n                          contacts[index - 1].select = true;\n                        }\n                      });\n                    },\n                    child: ContactCard(\n                      contact: contacts[index - 1],\n                    ),\n                  );\n                }),\n            groupmember.length > 0\n                ? Align(\n                    child: Column(\n                      children: [\n                        Container(\n                          height: 75,\n                          color: Colors.white,\n                          child: ListView.builder(\n                              scrollDirection: Axis.horizontal,\n                              itemCount: contacts.length,\n                              itemBuilder: (context, index) {\n                                if (contacts[index].select == true)\n                                  return InkWell(\n                                    onTap: () {\n                                      setState(() {\n                                        groupmember.remove(contacts[index]);\n                                        contacts[index].select = false;\n                                      });\n                                    },\n                                    child: AvatarCard(\n                                      chatModel: contacts[index],\n                                    ),\n                                  );\n                                return Container();\n                              }),\n                        ),\n                        Divider(\n                          thickness: 1,\n                        ),\n                      ],\n                    ),\n                    alignment: Alignment.topCenter,\n                  )\n                : Container(),\n          ],\n        ));\n  }\n}\n"
  },
  {
    "path": "lib/Screens/Homescreen.dart",
    "content": "import 'package:chatapp/Model/ChatModel.dart';\nimport 'package:chatapp/Pages/CameraPage.dart';\nimport 'package:chatapp/Pages/ChatPage.dart';\nimport 'package:flutter/material.dart';\n\nclass Homescreen extends StatefulWidget {\n  Homescreen({Key key, this.chatmodels, this.sourchat}) : super(key: key);\n  final List<ChatModel> chatmodels;\n  final ChatModel sourchat;\n\n  @override\n  _HomescreenState createState() => _HomescreenState();\n}\n\nclass _HomescreenState extends State<Homescreen>\n    with SingleTickerProviderStateMixin {\n  TabController _controller;\n  @override\n  void initState() {\n    super.initState();\n    _controller = TabController(length: 4, vsync: this, initialIndex: 1);\n  }\n\n  @override\n  Widget build(BuildContext context) {\n    return Scaffold(\n      appBar: AppBar(\n        title: Text(\"Whatsapp Clone\"),\n        actions: [\n          IconButton(icon: Icon(Icons.search), onPressed: () {}),\n          PopupMenuButton<String>(\n            onSelected: (value) {\n              print(value);\n            },\n            itemBuilder: (BuildContext contesxt) {\n              return [\n                PopupMenuItem(\n                  child: Text(\"New group\"),\n                  value: \"New group\",\n                ),\n                PopupMenuItem(\n                  child: Text(\"New broadcast\"),\n                  value: \"New broadcast\",\n                ),\n                PopupMenuItem(\n                  child: Text(\"Whatsapp Web\"),\n                  value: \"Whatsapp Web\",\n                ),\n                PopupMenuItem(\n                  child: Text(\"Starred messages\"),\n                  value: \"Starred messages\",\n                ),\n                PopupMenuItem(\n                  child: Text(\"Settings\"),\n                  value: \"Settings\",\n                ),\n              ];\n            },\n          )\n        ],\n        bottom: TabBar(\n          controller: _controller,\n          indicatorColor: Colors.white,\n          tabs: [\n            Tab(\n              icon: Icon(Icons.camera_alt),\n            ),\n            Tab(\n              text: \"CHATS\",\n            ),\n            Tab(\n              text: \"STATUS\",\n            ),\n            Tab(\n              text: \"CALLS\",\n            )\n          ],\n        ),\n      ),\n      body: TabBarView(\n        controller: _controller,\n        children: [\n          CameraPage(),\n          ChatPage(\n            chatmodels: widget.chatmodels,\n            sourchat: widget.sourchat,\n          ),\n          Text(\"STATUS\"),\n          Text(\"Calls\"),\n        ],\n      ),\n    );\n  }\n}\n"
  },
  {
    "path": "lib/Screens/IndividualPage.dart",
    "content": "// import 'package:camera/camera.dart';\n// import 'package:chatapp/CustomUI/CameraUI.dart';\nimport 'package:chatapp/CustomUI/OwnMessgaeCrad.dart';\nimport 'package:chatapp/CustomUI/ReplyCard.dart';\nimport 'package:chatapp/Model/ChatModel.dart';\nimport 'package:chatapp/Model/MessageModel.dart';\nimport 'package:emoji_picker/emoji_picker.dart';\nimport 'package:flutter/material.dart';\nimport 'package:flutter_svg/svg.dart';\nimport 'package:socket_io_client/socket_io_client.dart' as IO;\n\nclass IndividualPage extends StatefulWidget {\n  IndividualPage({Key key, this.chatModel, this.sourchat}) : super(key: key);\n  final ChatModel chatModel;\n  final ChatModel sourchat;\n\n  @override\n  _IndividualPageState createState() => _IndividualPageState();\n}\n\nclass _IndividualPageState extends State<IndividualPage> {\n  bool show = false;\n  FocusNode focusNode = FocusNode();\n  bool sendButton = false;\n  List<MessageModel> messages = [];\n  TextEditingController _controller = TextEditingController();\n  ScrollController _scrollController = ScrollController();\n  IO.Socket socket;\n  @override\n  void initState() {\n    super.initState();\n    // connect();\n\n    focusNode.addListener(() {\n      if (focusNode.hasFocus) {\n        setState(() {\n          show = false;\n        });\n      }\n    });\n    connect();\n  }\n\n  void connect() {\n    // MessageModel messageModel = MessageModel(sourceId: widget.sourceChat.id.toString(),targetId: );\n    socket = IO.io(\"http://192.168.0.106:5000\", <String, dynamic>{\n      \"transports\": [\"websocket\"],\n      \"autoConnect\": false,\n    });\n    socket.connect();\n    socket.emit(\"signin\", widget.sourchat.id);\n    socket.onConnect((data) {\n      print(\"Connected\");\n      socket.on(\"message\", (msg) {\n        print(msg);\n        setMessage(\"destination\", msg[\"message\"]);\n        _scrollController.animateTo(_scrollController.position.maxScrollExtent,\n            duration: Duration(milliseconds: 300), curve: Curves.easeOut);\n      });\n    });\n    print(socket.connected);\n  }\n\n  void sendMessage(String message, int sourceId, int targetId) {\n    setMessage(\"source\", message);\n    socket.emit(\"message\",\n        {\"message\": message, \"sourceId\": sourceId, \"targetId\": targetId});\n  }\n\n  void setMessage(String type, String message) {\n    MessageModel messageModel = MessageModel(\n        type: type,\n        message: message,\n        time: DateTime.now().toString().substring(10, 16));\n    print(messages);\n\n    setState(() {\n      messages.add(messageModel);\n    });\n  }\n\n  @override\n  Widget build(BuildContext context) {\n    return Stack(\n      children: [\n        Image.asset(\n          \"assets/whatsapp_Back.png\",\n          height: MediaQuery.of(context).size.height,\n          width: MediaQuery.of(context).size.width,\n          fit: BoxFit.cover,\n        ),\n        Scaffold(\n          backgroundColor: Colors.transparent,\n          appBar: PreferredSize(\n            preferredSize: Size.fromHeight(60),\n            child: AppBar(\n              leadingWidth: 70,\n              titleSpacing: 0,\n              leading: InkWell(\n                onTap: () {\n                  Navigator.pop(context);\n                },\n                child: Row(\n                  mainAxisAlignment: MainAxisAlignment.center,\n                  children: [\n                    Icon(\n                      Icons.arrow_back,\n                      size: 24,\n                    ),\n                    CircleAvatar(\n                      child: SvgPicture.asset(\n                        widget.chatModel.isGroup\n                            ? \"assets/groups.svg\"\n                            : \"assets/person.svg\",\n                        color: Colors.white,\n                        height: 36,\n                        width: 36,\n                      ),\n                      radius: 20,\n                      backgroundColor: Colors.blueGrey,\n                    ),\n                  ],\n                ),\n              ),\n              title: InkWell(\n                onTap: () {},\n                child: Container(\n                  margin: EdgeInsets.all(6),\n                  child: Column(\n                    mainAxisAlignment: MainAxisAlignment.start,\n                    crossAxisAlignment: CrossAxisAlignment.start,\n                    children: [\n                      Text(\n                        widget.chatModel.name,\n                        style: TextStyle(\n                          fontSize: 18.5,\n                          fontWeight: FontWeight.bold,\n                        ),\n                      ),\n                      Text(\n                        \"last seen today at 12:05\",\n                        style: TextStyle(\n                          fontSize: 13,\n                        ),\n                      )\n                    ],\n                  ),\n                ),\n              ),\n              actions: [\n                IconButton(icon: Icon(Icons.videocam), onPressed: () {}),\n                IconButton(icon: Icon(Icons.call), onPressed: () {}),\n                PopupMenuButton<String>(\n                  padding: EdgeInsets.all(0),\n                  onSelected: (value) {\n                    print(value);\n                  },\n                  itemBuilder: (BuildContext contesxt) {\n                    return [\n                      PopupMenuItem(\n                        child: Text(\"View Contact\"),\n                        value: \"View Contact\",\n                      ),\n                      PopupMenuItem(\n                        child: Text(\"Media, links, and docs\"),\n                        value: \"Media, links, and docs\",\n                      ),\n                      PopupMenuItem(\n                        child: Text(\"Whatsapp Web\"),\n                        value: \"Whatsapp Web\",\n                      ),\n                      PopupMenuItem(\n                        child: Text(\"Search\"),\n                        value: \"Search\",\n                      ),\n                      PopupMenuItem(\n                        child: Text(\"Mute Notification\"),\n                        value: \"Mute Notification\",\n                      ),\n                      PopupMenuItem(\n                        child: Text(\"Wallpaper\"),\n                        value: \"Wallpaper\",\n                      ),\n                    ];\n                  },\n                ),\n              ],\n            ),\n          ),\n          body: Container(\n            height: MediaQuery.of(context).size.height,\n            width: MediaQuery.of(context).size.width,\n            child: WillPopScope(\n              child: Column(\n                children: [\n                  Expanded(\n                    // height: MediaQuery.of(context).size.height - 150,\n                    child: ListView.builder(\n                      shrinkWrap: true,\n                      controller: _scrollController,\n                      itemCount: messages.length + 1,\n                      itemBuilder: (context, index) {\n                        if (index == messages.length) {\n                          return Container(\n                            height: 70,\n                          );\n                        }\n                        if (messages[index].type == \"source\") {\n                          return OwnMessageCard(\n                            message: messages[index].message,\n                            time: messages[index].time,\n                          );\n                        } else {\n                          return ReplyCard(\n                            message: messages[index].message,\n                            time: messages[index].time,\n                          );\n                        }\n                      },\n                    ),\n                  ),\n                  Align(\n                    alignment: Alignment.bottomCenter,\n                    child: Container(\n                      height: 70,\n                      child: Column(\n                        mainAxisAlignment: MainAxisAlignment.end,\n                        children: [\n                          Row(\n                            children: [\n                              Container(\n                                width: MediaQuery.of(context).size.width - 60,\n                                child: Card(\n                                  margin: EdgeInsets.only(\n                                      left: 2, right: 2, bottom: 8),\n                                  shape: RoundedRectangleBorder(\n                                    borderRadius: BorderRadius.circular(25),\n                                  ),\n                                  child: TextFormField(\n                                    controller: _controller,\n                                    focusNode: focusNode,\n                                    textAlignVertical: TextAlignVertical.center,\n                                    keyboardType: TextInputType.multiline,\n                                    maxLines: 5,\n                                    minLines: 1,\n                                    onChanged: (value) {\n                                      if (value.length > 0) {\n                                        setState(() {\n                                          sendButton = true;\n                                        });\n                                      } else {\n                                        setState(() {\n                                          sendButton = false;\n                                        });\n                                      }\n                                    },\n                                    decoration: InputDecoration(\n                                      border: InputBorder.none,\n                                      hintText: \"Type a message\",\n                                      hintStyle: TextStyle(color: Colors.grey),\n                                      prefixIcon: IconButton(\n                                        icon: Icon(\n                                          show\n                                              ? Icons.keyboard\n                                              : Icons.emoji_emotions_outlined,\n                                        ),\n                                        onPressed: () {\n                                          if (!show) {\n                                            focusNode.unfocus();\n                                            focusNode.canRequestFocus = false;\n                                          }\n                                          setState(() {\n                                            show = !show;\n                                          });\n                                        },\n                                      ),\n                                      suffixIcon: Row(\n                                        mainAxisSize: MainAxisSize.min,\n                                        children: [\n                                          IconButton(\n                                            icon: Icon(Icons.attach_file),\n                                            onPressed: () {\n                                              showModalBottomSheet(\n                                                  backgroundColor:\n                                                      Colors.transparent,\n                                                  context: context,\n                                                  builder: (builder) =>\n                                                      bottomSheet());\n                                            },\n                                          ),\n                                          IconButton(\n                                            icon: Icon(Icons.camera_alt),\n                                            onPressed: () {\n                                              // Navigator.push(\n                                              //     context,\n                                              //     MaterialPageRoute(\n                                              //         builder: (builder) =>\n                                              //             CameraApp()));\n                                            },\n                                          ),\n                                        ],\n                                      ),\n                                      contentPadding: EdgeInsets.all(5),\n                                    ),\n                                  ),\n                                ),\n                              ),\n                              Padding(\n                                padding: const EdgeInsets.only(\n                                  bottom: 8,\n                                  right: 2,\n                                  left: 2,\n                                ),\n                                child: CircleAvatar(\n                                  radius: 25,\n                                  backgroundColor: Color(0xFF128C7E),\n                                  child: IconButton(\n                                    icon: Icon(\n                                      sendButton ? Icons.send : Icons.mic,\n                                      color: Colors.white,\n                                    ),\n                                    onPressed: () {\n                                      if (sendButton) {\n                                        _scrollController.animateTo(\n                                            _scrollController\n                                                .position.maxScrollExtent,\n                                            duration:\n                                                Duration(milliseconds: 300),\n                                            curve: Curves.easeOut);\n                                        sendMessage(\n                                            _controller.text,\n                                            widget.sourchat.id,\n                                            widget.chatModel.id);\n                                        _controller.clear();\n                                        setState(() {\n                                          sendButton = false;\n                                        });\n                                      }\n                                    },\n                                  ),\n                                ),\n                              ),\n                            ],\n                          ),\n                          show ? emojiSelect() : Container(),\n                        ],\n                      ),\n                    ),\n                  ),\n                ],\n              ),\n              onWillPop: () {\n                if (show) {\n                  setState(() {\n                    show = false;\n                  });\n                } else {\n                  Navigator.pop(context);\n                }\n                return Future.value(false);\n              },\n            ),\n          ),\n        ),\n      ],\n    );\n  }\n\n  Widget bottomSheet() {\n    return Container(\n      height: 278,\n      width: MediaQuery.of(context).size.width,\n      child: Card(\n        margin: const EdgeInsets.all(18.0),\n        shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(15)),\n        child: Padding(\n          padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 20),\n          child: Column(\n            children: [\n              Row(\n                mainAxisAlignment: MainAxisAlignment.center,\n                children: [\n                  iconCreation(\n                      Icons.insert_drive_file, Colors.indigo, \"Document\"),\n                  SizedBox(\n                    width: 40,\n                  ),\n                  iconCreation(Icons.camera_alt, Colors.pink, \"Camera\"),\n                  SizedBox(\n                    width: 40,\n                  ),\n                  iconCreation(Icons.insert_photo, Colors.purple, \"Gallery\"),\n                ],\n              ),\n              SizedBox(\n                height: 30,\n              ),\n              Row(\n                mainAxisAlignment: MainAxisAlignment.center,\n                children: [\n                  iconCreation(Icons.headset, Colors.orange, \"Audio\"),\n                  SizedBox(\n                    width: 40,\n                  ),\n                  iconCreation(Icons.location_pin, Colors.teal, \"Location\"),\n                  SizedBox(\n                    width: 40,\n                  ),\n                  iconCreation(Icons.person, Colors.blue, \"Contact\"),\n                ],\n              ),\n            ],\n          ),\n        ),\n      ),\n    );\n  }\n\n  Widget iconCreation(IconData icons, Color color, String text) {\n    return InkWell(\n      onTap: () {},\n      child: Column(\n        children: [\n          CircleAvatar(\n            radius: 30,\n            backgroundColor: color,\n            child: Icon(\n              icons,\n              // semanticLabel: \"Help\",\n              size: 29,\n              color: Colors.white,\n            ),\n          ),\n          SizedBox(\n            height: 5,\n          ),\n          Text(\n            text,\n            style: TextStyle(\n              fontSize: 12,\n              // fontWeight: FontWeight.w100,\n            ),\n          )\n        ],\n      ),\n    );\n  }\n\n  Widget emojiSelect() {\n    return EmojiPicker(\n        rows: 4,\n        columns: 7,\n        onEmojiSelected: (emoji, category) {\n          print(emoji);\n          setState(() {\n            _controller.text = _controller.text + emoji.emoji;\n          });\n        });\n  }\n}\n"
  },
  {
    "path": "lib/Screens/LoginScreen.dart",
    "content": "import 'package:chatapp/CustomUI/ButtonCard.dart';\nimport 'package:chatapp/Model/ChatModel.dart';\nimport 'package:chatapp/Screens/Homescreen.dart';\nimport 'package:flutter/material.dart';\n\nclass LoginScreen extends StatefulWidget {\n  LoginScreen({Key key}) : super(key: key);\n\n  @override\n  _LoginScreenState createState() => _LoginScreenState();\n}\n\nclass _LoginScreenState extends State<LoginScreen> {\n  ChatModel sourceChat;\n  List<ChatModel> chatmodels = [\n    ChatModel(\n      name: \"Dev Stack\",\n      isGroup: false,\n      currentMessage: \"Hi Everyone\",\n      time: \"4:00\",\n      icon: \"person.svg\",\n      id: 1,\n    ),\n    ChatModel(\n      name: \"Kishor\",\n      isGroup: false,\n      currentMessage: \"Hi Kishor\",\n      time: \"13:00\",\n      icon: \"person.svg\",\n      id: 2,\n    ),\n\n    ChatModel(\n      name: \"Collins\",\n      isGroup: false,\n      currentMessage: \"Hi Dev Stack\",\n      time: \"8:00\",\n      icon: \"person.svg\",\n      id: 3,\n    ),\n\n    ChatModel(\n      name: \"Balram Rathore\",\n      isGroup: false,\n      currentMessage: \"Hi Dev Stack\",\n      time: \"2:00\",\n      icon: \"person.svg\",\n      id: 4,\n    ),\n\n    // ChatModel(\n    //   name: \"NodeJs Group\",\n    //   isGroup: true,\n    //   currentMessage: \"New NodejS Post\",\n    //   time: \"2:00\",\n    //   icon: \"group.svg\",\n    // ),\n  ];\n  @override\n  Widget build(BuildContext context) {\n    return Scaffold(\n      body: ListView.builder(\n          itemCount: chatmodels.length,\n          itemBuilder: (contex, index) => InkWell(\n                onTap: () {\n                  sourceChat = chatmodels.removeAt(index);\n                  Navigator.pushReplacement(\n                      context,\n                      MaterialPageRoute(\n                          builder: (builder) => Homescreen(\n                                chatmodels: chatmodels,\n                                sourchat: sourceChat,\n                              )));\n                },\n                child: ButtonCard(\n                  name: chatmodels[index].name,\n                  icon: Icons.person,\n                ),\n              )),\n    );\n  }\n}\n"
  },
  {
    "path": "lib/Screens/SelectContact.dart",
    "content": "import 'package:chatapp/CustomUI/ButtonCard.dart';\nimport 'package:chatapp/CustomUI/ContactCard.dart';\nimport 'package:chatapp/Model/ChatModel.dart';\nimport 'package:chatapp/Screens/CreateGroup.dart';\nimport 'package:flutter/material.dart';\n\nclass SelectContact extends StatefulWidget {\n  SelectContact({Key key}) : super(key: key);\n\n  @override\n  _SelectContactState createState() => _SelectContactState();\n}\n\nclass _SelectContactState extends State<SelectContact> {\n  @override\n  Widget build(BuildContext context) {\n    List<ChatModel> contacts = [\n      ChatModel(name: \"Dev Stack\", status: \"A full stack developer\"),\n      ChatModel(name: \"Balram\", status: \"Flutter Developer...........\"),\n      ChatModel(name: \"Saket\", status: \"Web developer...\"),\n      ChatModel(name: \"Bhanu Dev\", status: \"App developer....\"),\n      ChatModel(name: \"Collins\", status: \"Raect developer..\"),\n      ChatModel(name: \"Kishor\", status: \"Full Stack Web\"),\n      ChatModel(name: \"Testing1\", status: \"Example work\"),\n      ChatModel(name: \"Testing2\", status: \"Sharing is caring\"),\n      ChatModel(name: \"Divyanshu\", status: \".....\"),\n      ChatModel(name: \"Helper\", status: \"Love you Mom Dad\"),\n      ChatModel(name: \"Tester\", status: \"I find the bugs\"),\n    ];\n\n    return Scaffold(\n        appBar: AppBar(\n          title: Column(\n            mainAxisAlignment: MainAxisAlignment.start,\n            crossAxisAlignment: CrossAxisAlignment.start,\n            children: [\n              Text(\n                \"Select Contact\",\n                style: TextStyle(\n                  fontSize: 19,\n                  fontWeight: FontWeight.bold,\n                ),\n              ),\n              Text(\n                \"256 contacts\",\n                style: TextStyle(\n                  fontSize: 13,\n                ),\n              )\n            ],\n          ),\n          actions: [\n            IconButton(\n                icon: Icon(\n                  Icons.search,\n                  size: 26,\n                ),\n                onPressed: () {}),\n            PopupMenuButton<String>(\n              padding: EdgeInsets.all(0),\n              onSelected: (value) {\n                print(value);\n              },\n              itemBuilder: (BuildContext contesxt) {\n                return [\n                  PopupMenuItem(\n                    child: Text(\"Invite a friend\"),\n                    value: \"Invite a friend\",\n                  ),\n                  PopupMenuItem(\n                    child: Text(\"Contacts\"),\n                    value: \"Contacts\",\n                  ),\n                  PopupMenuItem(\n                    child: Text(\"Refresh\"),\n                    value: \"Refresh\",\n                  ),\n                  PopupMenuItem(\n                    child: Text(\"Help\"),\n                    value: \"Help\",\n                  ),\n                ];\n              },\n            ),\n          ],\n        ),\n        body: ListView.builder(\n            itemCount: contacts.length + 2,\n            itemBuilder: (context, index) {\n              if (index == 0) {\n                return InkWell(\n                  onTap: () {\n                    Navigator.push(context,\n                        MaterialPageRoute(builder: (builder) => CreateGroup()));\n                  },\n                  child: ButtonCard(\n                    icon: Icons.group,\n                    name: \"New group\",\n                  ),\n                );\n              } else if (index == 1) {\n                return ButtonCard(\n                  icon: Icons.person_add,\n                  name: \"New contact\",\n                );\n              }\n              return ContactCard(\n                contact: contacts[index - 2],\n              );\n            }));\n  }\n}\n"
  },
  {
    "path": "lib/Screens/VideoView.dart",
    "content": "import 'dart:io';\n\nimport 'package:flutter/material.dart';\nimport 'package:video_player/video_player.dart';\n\nclass VideoViewPage extends StatefulWidget {\n  const VideoViewPage({Key key, this.path}) : super(key: key);\n  final String path;\n\n  @override\n  _VideoViewPageState createState() => _VideoViewPageState();\n}\n\nclass _VideoViewPageState extends State<VideoViewPage> {\n  VideoPlayerController _controller;\n\n  @override\n  void initState() {\n    super.initState();\n    _controller = VideoPlayerController.file(File(widget.path))\n      ..initialize().then((_) {\n        // Ensure the first frame is shown after the video is initialized, even before the play button has been pressed.\n        setState(() {});\n      });\n  }\n\n  @override\n  Widget build(BuildContext context) {\n    return Scaffold(\n      backgroundColor: Colors.black,\n      appBar: AppBar(\n        backgroundColor: Colors.black,\n        actions: [\n          IconButton(\n              icon: Icon(\n                Icons.crop_rotate,\n                size: 27,\n              ),\n              onPressed: () {}),\n          IconButton(\n              icon: Icon(\n                Icons.emoji_emotions_outlined,\n                size: 27,\n              ),\n              onPressed: () {}),\n          IconButton(\n              icon: Icon(\n                Icons.title,\n                size: 27,\n              ),\n              onPressed: () {}),\n          IconButton(\n              icon: Icon(\n                Icons.edit,\n                size: 27,\n              ),\n              onPressed: () {}),\n        ],\n      ),\n      body: Container(\n        width: MediaQuery.of(context).size.width,\n        height: MediaQuery.of(context).size.height,\n        child: Stack(\n          children: [\n            Container(\n              width: MediaQuery.of(context).size.width,\n              height: MediaQuery.of(context).size.height - 150,\n              child: _controller.value.initialized\n                  ? AspectRatio(\n                      aspectRatio: _controller.value.aspectRatio,\n                      child: VideoPlayer(_controller),\n                    )\n                  : Container(),\n            ),\n            Positioned(\n              bottom: 0,\n              child: Container(\n                color: Colors.black38,\n                width: MediaQuery.of(context).size.width,\n                padding: EdgeInsets.symmetric(vertical: 5, horizontal: 8),\n                child: TextFormField(\n                  style: TextStyle(\n                    color: Colors.white,\n                    fontSize: 17,\n                  ),\n                  maxLines: 6,\n                  minLines: 1,\n                  decoration: InputDecoration(\n                      border: InputBorder.none,\n                      hintText: \"Add Caption....\",\n                      prefixIcon: Icon(\n                        Icons.add_photo_alternate,\n                        color: Colors.white,\n                        size: 27,\n                      ),\n                      hintStyle: TextStyle(\n                        color: Colors.white,\n                        fontSize: 17,\n                      ),\n                      suffixIcon: CircleAvatar(\n                        radius: 27,\n                        backgroundColor: Colors.tealAccent[700],\n                        child: Icon(\n                          Icons.check,\n                          color: Colors.white,\n                          size: 27,\n                        ),\n                      )),\n                ),\n              ),\n            ),\n            Align(\n              alignment: Alignment.center,\n              child: InkWell(\n                onTap: () {\n                  setState(() {\n                    _controller.value.isPlaying\n                        ? _controller.pause()\n                        : _controller.play();\n                  });\n                },\n                child: CircleAvatar(\n                  radius: 33,\n                  backgroundColor: Colors.black38,\n                  child: Icon(\n                    _controller.value.isPlaying\n                        ? Icons.pause\n                        : Icons.play_arrow,\n                    color: Colors.white,\n                    size: 50,\n                  ),\n                ),\n              ),\n            ),\n          ],\n        ),\n      ),\n    );\n  }\n}\n"
  },
  {
    "path": "lib/main.dart",
    "content": "import 'package:camera/camera.dart';\nimport 'package:chatapp/Screens/CameraScreen.dart';\nimport 'package:chatapp/Screens/Homescreen.dart';\nimport 'package:chatapp/Screens/LoginScreen.dart';\nimport 'package:flutter/material.dart';\n\nFuture<void> main() async {\n  WidgetsFlutterBinding.ensureInitialized();\n\n  cameras = await availableCameras();\n\n  runApp(MyApp());\n}\n\nclass MyApp extends StatelessWidget {\n  // This widget is the root of your application.\n  @override\n  Widget build(BuildContext context) {\n    return MaterialApp(\n      theme: ThemeData(\n          fontFamily: \"OpenSans\",\n          primaryColor: Color(0xFF075E54),\n          accentColor: Color(0xFF128C7E)),\n      home: LoginScreen(),\n    );\n  }\n}\n"
  },
  {
    "path": "pubspec.yaml",
    "content": "name: chatapp\ndescription: A new Flutter project.\n\n# The following line prevents the package from being accidentally published to\n# pub.dev using `pub publish`. This is preferred for private packages.\npublish_to: \"none\" # Remove this line if you wish to publish to pub.dev\n\n# The following defines the version and build number for your application.\n# A version number is three numbers separated by dots, like 1.2.43\n# followed by an optional build number separated by a +.\n# Both the version and the builder number may be overridden in flutter\n# build by specifying --build-name and --build-number, respectively.\n# In Android, build-name is used as versionName while build-number used as versionCode.\n# Read more about Android versioning at https://developer.android.com/studio/publish/versioning\n# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.\n# Read more about iOS versioning at\n# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html\nversion: 1.0.0+1\n\nenvironment:\n  sdk: \">=2.7.0 <3.0.0\"\n\ndependencies:\n  flutter:\n    sdk: flutter\n\n  # The following adds the Cupertino Icons font to your application.\n  # Use with the CupertinoIcons class for iOS style icons.\n  cupertino_icons: ^1.0.0\n  flutter_svg: ^0.19.3\n  emoji_picker: ^0.1.0\n  shared_preferences: ^0.5.12+4\n  camera: ^0.7.0+2\n  path_provider: ^1.6.22\n  path:\n  video_player: ^1.0.1\n  socket_io_client: ^0.9.12\ndev_dependencies:\n  flutter_test:\n    sdk: flutter\n\n# For information on the generic Dart part of this file, see the\n# following page: https://dart.dev/tools/pub/pubspec\n\n# The following section is specific to Flutter.\nflutter:\n  # The following line ensures that the Material Icons font is\n  # included with your application, so that you can use the icons in\n  # the material Icons class.\n  uses-material-design: true\n\n  # To add assets to your application, add an assets section, like this:\n  assets:\n    - assets/\n  #   - images/a_dot_burr.jpeg\n  #   - images/a_dot_ham.jpeg\n\n  # An image asset can refer to one or more resolution-specific \"variants\", see\n  # https://flutter.dev/assets-and-images/#resolution-aware.\n\n  # For details regarding adding assets from package dependencies, see\n  # https://flutter.dev/assets-and-images/#from-packages\n\n  # To add custom fonts to your application, add a fonts section here,\n  # in this \"flutter\" section. Each entry in this list should have a\n  # \"family\" key with the font family name, and a \"fonts\" key with a\n  # list giving the asset and other descriptors for the font. For\n  # example:\n  fonts:\n    - family: OpenSans\n      fonts:\n        - asset: fonts/OpenSans-Bold.ttf\n        - asset: fonts/OpenSans-Regular.ttf\n        - asset: fonts/OpenSans-SemiBold.ttf\n        - asset: fonts/OpenSans-Italic.ttf\n          style: italic\n  #   - family: Trajan Pro\n  #     fonts:\n  #       - asset: fonts/TrajanPro.ttf\n  #       - asset: fonts/TrajanPro_Bold.ttf\n  #         weight: 700\n  #\n  # For details regarding fonts from package dependencies,\n  # see https://flutter.dev/custom-fonts/#from-packages\n"
  },
  {
    "path": "test/widget_test.dart",
    "content": "// This is a basic Flutter widget test.\n//\n// To perform an interaction with a widget in your test, use the WidgetTester\n// utility that Flutter provides. For example, you can send tap and scroll\n// gestures. You can also use WidgetTester to find child widgets in the widget\n// tree, read text, and verify that the values of widget properties are correct.\n\nimport 'package:flutter/material.dart';\nimport 'package:flutter_test/flutter_test.dart';\n\nimport 'package:chatapp/main.dart';\n\nvoid main() {\n  testWidgets('Counter increments smoke test', (WidgetTester tester) async {\n    // Build our app and trigger a frame.\n    await tester.pumpWidget(MyApp());\n\n    // Verify that our counter starts at 0.\n    expect(find.text('0'), findsOneWidget);\n    expect(find.text('1'), findsNothing);\n\n    // Tap the '+' icon and trigger a frame.\n    await tester.tap(find.byIcon(Icons.add));\n    await tester.pump();\n\n    // Verify that our counter has incremented.\n    expect(find.text('0'), findsNothing);\n    expect(find.text('1'), findsOneWidget);\n  });\n}\n"
  },
  {
    "path": "web/index.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n  <!--\n    If you are serving your web app in a path other than the root, change the\n    href value below to reflect the base path you are serving from.\n\n    The path provided below has to start and end with a slash \"/\" in order for\n    it to work correctly.\n\n    Fore more details:\n    * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base\n  -->\n  <base href=\"/\">\n\n  <meta charset=\"UTF-8\">\n  <meta content=\"IE=Edge\" http-equiv=\"X-UA-Compatible\">\n  <meta name=\"description\" content=\"A new Flutter project.\">\n\n  <!-- iOS meta tags & icons -->\n  <meta name=\"apple-mobile-web-app-capable\" content=\"yes\">\n  <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black\">\n  <meta name=\"apple-mobile-web-app-title\" content=\"chatapp\">\n  <link rel=\"apple-touch-icon\" href=\"icons/Icon-192.png\">\n\n  <!-- Favicon -->\n  <link rel=\"icon\" type=\"image/png\" href=\"favicon.png\"/>\n\n  <title>chatapp</title>\n  <link rel=\"manifest\" href=\"manifest.json\">\n</head>\n<body>\n  <!-- This script installs service_worker.js to provide PWA functionality to\n       application. For more information, see:\n       https://developers.google.com/web/fundamentals/primers/service-workers -->\n  <script>\n    if ('serviceWorker' in navigator) {\n      window.addEventListener('flutter-first-frame', function () {\n        navigator.serviceWorker.register('flutter_service_worker.js');\n      });\n    }\n  </script>\n  <script src=\"main.dart.js\" type=\"application/javascript\"></script>\n</body>\n</html>\n"
  },
  {
    "path": "web/manifest.json",
    "content": "{\n    \"name\": \"chatapp\",\n    \"short_name\": \"chatapp\",\n    \"start_url\": \".\",\n    \"display\": \"standalone\",\n    \"background_color\": \"#0175C2\",\n    \"theme_color\": \"#0175C2\",\n    \"description\": \"A new Flutter project.\",\n    \"orientation\": \"portrait-primary\",\n    \"prefer_related_applications\": false,\n    \"icons\": [\n        {\n            \"src\": \"icons/Icon-192.png\",\n            \"sizes\": \"192x192\",\n            \"type\": \"image/png\"\n        },\n        {\n            \"src\": \"icons/Icon-512.png\",\n            \"sizes\": \"512x512\",\n            \"type\": \"image/png\"\n        }\n    ]\n}\n"
  }
]