├── .flutter-plugins-dependencies ├── .github └── FUNDING.yml ├── .gitignore ├── .metadata ├── LICENSE ├── README.md ├── android ├── .gitignore ├── app │ ├── build.gradle │ └── src │ │ ├── debug │ │ └── AndroidManifest.xml │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── kotlin │ │ │ └── dev │ │ │ │ └── jideguru │ │ │ │ └── FlutterSocialAppUIKit │ │ │ │ └── MainActivity.kt │ │ └── res │ │ │ ├── drawable │ │ │ └── launch_background.xml │ │ │ ├── mipmap-hdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-mdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── values-night │ │ │ └── styles.xml │ │ │ └── values │ │ │ └── styles.xml │ │ └── profile │ │ └── AndroidManifest.xml ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ └── gradle-wrapper.properties └── settings.gradle ├── assets ├── animations │ └── chat-anim.json └── images │ ├── cm0.jpeg │ ├── cm1.jpeg │ ├── cm2.jpeg │ ├── cm3.jpeg │ ├── cm4.jpeg │ ├── cm5.jpeg │ ├── cm6.jpeg │ ├── cm7.jpeg │ ├── cm8.jpeg │ └── cm9.jpeg ├── ios ├── .gitignore ├── Flutter │ ├── .last_build_id │ ├── AppFrameworkInfo.plist │ ├── Debug.xcconfig │ └── Release.xcconfig ├── Podfile ├── Podfile.lock ├── Runner.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ └── WorkspaceSettings.xcsettings │ └── xcshareddata │ │ └── xcschemes │ │ └── Runner.xcscheme ├── Runner.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ ├── IDEWorkspaceChecks.plist │ │ └── WorkspaceSettings.xcsettings └── Runner │ ├── AppDelegate.swift │ ├── Assets.xcassets │ ├── AppIcon.appiconset │ │ ├── Contents.json │ │ ├── Icon-App-1024x1024@1x.png │ │ ├── Icon-App-20x20@1x.png │ │ ├── Icon-App-20x20@2x.png │ │ ├── Icon-App-20x20@3x.png │ │ ├── Icon-App-29x29@1x.png │ │ ├── Icon-App-29x29@2x.png │ │ ├── Icon-App-29x29@3x.png │ │ ├── Icon-App-40x40@1x.png │ │ ├── Icon-App-40x40@2x.png │ │ ├── Icon-App-40x40@3x.png │ │ ├── Icon-App-60x60@2x.png │ │ ├── Icon-App-60x60@3x.png │ │ ├── Icon-App-76x76@1x.png │ │ ├── Icon-App-76x76@2x.png │ │ └── Icon-App-83.5x83.5@2x.png │ └── LaunchImage.imageset │ │ ├── Contents.json │ │ ├── LaunchImage.png │ │ ├── LaunchImage@2x.png │ │ ├── LaunchImage@3x.png │ │ └── README.md │ ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard │ ├── Info.plist │ └── Runner-Bridging-Header.h ├── lib ├── app.dart ├── main.dart ├── util │ ├── animations.dart │ ├── const.dart │ ├── data.dart │ ├── enum.dart │ ├── extensions.dart │ ├── router.dart │ ├── theme_config.dart │ └── validations.dart └── views │ ├── screens │ ├── auth │ │ └── login.dart │ ├── chat │ │ ├── chats.dart │ │ └── conversation.dart │ ├── friends.dart │ ├── home.dart │ ├── main_screen.dart │ ├── notifications.dart │ └── profile.dart │ └── widgets │ ├── animations │ ├── fade_page_route.dart │ └── type_write.dart │ ├── chat_bubble.dart │ ├── chat_item.dart │ ├── custom_button.dart │ ├── custom_text_field.dart │ ├── icon_badge.dart │ └── post_item.dart ├── linux └── flutter │ ├── ephemeral │ └── .plugin_symlinks │ │ └── path_provider_linux │ ├── generated_plugin_registrant.cc │ ├── generated_plugin_registrant.h │ └── generated_plugins.cmake ├── macos ├── .gitignore ├── Flutter │ ├── Flutter-Debug.xcconfig │ ├── Flutter-Release.xcconfig │ └── GeneratedPluginRegistrant.swift ├── Podfile ├── Runner.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata │ │ └── xcschemes │ │ └── Runner.xcscheme ├── Runner.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist └── Runner │ ├── AppDelegate.swift │ ├── Assets.xcassets │ └── AppIcon.appiconset │ │ ├── Contents.json │ │ ├── app_icon_1024.png │ │ ├── app_icon_128.png │ │ ├── app_icon_16.png │ │ ├── app_icon_256.png │ │ ├── app_icon_32.png │ │ ├── app_icon_512.png │ │ └── app_icon_64.png │ ├── Base.lproj │ └── MainMenu.xib │ ├── Configs │ ├── AppInfo.xcconfig │ ├── Debug.xcconfig │ ├── Release.xcconfig │ └── Warnings.xcconfig │ ├── DebugProfile.entitlements │ ├── Info.plist │ ├── MainFlutterWindow.swift │ └── Release.entitlements ├── pubspec.lock ├── pubspec.yaml ├── ss ├── 1.png ├── 10.png ├── 11.png ├── 12.png ├── 13.png ├── 14.png ├── 2.png ├── 3.png ├── 4.png ├── 5.png ├── 6.png ├── 7.png ├── 8.png └── 9.png ├── test └── widget_test.dart ├── web ├── favicon.png ├── icons │ ├── Icon-192.png │ └── Icon-512.png ├── index.html └── manifest.json └── windows └── flutter └── ephemeral └── .plugin_symlinks └── path_provider_windows /.flutter-plugins-dependencies: -------------------------------------------------------------------------------- 1 | {"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"path_provider_foundation","path":"/Users/jideguru/.pub-cache/hosted/pub.dev/path_provider_foundation-2.2.4/","shared_darwin_source":true,"native_build":true,"dependencies":[]}],"android":[{"name":"path_provider_android","path":"/Users/jideguru/.pub-cache/hosted/pub.dev/path_provider_android-2.0.27/","native_build":true,"dependencies":[]}],"macos":[{"name":"path_provider_foundation","path":"/Users/jideguru/.pub-cache/hosted/pub.dev/path_provider_foundation-2.2.4/","shared_darwin_source":true,"native_build":true,"dependencies":[]}],"linux":[{"name":"path_provider_linux","path":"/Users/jideguru/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.11/","native_build":false,"dependencies":[]}],"windows":[{"name":"path_provider_windows","path":"/Users/jideguru/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.7/","native_build":false,"dependencies":[]}],"web":[]},"dependencyGraph":[{"name":"path_provider","dependencies":["path_provider_android","path_provider_foundation","path_provider_linux","path_provider_windows"]},{"name":"path_provider_android","dependencies":[]},{"name":"path_provider_foundation","dependencies":[]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_windows","dependencies":[]}],"date_created":"2023-07-18 00:48:47.900504","version":"3.10.6"} -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: jideguru 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 13 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | 12 | # IntelliJ related 13 | *.iml 14 | *.ipr 15 | *.iws 16 | .idea/ 17 | 18 | # Visual Studio Code related 19 | .vscode/ 20 | 21 | # Flutter/Dart/Pub related 22 | **/doc/api/ 23 | .dart_tool/ 24 | .flutter-plugins 25 | .packages 26 | .pub-cache/ 27 | .pub/ 28 | /build/ 29 | 30 | # Android related 31 | **/android/**/gradle-wrapper.jar 32 | **/android/.gradle 33 | **/android/captures/ 34 | **/android/gradlew 35 | **/android/gradlew.bat 36 | **/android/local.properties 37 | **/android/**/GeneratedPluginRegistrant.java 38 | 39 | # iOS/XCode related 40 | **/ios/**/*.mode1v3 41 | **/ios/**/*.mode2v3 42 | **/ios/**/*.moved-aside 43 | **/ios/**/*.pbxuser 44 | **/ios/**/*.perspectivev3 45 | **/ios/**/*sync/ 46 | **/ios/**/.sconsign.dblite 47 | **/ios/**/.tags* 48 | **/ios/**/.vagrant/ 49 | **/ios/**/DerivedData/ 50 | **/ios/**/Icon? 51 | **/ios/**/Pods/ 52 | **/ios/**/.symlinks/ 53 | **/ios/**/profile 54 | **/ios/**/xcuserdata 55 | **/ios/.generated/ 56 | **/ios/Flutter/App.framework 57 | **/ios/Flutter/Flutter.framework 58 | **/ios/Flutter/Generated.xcconfig 59 | **/ios/Flutter/app.flx 60 | **/ios/Flutter/app.zip 61 | **/ios/Flutter/flutter_assets/ 62 | **/ios/ServiceDefinitions.json 63 | **/ios/Runner/GeneratedPluginRegistrant.* 64 | 65 | # Exceptions to above rules. 66 | !**/ios/**/default.mode1v3 67 | !**/ios/**/default.mode2v3 68 | !**/ios/**/default.pbxuser 69 | !**/ios/**/default.perspectivev3 70 | !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages 71 | -------------------------------------------------------------------------------- /.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: 7a4c33425ddd78c54aba07d86f3f9a4a0051769b 8 | channel: stable 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 2 | Version 2, December 2004 3 | 4 | Copyright (C) 2019 JideGuru 5 | 6 | Everyone is permitted to copy and distribute verbatim or modified 7 | copies of this license document, and changing it is allowed as long 8 | as the name is changed. 9 | 10 | DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 11 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 12 | 13 | 0. You just DO WHAT THE FUCK YOU WANT TO. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 🔥🔥 Flutter Social App Concept [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) [![Twitter Follow](https://img.shields.io/twitter/follow/iamjideguru.svg?style=social)](https://twitter.com/iamjideguru) 2 | Flutter representation of a Social App Concept i found on Uplabs. 3 | 4 | Star⭐ the repo if you like what you see😉. 5 | 6 | 7 | Images are from [Unsplash](https://unsplash.com) 8 | 9 | 10 | 11 | [Link to Mockup](https://www.ls.graphics/free/simple-iphone-x-mockups) 12 | 13 | [![Twitter Follow](https://img.shields.io/twitter/follow/iamjideguru.svg?style=social)](https://twitter.com/iamjideguru) 14 | 15 | ## ✨ Requirements 16 | * Any Operating System (ie. MacOS X, Linux, Windows) 17 | * Any IDE with Flutter SDK installed (ie. IntelliJ, Android Studio, VSCode etc) 18 | * A little knowledge of Dart and Flutter 19 | * A brain to think 🤓🤓 20 | 21 | 22 | ## 📸 ScreenShots 23 | 24 | 25 | 26 | 27 | | Light| Dark| 28 | |------|-------| 29 | ||| 30 | ||| 31 | ||| 32 | ||| 33 | ||| 34 | ||| 35 | 36 | 37 | ## 🌗 Dark theme 38 | Adapts to device theme 39 | 40 | ## 🤓 Author(s) 41 | **Olusegun Festus Babajide** [![Twitter Follow](https://img.shields.io/twitter/follow/iamjideguru.svg?style=social)](https://twitter.com/iamjideguru) 42 | 43 | ## 🔖 LICENCE 44 | [WTFPL](http://www.wtfpl.net/about/) 45 | -------------------------------------------------------------------------------- /android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | 9 | # Remember to never publicly share your keystore. 10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app 11 | key.properties 12 | -------------------------------------------------------------------------------- /android/app/build.gradle: -------------------------------------------------------------------------------- 1 | def localProperties = new Properties() 2 | def localPropertiesFile = rootProject.file('local.properties') 3 | if (localPropertiesFile.exists()) { 4 | localPropertiesFile.withReader('UTF-8') { reader -> 5 | localProperties.load(reader) 6 | } 7 | } 8 | 9 | def flutterRoot = localProperties.getProperty('flutter.sdk') 10 | if (flutterRoot == null) { 11 | throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") 12 | } 13 | 14 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode') 15 | if (flutterVersionCode == null) { 16 | flutterVersionCode = '1' 17 | } 18 | 19 | def flutterVersionName = localProperties.getProperty('flutter.versionName') 20 | if (flutterVersionName == null) { 21 | flutterVersionName = '1.0' 22 | } 23 | 24 | apply plugin: 'com.android.application' 25 | apply plugin: 'kotlin-android' 26 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" 27 | 28 | android { 29 | compileSdkVersion 29 30 | 31 | sourceSets { 32 | main.java.srcDirs += 'src/main/kotlin' 33 | } 34 | 35 | lintOptions { 36 | disable 'InvalidPackage' 37 | } 38 | 39 | defaultConfig { 40 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). 41 | applicationId "dev.jideguru.FlutterSocialAppUIKit" 42 | minSdkVersion 16 43 | targetSdkVersion 29 44 | versionCode flutterVersionCode.toInteger() 45 | versionName flutterVersionName 46 | } 47 | 48 | buildTypes { 49 | release { 50 | // TODO: Add your own signing config for the release build. 51 | // Signing with the debug keys for now, so `flutter run --release` works. 52 | signingConfig signingConfigs.debug 53 | } 54 | } 55 | } 56 | 57 | flutter { 58 | source '../..' 59 | } 60 | 61 | dependencies { 62 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" 63 | } 64 | -------------------------------------------------------------------------------- /android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 13 | 17 | 21 | 26 | 30 | 31 | 32 | 33 | 34 | 35 | 37 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /android/app/src/main/kotlin/dev/jideguru/FlutterSocialAppUIKit/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package dev.jideguru.FlutterSocialAppUIKit 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/values-night/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext.kotlin_version = '1.3.50' 3 | repositories { 4 | google() 5 | jcenter() 6 | } 7 | 8 | dependencies { 9 | classpath 'com.android.tools.build:gradle:3.5.0' 10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 11 | } 12 | } 13 | 14 | allprojects { 15 | repositories { 16 | google() 17 | jcenter() 18 | } 19 | } 20 | 21 | rootProject.buildDir = '../build' 22 | subprojects { 23 | project.buildDir = "${rootProject.buildDir}/${project.name}" 24 | } 25 | subprojects { 26 | project.evaluationDependsOn(':app') 27 | } 28 | 29 | task clean(type: Delete) { 30 | delete rootProject.buildDir 31 | } 32 | -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip 7 | -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties") 4 | def properties = new Properties() 5 | 6 | assert localPropertiesFile.exists() 7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } 8 | 9 | def flutterSdkPath = properties.getProperty("flutter.sdk") 10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties" 11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" 12 | -------------------------------------------------------------------------------- /assets/images/cm0.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/assets/images/cm0.jpeg -------------------------------------------------------------------------------- /assets/images/cm1.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/assets/images/cm1.jpeg -------------------------------------------------------------------------------- /assets/images/cm2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/assets/images/cm2.jpeg -------------------------------------------------------------------------------- /assets/images/cm3.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/assets/images/cm3.jpeg -------------------------------------------------------------------------------- /assets/images/cm4.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/assets/images/cm4.jpeg -------------------------------------------------------------------------------- /assets/images/cm5.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/assets/images/cm5.jpeg -------------------------------------------------------------------------------- /assets/images/cm6.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/assets/images/cm6.jpeg -------------------------------------------------------------------------------- /assets/images/cm7.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/assets/images/cm7.jpeg -------------------------------------------------------------------------------- /assets/images/cm8.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/assets/images/cm8.jpeg -------------------------------------------------------------------------------- /assets/images/cm9.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/assets/images/cm9.jpeg -------------------------------------------------------------------------------- /ios/.gitignore: -------------------------------------------------------------------------------- 1 | *.mode1v3 2 | *.mode2v3 3 | *.moved-aside 4 | *.pbxuser 5 | *.perspectivev3 6 | **/*sync/ 7 | .sconsign.dblite 8 | .tags* 9 | **/.vagrant/ 10 | **/DerivedData/ 11 | Icon? 12 | **/Pods/ 13 | **/.symlinks/ 14 | profile 15 | xcuserdata 16 | **/.generated/ 17 | Flutter/App.framework 18 | Flutter/Flutter.framework 19 | Flutter/Flutter.podspec 20 | Flutter/Generated.xcconfig 21 | Flutter/app.flx 22 | Flutter/app.zip 23 | Flutter/flutter_assets/ 24 | Flutter/flutter_export_environment.sh 25 | ServiceDefinitions.json 26 | Runner/GeneratedPluginRegistrant.* 27 | 28 | # Exceptions to above rules. 29 | !default.mode1v3 30 | !default.mode2v3 31 | !default.pbxuser 32 | !default.perspectivev3 33 | -------------------------------------------------------------------------------- /ios/Flutter/.last_build_id: -------------------------------------------------------------------------------- 1 | 6d6473c7203d5715db193f2279460670 -------------------------------------------------------------------------------- /ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 11.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /ios/Podfile: -------------------------------------------------------------------------------- 1 | # Uncomment this line to define a global platform for your project 2 | # platform :ios, '11.0' 3 | 4 | # CocoaPods analytics sends network stats synchronously affecting flutter build latency. 5 | ENV['COCOAPODS_DISABLE_STATS'] = 'true' 6 | 7 | project 'Runner', { 8 | 'Debug' => :debug, 9 | 'Profile' => :release, 10 | 'Release' => :release, 11 | } 12 | 13 | def flutter_root 14 | generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) 15 | unless File.exist?(generated_xcode_build_settings_path) 16 | raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" 17 | end 18 | 19 | File.foreach(generated_xcode_build_settings_path) do |line| 20 | matches = line.match(/FLUTTER_ROOT\=(.*)/) 21 | return matches[1].strip if matches 22 | end 23 | raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" 24 | end 25 | 26 | require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) 27 | 28 | flutter_ios_podfile_setup 29 | 30 | target 'Runner' do 31 | use_frameworks! 32 | use_modular_headers! 33 | 34 | flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) 35 | end 36 | 37 | post_install do |installer| 38 | installer.pods_project.targets.each do |target| 39 | flutter_additional_ios_build_settings(target) 40 | end 41 | end 42 | -------------------------------------------------------------------------------- /ios/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Flutter (1.0.0) 3 | - path_provider_foundation (0.0.1): 4 | - Flutter 5 | - FlutterMacOS 6 | 7 | DEPENDENCIES: 8 | - Flutter (from `Flutter`) 9 | - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) 10 | 11 | EXTERNAL SOURCES: 12 | Flutter: 13 | :path: Flutter 14 | path_provider_foundation: 15 | :path: ".symlinks/plugins/path_provider_foundation/darwin" 16 | 17 | SPEC CHECKSUMS: 18 | Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 19 | path_provider_foundation: 29f094ae23ebbca9d3d0cec13889cd9060c0e943 20 | 21 | PODFILE CHECKSUM: ef19549a9bc3046e7bb7d2fab4d021637c0c58a3 22 | 23 | COCOAPODS: 1.11.3 24 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 54; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 11 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 12 | 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 13 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 14 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 15 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; 16 | D79354DC71965CC69B4EAB93 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E6F99BD34F4CD2EEE153E467 /* Pods_Runner.framework */; }; 17 | /* End PBXBuildFile section */ 18 | 19 | /* Begin PBXCopyFilesBuildPhase section */ 20 | 9705A1C41CF9048500538489 /* Embed Frameworks */ = { 21 | isa = PBXCopyFilesBuildPhase; 22 | buildActionMask = 2147483647; 23 | dstPath = ""; 24 | dstSubfolderSpec = 10; 25 | files = ( 26 | ); 27 | name = "Embed Frameworks"; 28 | runOnlyForDeploymentPostprocessing = 0; 29 | }; 30 | /* End PBXCopyFilesBuildPhase section */ 31 | 32 | /* Begin PBXFileReference section */ 33 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 34 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 35 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 36 | 62057C5DE4B0B779208B8C9A /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 37 | 623672B3499667CF9C708F91 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; 38 | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 39 | 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 40 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 41 | 7C45B16FC0D095A4FFFF1510 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 42 | 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 43 | 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 44 | 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; 45 | 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 46 | 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 47 | 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 48 | 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 49 | E6F99BD34F4CD2EEE153E467 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 50 | /* End PBXFileReference section */ 51 | 52 | /* Begin PBXFrameworksBuildPhase section */ 53 | 97C146EB1CF9000F007C117D /* Frameworks */ = { 54 | isa = PBXFrameworksBuildPhase; 55 | buildActionMask = 2147483647; 56 | files = ( 57 | D79354DC71965CC69B4EAB93 /* Pods_Runner.framework in Frameworks */, 58 | ); 59 | runOnlyForDeploymentPostprocessing = 0; 60 | }; 61 | /* End PBXFrameworksBuildPhase section */ 62 | 63 | /* Begin PBXGroup section */ 64 | 0FC954B6EBB7140B08E41EA8 /* Pods */ = { 65 | isa = PBXGroup; 66 | children = ( 67 | 623672B3499667CF9C708F91 /* Pods-Runner.debug.xcconfig */, 68 | 62057C5DE4B0B779208B8C9A /* Pods-Runner.release.xcconfig */, 69 | 7C45B16FC0D095A4FFFF1510 /* Pods-Runner.profile.xcconfig */, 70 | ); 71 | name = Pods; 72 | path = Pods; 73 | sourceTree = ""; 74 | }; 75 | 9740EEB11CF90186004384FC /* Flutter */ = { 76 | isa = PBXGroup; 77 | children = ( 78 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, 79 | 9740EEB21CF90195004384FC /* Debug.xcconfig */, 80 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, 81 | 9740EEB31CF90195004384FC /* Generated.xcconfig */, 82 | ); 83 | name = Flutter; 84 | sourceTree = ""; 85 | }; 86 | 97C146E51CF9000F007C117D = { 87 | isa = PBXGroup; 88 | children = ( 89 | 9740EEB11CF90186004384FC /* Flutter */, 90 | 97C146F01CF9000F007C117D /* Runner */, 91 | 97C146EF1CF9000F007C117D /* Products */, 92 | 0FC954B6EBB7140B08E41EA8 /* Pods */, 93 | D49513611C86D5420071D58A /* Frameworks */, 94 | ); 95 | sourceTree = ""; 96 | }; 97 | 97C146EF1CF9000F007C117D /* Products */ = { 98 | isa = PBXGroup; 99 | children = ( 100 | 97C146EE1CF9000F007C117D /* Runner.app */, 101 | ); 102 | name = Products; 103 | sourceTree = ""; 104 | }; 105 | 97C146F01CF9000F007C117D /* Runner */ = { 106 | isa = PBXGroup; 107 | children = ( 108 | 97C146FA1CF9000F007C117D /* Main.storyboard */, 109 | 97C146FD1CF9000F007C117D /* Assets.xcassets */, 110 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, 111 | 97C147021CF9000F007C117D /* Info.plist */, 112 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, 113 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, 114 | 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, 115 | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, 116 | ); 117 | path = Runner; 118 | sourceTree = ""; 119 | }; 120 | D49513611C86D5420071D58A /* Frameworks */ = { 121 | isa = PBXGroup; 122 | children = ( 123 | E6F99BD34F4CD2EEE153E467 /* Pods_Runner.framework */, 124 | ); 125 | name = Frameworks; 126 | sourceTree = ""; 127 | }; 128 | /* End PBXGroup section */ 129 | 130 | /* Begin PBXNativeTarget section */ 131 | 97C146ED1CF9000F007C117D /* Runner */ = { 132 | isa = PBXNativeTarget; 133 | buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; 134 | buildPhases = ( 135 | 0F5573C517BE68BB0057C96B /* [CP] Check Pods Manifest.lock */, 136 | 9740EEB61CF901F6004384FC /* Run Script */, 137 | 97C146EA1CF9000F007C117D /* Sources */, 138 | 97C146EB1CF9000F007C117D /* Frameworks */, 139 | 97C146EC1CF9000F007C117D /* Resources */, 140 | 9705A1C41CF9048500538489 /* Embed Frameworks */, 141 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */, 142 | 8934378D0CF38AE6332C0866 /* [CP] Embed Pods Frameworks */, 143 | ); 144 | buildRules = ( 145 | ); 146 | dependencies = ( 147 | ); 148 | name = Runner; 149 | productName = Runner; 150 | productReference = 97C146EE1CF9000F007C117D /* Runner.app */; 151 | productType = "com.apple.product-type.application"; 152 | }; 153 | /* End PBXNativeTarget section */ 154 | 155 | /* Begin PBXProject section */ 156 | 97C146E61CF9000F007C117D /* Project object */ = { 157 | isa = PBXProject; 158 | attributes = { 159 | LastUpgradeCheck = 1300; 160 | ORGANIZATIONNAME = ""; 161 | TargetAttributes = { 162 | 97C146ED1CF9000F007C117D = { 163 | CreatedOnToolsVersion = 7.3.1; 164 | LastSwiftMigration = 1100; 165 | }; 166 | }; 167 | }; 168 | buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; 169 | compatibilityVersion = "Xcode 9.3"; 170 | developmentRegion = en; 171 | hasScannedForEncodings = 0; 172 | knownRegions = ( 173 | en, 174 | Base, 175 | ); 176 | mainGroup = 97C146E51CF9000F007C117D; 177 | productRefGroup = 97C146EF1CF9000F007C117D /* Products */; 178 | projectDirPath = ""; 179 | projectRoot = ""; 180 | targets = ( 181 | 97C146ED1CF9000F007C117D /* Runner */, 182 | ); 183 | }; 184 | /* End PBXProject section */ 185 | 186 | /* Begin PBXResourcesBuildPhase section */ 187 | 97C146EC1CF9000F007C117D /* Resources */ = { 188 | isa = PBXResourcesBuildPhase; 189 | buildActionMask = 2147483647; 190 | files = ( 191 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, 192 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, 193 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, 194 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, 195 | ); 196 | runOnlyForDeploymentPostprocessing = 0; 197 | }; 198 | /* End PBXResourcesBuildPhase section */ 199 | 200 | /* Begin PBXShellScriptBuildPhase section */ 201 | 0F5573C517BE68BB0057C96B /* [CP] Check Pods Manifest.lock */ = { 202 | isa = PBXShellScriptBuildPhase; 203 | buildActionMask = 2147483647; 204 | files = ( 205 | ); 206 | inputFileListPaths = ( 207 | ); 208 | inputPaths = ( 209 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 210 | "${PODS_ROOT}/Manifest.lock", 211 | ); 212 | name = "[CP] Check Pods Manifest.lock"; 213 | outputFileListPaths = ( 214 | ); 215 | outputPaths = ( 216 | "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", 217 | ); 218 | runOnlyForDeploymentPostprocessing = 0; 219 | shellPath = /bin/sh; 220 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; 221 | showEnvVarsInLog = 0; 222 | }; 223 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { 224 | isa = PBXShellScriptBuildPhase; 225 | alwaysOutOfDate = 1; 226 | buildActionMask = 2147483647; 227 | files = ( 228 | ); 229 | inputPaths = ( 230 | "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", 231 | ); 232 | name = "Thin Binary"; 233 | outputPaths = ( 234 | ); 235 | runOnlyForDeploymentPostprocessing = 0; 236 | shellPath = /bin/sh; 237 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; 238 | }; 239 | 8934378D0CF38AE6332C0866 /* [CP] Embed Pods Frameworks */ = { 240 | isa = PBXShellScriptBuildPhase; 241 | buildActionMask = 2147483647; 242 | files = ( 243 | ); 244 | inputFileListPaths = ( 245 | "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", 246 | ); 247 | name = "[CP] Embed Pods Frameworks"; 248 | outputFileListPaths = ( 249 | "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", 250 | ); 251 | runOnlyForDeploymentPostprocessing = 0; 252 | shellPath = /bin/sh; 253 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; 254 | showEnvVarsInLog = 0; 255 | }; 256 | 9740EEB61CF901F6004384FC /* Run Script */ = { 257 | isa = PBXShellScriptBuildPhase; 258 | alwaysOutOfDate = 1; 259 | buildActionMask = 2147483647; 260 | files = ( 261 | ); 262 | inputPaths = ( 263 | ); 264 | name = "Run Script"; 265 | outputPaths = ( 266 | ); 267 | runOnlyForDeploymentPostprocessing = 0; 268 | shellPath = /bin/sh; 269 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; 270 | }; 271 | /* End PBXShellScriptBuildPhase section */ 272 | 273 | /* Begin PBXSourcesBuildPhase section */ 274 | 97C146EA1CF9000F007C117D /* Sources */ = { 275 | isa = PBXSourcesBuildPhase; 276 | buildActionMask = 2147483647; 277 | files = ( 278 | 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, 279 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, 280 | ); 281 | runOnlyForDeploymentPostprocessing = 0; 282 | }; 283 | /* End PBXSourcesBuildPhase section */ 284 | 285 | /* Begin PBXVariantGroup section */ 286 | 97C146FA1CF9000F007C117D /* Main.storyboard */ = { 287 | isa = PBXVariantGroup; 288 | children = ( 289 | 97C146FB1CF9000F007C117D /* Base */, 290 | ); 291 | name = Main.storyboard; 292 | sourceTree = ""; 293 | }; 294 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { 295 | isa = PBXVariantGroup; 296 | children = ( 297 | 97C147001CF9000F007C117D /* Base */, 298 | ); 299 | name = LaunchScreen.storyboard; 300 | sourceTree = ""; 301 | }; 302 | /* End PBXVariantGroup section */ 303 | 304 | /* Begin XCBuildConfiguration section */ 305 | 249021D3217E4FDB00AE95B9 /* Profile */ = { 306 | isa = XCBuildConfiguration; 307 | buildSettings = { 308 | ALWAYS_SEARCH_USER_PATHS = NO; 309 | CLANG_ANALYZER_NONNULL = YES; 310 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 311 | CLANG_CXX_LIBRARY = "libc++"; 312 | CLANG_ENABLE_MODULES = YES; 313 | CLANG_ENABLE_OBJC_ARC = YES; 314 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 315 | CLANG_WARN_BOOL_CONVERSION = YES; 316 | CLANG_WARN_COMMA = YES; 317 | CLANG_WARN_CONSTANT_CONVERSION = YES; 318 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 319 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 320 | CLANG_WARN_EMPTY_BODY = YES; 321 | CLANG_WARN_ENUM_CONVERSION = YES; 322 | CLANG_WARN_INFINITE_RECURSION = YES; 323 | CLANG_WARN_INT_CONVERSION = YES; 324 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 325 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 326 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 327 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 328 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 329 | CLANG_WARN_STRICT_PROTOTYPES = YES; 330 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 331 | CLANG_WARN_UNREACHABLE_CODE = YES; 332 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 333 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 334 | COPY_PHASE_STRIP = NO; 335 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 336 | ENABLE_NS_ASSERTIONS = NO; 337 | ENABLE_STRICT_OBJC_MSGSEND = YES; 338 | GCC_C_LANGUAGE_STANDARD = gnu99; 339 | GCC_NO_COMMON_BLOCKS = YES; 340 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 341 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 342 | GCC_WARN_UNDECLARED_SELECTOR = YES; 343 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 344 | GCC_WARN_UNUSED_FUNCTION = YES; 345 | GCC_WARN_UNUSED_VARIABLE = YES; 346 | IPHONEOS_DEPLOYMENT_TARGET = 11.0; 347 | MTL_ENABLE_DEBUG_INFO = NO; 348 | SDKROOT = iphoneos; 349 | SUPPORTED_PLATFORMS = iphoneos; 350 | TARGETED_DEVICE_FAMILY = "1,2"; 351 | VALIDATE_PRODUCT = YES; 352 | }; 353 | name = Profile; 354 | }; 355 | 249021D4217E4FDB00AE95B9 /* Profile */ = { 356 | isa = XCBuildConfiguration; 357 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 358 | buildSettings = { 359 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 360 | CLANG_ENABLE_MODULES = YES; 361 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 362 | ENABLE_BITCODE = NO; 363 | FRAMEWORK_SEARCH_PATHS = ( 364 | "$(inherited)", 365 | "$(PROJECT_DIR)/Flutter", 366 | ); 367 | INFOPLIST_FILE = Runner/Info.plist; 368 | LD_RUNPATH_SEARCH_PATHS = ( 369 | "$(inherited)", 370 | "@executable_path/Frameworks", 371 | ); 372 | LIBRARY_SEARCH_PATHS = ( 373 | "$(inherited)", 374 | "$(PROJECT_DIR)/Flutter", 375 | ); 376 | PRODUCT_BUNDLE_IDENTIFIER = dev.jideguru.FlutterSocialAppUIKit; 377 | PRODUCT_NAME = "$(TARGET_NAME)"; 378 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; 379 | SWIFT_VERSION = 5.0; 380 | VERSIONING_SYSTEM = "apple-generic"; 381 | }; 382 | name = Profile; 383 | }; 384 | 97C147031CF9000F007C117D /* Debug */ = { 385 | isa = XCBuildConfiguration; 386 | buildSettings = { 387 | ALWAYS_SEARCH_USER_PATHS = NO; 388 | CLANG_ANALYZER_NONNULL = YES; 389 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 390 | CLANG_CXX_LIBRARY = "libc++"; 391 | CLANG_ENABLE_MODULES = YES; 392 | CLANG_ENABLE_OBJC_ARC = YES; 393 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 394 | CLANG_WARN_BOOL_CONVERSION = YES; 395 | CLANG_WARN_COMMA = YES; 396 | CLANG_WARN_CONSTANT_CONVERSION = YES; 397 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 398 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 399 | CLANG_WARN_EMPTY_BODY = YES; 400 | CLANG_WARN_ENUM_CONVERSION = YES; 401 | CLANG_WARN_INFINITE_RECURSION = YES; 402 | CLANG_WARN_INT_CONVERSION = YES; 403 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 404 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 405 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 406 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 407 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 408 | CLANG_WARN_STRICT_PROTOTYPES = YES; 409 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 410 | CLANG_WARN_UNREACHABLE_CODE = YES; 411 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 412 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 413 | COPY_PHASE_STRIP = NO; 414 | DEBUG_INFORMATION_FORMAT = dwarf; 415 | ENABLE_STRICT_OBJC_MSGSEND = YES; 416 | ENABLE_TESTABILITY = YES; 417 | GCC_C_LANGUAGE_STANDARD = gnu99; 418 | GCC_DYNAMIC_NO_PIC = NO; 419 | GCC_NO_COMMON_BLOCKS = YES; 420 | GCC_OPTIMIZATION_LEVEL = 0; 421 | GCC_PREPROCESSOR_DEFINITIONS = ( 422 | "DEBUG=1", 423 | "$(inherited)", 424 | ); 425 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 426 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 427 | GCC_WARN_UNDECLARED_SELECTOR = YES; 428 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 429 | GCC_WARN_UNUSED_FUNCTION = YES; 430 | GCC_WARN_UNUSED_VARIABLE = YES; 431 | IPHONEOS_DEPLOYMENT_TARGET = 11.0; 432 | MTL_ENABLE_DEBUG_INFO = YES; 433 | ONLY_ACTIVE_ARCH = YES; 434 | SDKROOT = iphoneos; 435 | TARGETED_DEVICE_FAMILY = "1,2"; 436 | }; 437 | name = Debug; 438 | }; 439 | 97C147041CF9000F007C117D /* Release */ = { 440 | isa = XCBuildConfiguration; 441 | buildSettings = { 442 | ALWAYS_SEARCH_USER_PATHS = NO; 443 | CLANG_ANALYZER_NONNULL = YES; 444 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 445 | CLANG_CXX_LIBRARY = "libc++"; 446 | CLANG_ENABLE_MODULES = YES; 447 | CLANG_ENABLE_OBJC_ARC = YES; 448 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 449 | CLANG_WARN_BOOL_CONVERSION = YES; 450 | CLANG_WARN_COMMA = YES; 451 | CLANG_WARN_CONSTANT_CONVERSION = YES; 452 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 453 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 454 | CLANG_WARN_EMPTY_BODY = YES; 455 | CLANG_WARN_ENUM_CONVERSION = YES; 456 | CLANG_WARN_INFINITE_RECURSION = YES; 457 | CLANG_WARN_INT_CONVERSION = YES; 458 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 459 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 460 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 461 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 462 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 463 | CLANG_WARN_STRICT_PROTOTYPES = YES; 464 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 465 | CLANG_WARN_UNREACHABLE_CODE = YES; 466 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 467 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 468 | COPY_PHASE_STRIP = NO; 469 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 470 | ENABLE_NS_ASSERTIONS = NO; 471 | ENABLE_STRICT_OBJC_MSGSEND = YES; 472 | GCC_C_LANGUAGE_STANDARD = gnu99; 473 | GCC_NO_COMMON_BLOCKS = YES; 474 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 475 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 476 | GCC_WARN_UNDECLARED_SELECTOR = YES; 477 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 478 | GCC_WARN_UNUSED_FUNCTION = YES; 479 | GCC_WARN_UNUSED_VARIABLE = YES; 480 | IPHONEOS_DEPLOYMENT_TARGET = 11.0; 481 | MTL_ENABLE_DEBUG_INFO = NO; 482 | SDKROOT = iphoneos; 483 | SUPPORTED_PLATFORMS = iphoneos; 484 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 485 | TARGETED_DEVICE_FAMILY = "1,2"; 486 | VALIDATE_PRODUCT = YES; 487 | }; 488 | name = Release; 489 | }; 490 | 97C147061CF9000F007C117D /* Debug */ = { 491 | isa = XCBuildConfiguration; 492 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; 493 | buildSettings = { 494 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 495 | CLANG_ENABLE_MODULES = YES; 496 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 497 | ENABLE_BITCODE = NO; 498 | FRAMEWORK_SEARCH_PATHS = ( 499 | "$(inherited)", 500 | "$(PROJECT_DIR)/Flutter", 501 | ); 502 | INFOPLIST_FILE = Runner/Info.plist; 503 | LD_RUNPATH_SEARCH_PATHS = ( 504 | "$(inherited)", 505 | "@executable_path/Frameworks", 506 | ); 507 | LIBRARY_SEARCH_PATHS = ( 508 | "$(inherited)", 509 | "$(PROJECT_DIR)/Flutter", 510 | ); 511 | PRODUCT_BUNDLE_IDENTIFIER = dev.jideguru.FlutterSocialAppUIKit; 512 | PRODUCT_NAME = "$(TARGET_NAME)"; 513 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; 514 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 515 | SWIFT_VERSION = 5.0; 516 | VERSIONING_SYSTEM = "apple-generic"; 517 | }; 518 | name = Debug; 519 | }; 520 | 97C147071CF9000F007C117D /* Release */ = { 521 | isa = XCBuildConfiguration; 522 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 523 | buildSettings = { 524 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 525 | CLANG_ENABLE_MODULES = YES; 526 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 527 | ENABLE_BITCODE = NO; 528 | FRAMEWORK_SEARCH_PATHS = ( 529 | "$(inherited)", 530 | "$(PROJECT_DIR)/Flutter", 531 | ); 532 | INFOPLIST_FILE = Runner/Info.plist; 533 | LD_RUNPATH_SEARCH_PATHS = ( 534 | "$(inherited)", 535 | "@executable_path/Frameworks", 536 | ); 537 | LIBRARY_SEARCH_PATHS = ( 538 | "$(inherited)", 539 | "$(PROJECT_DIR)/Flutter", 540 | ); 541 | PRODUCT_BUNDLE_IDENTIFIER = dev.jideguru.FlutterSocialAppUIKit; 542 | PRODUCT_NAME = "$(TARGET_NAME)"; 543 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; 544 | SWIFT_VERSION = 5.0; 545 | VERSIONING_SYSTEM = "apple-generic"; 546 | }; 547 | name = Release; 548 | }; 549 | /* End XCBuildConfiguration section */ 550 | 551 | /* Begin XCConfigurationList section */ 552 | 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { 553 | isa = XCConfigurationList; 554 | buildConfigurations = ( 555 | 97C147031CF9000F007C117D /* Debug */, 556 | 97C147041CF9000F007C117D /* Release */, 557 | 249021D3217E4FDB00AE95B9 /* Profile */, 558 | ); 559 | defaultConfigurationIsVisible = 0; 560 | defaultConfigurationName = Release; 561 | }; 562 | 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { 563 | isa = XCConfigurationList; 564 | buildConfigurations = ( 565 | 97C147061CF9000F007C117D /* Debug */, 566 | 97C147071CF9000F007C117D /* Release */, 567 | 249021D4217E4FDB00AE95B9 /* Profile */, 568 | ); 569 | defaultConfigurationIsVisible = 0; 570 | defaultConfigurationName = Release; 571 | }; 572 | /* End XCConfigurationList section */ 573 | }; 574 | rootObject = 97C146E61CF9000F007C117D /* Project object */; 575 | } 576 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 43 | 44 | 54 | 56 | 62 | 63 | 64 | 65 | 66 | 67 | 73 | 75 | 81 | 82 | 83 | 84 | 86 | 87 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import Flutter 3 | 4 | @UIApplicationMain 5 | @objc class AppDelegate: FlutterAppDelegate { 6 | override func application( 7 | _ application: UIApplication, 8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? 9 | ) -> Bool { 10 | GeneratedPluginRegistrant.register(with: self) 11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "20x20", 5 | "idiom" : "iphone", 6 | "filename" : "Icon-App-20x20@2x.png", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "size" : "20x20", 11 | "idiom" : "iphone", 12 | "filename" : "Icon-App-20x20@3x.png", 13 | "scale" : "3x" 14 | }, 15 | { 16 | "size" : "29x29", 17 | "idiom" : "iphone", 18 | "filename" : "Icon-App-29x29@1x.png", 19 | "scale" : "1x" 20 | }, 21 | { 22 | "size" : "29x29", 23 | "idiom" : "iphone", 24 | "filename" : "Icon-App-29x29@2x.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "29x29", 29 | "idiom" : "iphone", 30 | "filename" : "Icon-App-29x29@3x.png", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "size" : "40x40", 35 | "idiom" : "iphone", 36 | "filename" : "Icon-App-40x40@2x.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "40x40", 41 | "idiom" : "iphone", 42 | "filename" : "Icon-App-40x40@3x.png", 43 | "scale" : "3x" 44 | }, 45 | { 46 | "size" : "60x60", 47 | "idiom" : "iphone", 48 | "filename" : "Icon-App-60x60@2x.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "60x60", 53 | "idiom" : "iphone", 54 | "filename" : "Icon-App-60x60@3x.png", 55 | "scale" : "3x" 56 | }, 57 | { 58 | "size" : "20x20", 59 | "idiom" : "ipad", 60 | "filename" : "Icon-App-20x20@1x.png", 61 | "scale" : "1x" 62 | }, 63 | { 64 | "size" : "20x20", 65 | "idiom" : "ipad", 66 | "filename" : "Icon-App-20x20@2x.png", 67 | "scale" : "2x" 68 | }, 69 | { 70 | "size" : "29x29", 71 | "idiom" : "ipad", 72 | "filename" : "Icon-App-29x29@1x.png", 73 | "scale" : "1x" 74 | }, 75 | { 76 | "size" : "29x29", 77 | "idiom" : "ipad", 78 | "filename" : "Icon-App-29x29@2x.png", 79 | "scale" : "2x" 80 | }, 81 | { 82 | "size" : "40x40", 83 | "idiom" : "ipad", 84 | "filename" : "Icon-App-40x40@1x.png", 85 | "scale" : "1x" 86 | }, 87 | { 88 | "size" : "40x40", 89 | "idiom" : "ipad", 90 | "filename" : "Icon-App-40x40@2x.png", 91 | "scale" : "2x" 92 | }, 93 | { 94 | "size" : "76x76", 95 | "idiom" : "ipad", 96 | "filename" : "Icon-App-76x76@1x.png", 97 | "scale" : "1x" 98 | }, 99 | { 100 | "size" : "76x76", 101 | "idiom" : "ipad", 102 | "filename" : "Icon-App-76x76@2x.png", 103 | "scale" : "2x" 104 | }, 105 | { 106 | "size" : "83.5x83.5", 107 | "idiom" : "ipad", 108 | "filename" : "Icon-App-83.5x83.5@2x.png", 109 | "scale" : "2x" 110 | }, 111 | { 112 | "size" : "1024x1024", 113 | "idiom" : "ios-marketing", 114 | "filename" : "Icon-App-1024x1024@1x.png", 115 | "scale" : "1x" 116 | } 117 | ], 118 | "info" : { 119 | "version" : 1, 120 | "author" : "xcode" 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /ios/Runner/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /ios/Runner/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /ios/Runner/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | FlutterSocialAppUIKit 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | $(FLUTTER_BUILD_NAME) 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | $(FLUTTER_BUILD_NUMBER) 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIMainStoryboardFile 28 | Main 29 | UISupportedInterfaceOrientations 30 | 31 | UIInterfaceOrientationPortrait 32 | UIInterfaceOrientationLandscapeLeft 33 | UIInterfaceOrientationLandscapeRight 34 | 35 | UISupportedInterfaceOrientations~ipad 36 | 37 | UIInterfaceOrientationPortrait 38 | UIInterfaceOrientationPortraitUpsideDown 39 | UIInterfaceOrientationLandscapeLeft 40 | UIInterfaceOrientationLandscapeRight 41 | 42 | UIViewControllerBasedStatusBarAppearance 43 | 44 | CADisableMinimumFrameDurationOnPhone 45 | 46 | UIApplicationSupportsIndirectInputEvents 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /lib/app.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:google_fonts/google_fonts.dart'; 3 | import 'package:social_app_ui/util/const.dart'; 4 | import 'package:social_app_ui/util/theme_config.dart'; 5 | import 'package:social_app_ui/views/screens/auth/login.dart'; 6 | 7 | class MyApp extends StatelessWidget { 8 | @override 9 | Widget build(BuildContext context) { 10 | return MaterialApp( 11 | debugShowCheckedModeBanner: false, 12 | title: Constants.appName, 13 | theme: themeData(ThemeConfig.lightTheme), 14 | darkTheme: themeData(ThemeConfig.darkTheme), 15 | home: Login(), 16 | ); 17 | } 18 | 19 | ThemeData themeData(ThemeData theme) { 20 | return theme.copyWith( 21 | textTheme: GoogleFonts.sourceSansProTextTheme( 22 | theme.textTheme, 23 | ), 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/cupertino.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | import 'app.dart'; 5 | 6 | void main() async { 7 | runApp(MyApp()); 8 | } 9 | -------------------------------------------------------------------------------- /lib/util/animations.dart: -------------------------------------------------------------------------------- 1 | class AppAnimations { 2 | static String chatAnimation = 'assets/animations/chat-anim.json'; 3 | } -------------------------------------------------------------------------------- /lib/util/const.dart: -------------------------------------------------------------------------------- 1 | class Constants { 2 | static String appName = 'Chat App'; 3 | } 4 | -------------------------------------------------------------------------------- /lib/util/data.dart: -------------------------------------------------------------------------------- 1 | import 'dart:math'; 2 | 3 | Random random = Random(); 4 | List names = [ 5 | "Ling Waldner", 6 | "Gricelda Barrera", 7 | "Lenard Milton", 8 | "Bryant Marley", 9 | "Rosalva Sadberry", 10 | "Guadalupe Ratledge", 11 | "Brandy Gazda", 12 | "Kurt Toms", 13 | "Rosario Gathright", 14 | "Kim Delph", 15 | "Stacy Christensen", 16 | ]; 17 | 18 | List messages = [ 19 | "Hey, how are you doing?", 20 | "Are you available tomorrow?", 21 | "It's late. Go to bed!", 22 | "This cracked me up 😂😂", 23 | "Flutter Rocks!!!", 24 | "The last rocket🚀", 25 | "Griezmann signed for Barca❤️❤️", 26 | "Will you be attending the meetup tomorrow?", 27 | "Are you angry at something?", 28 | "Let's make a UI serie.", 29 | "Can i hear your voice?", 30 | ]; 31 | 32 | List notifs = [ 33 | "${names[random.nextInt(10)]} and ${random.nextInt(100)} others liked your post", 34 | "${names[random.nextInt(10)]} mentioned you in a comment", 35 | "${names[random.nextInt(10)]} shared your post", 36 | "${names[random.nextInt(10)]} commented on your post", 37 | "${names[random.nextInt(10)]} replied to your comment", 38 | "${names[random.nextInt(10)]} reacted to your comment", 39 | "${names[random.nextInt(10)]} asked you to join a Group️", 40 | "${names[random.nextInt(10)]} asked you to like a page", 41 | "You have memories with ${names[random.nextInt(10)]}", 42 | "${names[random.nextInt(10)]} Tagged you and ${random.nextInt(100)} others in a post", 43 | "${names[random.nextInt(10)]} Sent you a friend request", 44 | ]; 45 | 46 | List notifications = List.generate( 47 | 13, 48 | (index) => { 49 | "name": names[random.nextInt(10)], 50 | "dp": "assets/images/cm${random.nextInt(10)}.jpeg", 51 | "time": "${random.nextInt(50)} min ago", 52 | "notif": notifs[random.nextInt(10)] 53 | }); 54 | 55 | List posts = List.generate( 56 | 13, 57 | (index) => { 58 | "name": names[random.nextInt(10)], 59 | "dp": "assets/images/cm${random.nextInt(10)}.jpeg", 60 | "time": "${random.nextInt(50)} min ago", 61 | "img": "assets/images/cm${random.nextInt(10)}.jpeg" 62 | }); 63 | 64 | List chats = List.generate( 65 | 13, 66 | (index) => { 67 | "name": names[random.nextInt(10)], 68 | "dp": "assets/images/cm${random.nextInt(10)}.jpeg", 69 | "msg": messages[random.nextInt(10)], 70 | "counter": random.nextInt(20), 71 | "time": "${random.nextInt(50)} min ago", 72 | "isOnline": random.nextBool(), 73 | }); 74 | 75 | List groups = List.generate( 76 | 13, 77 | (index) => { 78 | "name": "Group ${random.nextInt(20)}", 79 | "dp": "assets/images/cm${random.nextInt(10)}.jpeg", 80 | "msg": messages[random.nextInt(10)], 81 | "counter": random.nextInt(20), 82 | "time": "${random.nextInt(50)} min ago", 83 | "isOnline": random.nextBool(), 84 | }); 85 | 86 | List types = ["text", "image"]; 87 | List conversation = List.generate( 88 | 10, 89 | (index) => { 90 | "username": "Group ${random.nextInt(20)}", 91 | "time": "${random.nextInt(50)} min ago", 92 | "type": types[random.nextInt(2)], 93 | "replyText": messages[random.nextInt(10)], 94 | "isMe": random.nextBool(), 95 | "isGroup": false, 96 | "isReply": random.nextBool(), 97 | }); 98 | 99 | List friends = List.generate( 100 | 13, 101 | (index) => { 102 | "name": names[random.nextInt(10)], 103 | "dp": "assets/images/cm${random.nextInt(10)}.jpeg", 104 | "status": "Anything could be here", 105 | "isAccept": random.nextBool(), 106 | }); 107 | -------------------------------------------------------------------------------- /lib/util/enum.dart: -------------------------------------------------------------------------------- 1 | enum FormMode{LOGIN, REGISTER, FORGOT_PASSWORD} -------------------------------------------------------------------------------- /lib/util/extensions.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/widgets.dart'; 2 | import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; 3 | 4 | extension AnimatedWidgetExtension on Widget { 5 | fadeInList(int index, bool isVertical) { 6 | double offset = 50.0; 7 | return AnimationConfiguration.staggeredList( 8 | position: index, 9 | duration: const Duration(milliseconds: 900), 10 | child: SlideAnimation( 11 | horizontalOffset: isVertical ? 0.0 : offset, 12 | verticalOffset: !isVertical ? 0.0 : offset, 13 | child: FadeInAnimation( 14 | child: this, 15 | ), 16 | ), 17 | ); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /lib/util/router.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:social_app_ui/views/widgets/animations/fade_page_route.dart'; 3 | 4 | class Navigate { 5 | static Future pushPage(BuildContext context, Widget page) async { 6 | return await Navigator.push( 7 | context, 8 | MaterialPageRoute( 9 | builder: (BuildContext context) { 10 | return page; 11 | }, 12 | ), 13 | ); 14 | } 15 | 16 | static pushPageDialog(BuildContext context, Widget page) async { 17 | return await Navigator.push( 18 | context, 19 | MaterialPageRoute( 20 | builder: (BuildContext context) { 21 | return page; 22 | }, 23 | fullscreenDialog: true, 24 | ), 25 | ); 26 | } 27 | 28 | static pushPageReplacement(BuildContext context, Widget page) async { 29 | return await Navigator.pushReplacement( 30 | context, 31 | MaterialPageRoute( 32 | builder: (BuildContext context) { 33 | return page; 34 | }, 35 | ), 36 | ); 37 | } 38 | 39 | static pushPageWithFadeAnimation(BuildContext context, Widget page) async { 40 | return await Navigator.pushReplacement( 41 | context, 42 | FadePageRoute( 43 | page, 44 | ), 45 | ); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /lib/util/theme_config.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class ThemeConfig { 4 | //Colors for theme 5 | static Color lightPrimary = Color(0xfffcfcff); 6 | static Color darkPrimary = Color(0xff1f1f1f); 7 | static Color lightAccent = Colors.blue; 8 | static Color darkAccent = Colors.lightBlue; 9 | static Color lightBG = Color(0xfffcfcff); 10 | static Color darkBG = Color(0xff121212); 11 | static Color badgeColor = Colors.red; 12 | 13 | static ThemeData lightTheme = ThemeData( 14 | primaryColor: lightPrimary, 15 | scaffoldBackgroundColor: lightBG, 16 | appBarTheme: AppBarTheme( 17 | backgroundColor: lightBG, 18 | elevation: 0, 19 | toolbarTextStyle: TextTheme( 20 | titleLarge: TextStyle( 21 | color: darkBG, 22 | fontSize: 18.0, 23 | fontWeight: FontWeight.w800, 24 | ), 25 | ).bodyMedium, 26 | titleTextStyle: TextTheme( 27 | titleLarge: TextStyle( 28 | color: darkBG, 29 | fontSize: 18.0, 30 | fontWeight: FontWeight.w800, 31 | ), 32 | ).titleLarge, 33 | ), 34 | colorScheme: ColorScheme.fromSwatch().copyWith( 35 | secondary: lightAccent, 36 | background: lightBG, 37 | brightness: Brightness.light, 38 | ), 39 | ); 40 | 41 | static ThemeData darkTheme = ThemeData( 42 | brightness: Brightness.dark, 43 | primaryColor: darkPrimary, 44 | scaffoldBackgroundColor: darkBG, 45 | appBarTheme: AppBarTheme( 46 | backgroundColor: darkBG, 47 | elevation: 0, 48 | toolbarTextStyle: TextTheme( 49 | titleLarge: TextStyle( 50 | color: lightBG, 51 | fontSize: 18.0, 52 | fontWeight: FontWeight.w800, 53 | ), 54 | ).bodyMedium, 55 | titleTextStyle: TextTheme( 56 | titleLarge: TextStyle( 57 | color: lightBG, 58 | fontSize: 18.0, 59 | fontWeight: FontWeight.w800, 60 | ), 61 | ).titleLarge, 62 | ), 63 | colorScheme: ColorScheme.fromSwatch().copyWith( 64 | secondary: darkAccent, 65 | background: darkBG, 66 | brightness: Brightness.dark, 67 | ), 68 | ); 69 | } 70 | -------------------------------------------------------------------------------- /lib/util/validations.dart: -------------------------------------------------------------------------------- 1 | class Validations { 2 | static String? validateName(String? value) { 3 | if (value == null || value.isEmpty) return 'Name is Required.'; 4 | final RegExp nameExp = new RegExp(r'^[A-za-zğüşöçİĞÜŞÖÇ ]+$'); 5 | if (!nameExp.hasMatch(value)) 6 | return 'Please enter only alphabetical characters.'; 7 | return null; 8 | } 9 | 10 | static String? validateEmail(String? value) { 11 | if (value == null || value.isEmpty) return 'Please enter an Email Address.'; 12 | final RegExp nameExp = new RegExp( 13 | r"^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,2" 14 | r"53}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,253}[a-z" 15 | r"A-Z0-9])?)*$"); 16 | if (!nameExp.hasMatch(value)) return 'Invalid email address'; 17 | return null; 18 | } 19 | 20 | static String? validatePassword(String? value) { 21 | if (value == null || value.isEmpty || value.length < 6) 22 | return 'Please enter a valid password.'; 23 | return null; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/views/screens/auth/login.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:lottie/lottie.dart'; 3 | import 'package:social_app_ui/util/animations.dart'; 4 | import 'package:social_app_ui/util/const.dart'; 5 | import 'package:social_app_ui/util/enum.dart'; 6 | import 'package:social_app_ui/util/router.dart'; 7 | import 'package:social_app_ui/util/validations.dart'; 8 | import 'package:social_app_ui/views/screens/main_screen.dart'; 9 | import 'package:social_app_ui/views/widgets/custom_button.dart'; 10 | import 'package:social_app_ui/views/widgets/custom_text_field.dart'; 11 | import 'package:social_app_ui/util/extensions.dart'; 12 | 13 | class Login extends StatefulWidget { 14 | @override 15 | _LoginState createState() => _LoginState(); 16 | } 17 | 18 | class _LoginState extends State { 19 | bool loading = false; 20 | bool validate = false; 21 | GlobalKey formKey = GlobalKey(); 22 | GlobalKey _scaffoldKey = GlobalKey(); 23 | String email = '', password = '', name = ''; 24 | FocusNode nameFN = FocusNode(); 25 | FocusNode emailFN = FocusNode(); 26 | FocusNode passFN = FocusNode(); 27 | FormMode formMode = FormMode.LOGIN; 28 | 29 | login() async { 30 | FormState form = formKey.currentState!; 31 | form.save(); 32 | Navigate.pushPageReplacement(context, MainScreen()); 33 | // if (!form.validate()) { 34 | // validate = true; 35 | // setState(() {}); 36 | // showInSnackBar('Please fix the errors in red before submitting.'); 37 | // } else { 38 | // Navigate.pushPageReplacement(context, MainScreen()); 39 | // } 40 | } 41 | 42 | void showInSnackBar(String value) { 43 | // _scaffoldKey.currentState?.removeCurrentSnackBar(); 44 | // _scaffoldKey.currentState?.showSnackBar(SnackBar(content: Text(value))); 45 | } 46 | 47 | @override 48 | Widget build(BuildContext context) { 49 | final screenWidth = MediaQuery.of(context).size.width; 50 | return Scaffold( 51 | key: _scaffoldKey, 52 | body: Container( 53 | child: Row( 54 | children: [ 55 | buildLottieContainer(), 56 | Expanded( 57 | child: AnimatedContainer( 58 | duration: Duration(milliseconds: 500), 59 | child: Center( 60 | child: Padding( 61 | padding: 62 | EdgeInsets.symmetric(horizontal: screenWidth * 0.1), 63 | child: buildFormContainer(), 64 | ), 65 | ), 66 | ), 67 | ), 68 | ], 69 | ), 70 | ), 71 | ); 72 | } 73 | 74 | buildLottieContainer() { 75 | final screenWidth = MediaQuery.of(context).size.width; 76 | return AnimatedContainer( 77 | width: screenWidth < 700 ? 0 : screenWidth * 0.5, 78 | duration: Duration(milliseconds: 500), 79 | color: Theme.of(context).colorScheme.secondary.withOpacity(0.3), 80 | child: Center( 81 | child: Lottie.asset( 82 | AppAnimations.chatAnimation, 83 | height: 400, 84 | fit: BoxFit.cover, 85 | ), 86 | ), 87 | ); 88 | } 89 | 90 | buildFormContainer() { 91 | return Column( 92 | mainAxisSize: MainAxisSize.min, 93 | mainAxisAlignment: MainAxisAlignment.center, 94 | crossAxisAlignment: CrossAxisAlignment.center, 95 | children: [ 96 | Text( 97 | '${Constants.appName}', 98 | style: TextStyle( 99 | fontSize: 40.0, 100 | fontWeight: FontWeight.bold, 101 | ), 102 | ).fadeInList(0, false), 103 | SizedBox(height: 70.0), 104 | Form( 105 | autovalidateMode: AutovalidateMode.onUserInteraction, 106 | key: formKey, 107 | child: buildForm(), 108 | ), 109 | Visibility( 110 | visible: formMode == FormMode.LOGIN, 111 | child: Column( 112 | children: [ 113 | SizedBox(height: 10.0), 114 | Align( 115 | alignment: Alignment.centerRight, 116 | child: TextButton( 117 | onPressed: () { 118 | formMode = FormMode.FORGOT_PASSWORD; 119 | setState(() {}); 120 | }, 121 | child: Text('Forgot Password?'), 122 | ), 123 | ), 124 | ], 125 | ), 126 | ).fadeInList(3, false), 127 | SizedBox(height: 20.0), 128 | buildButton(), 129 | Visibility( 130 | visible: formMode == FormMode.LOGIN, 131 | child: Row( 132 | mainAxisAlignment: MainAxisAlignment.center, 133 | children: [ 134 | Text('Don\'t have an account?'), 135 | TextButton( 136 | onPressed: () { 137 | formMode = FormMode.REGISTER; 138 | setState(() {}); 139 | }, 140 | child: Text('Register'), 141 | ), 142 | ], 143 | ), 144 | ).fadeInList(5, false), 145 | Visibility( 146 | visible: formMode != FormMode.LOGIN, 147 | child: Row( 148 | mainAxisAlignment: MainAxisAlignment.center, 149 | children: [ 150 | Text('Already have an account?'), 151 | TextButton( 152 | onPressed: () { 153 | formMode = FormMode.LOGIN; 154 | setState(() {}); 155 | }, 156 | child: Text('Login'), 157 | ), 158 | ], 159 | ), 160 | ), 161 | ], 162 | ); 163 | } 164 | 165 | buildForm() { 166 | return Column( 167 | mainAxisSize: MainAxisSize.min, 168 | children: [ 169 | Visibility( 170 | visible: formMode == FormMode.REGISTER, 171 | child: Column( 172 | children: [ 173 | CustomTextField( 174 | enabled: !loading, 175 | hintText: "Name", 176 | textInputAction: TextInputAction.next, 177 | validateFunction: Validations.validateName, 178 | onSaved: (String? val) { 179 | name = val ?? ''; 180 | }, 181 | focusNode: nameFN, 182 | nextFocusNode: emailFN, 183 | ), 184 | SizedBox(height: 20.0), 185 | ], 186 | ), 187 | ), 188 | CustomTextField( 189 | enabled: !loading, 190 | hintText: "Email", 191 | textInputAction: TextInputAction.next, 192 | validateFunction: Validations.validateEmail, 193 | onSaved: (String? val) { 194 | email = val ?? ''; 195 | }, 196 | focusNode: emailFN, 197 | nextFocusNode: passFN, 198 | ).fadeInList(1, false), 199 | Visibility( 200 | visible: formMode != FormMode.FORGOT_PASSWORD, 201 | child: Column( 202 | children: [ 203 | SizedBox(height: 20.0), 204 | CustomTextField( 205 | enabled: !loading, 206 | hintText: "Password", 207 | textInputAction: TextInputAction.done, 208 | validateFunction: Validations.validatePassword, 209 | submitAction: login, 210 | obscureText: true, 211 | onSaved: (String? val) { 212 | password = val ?? ''; 213 | }, 214 | focusNode: passFN, 215 | ), 216 | ], 217 | ), 218 | ).fadeInList(2, false), 219 | ], 220 | ); 221 | } 222 | 223 | buildButton() { 224 | return loading 225 | ? Center(child: CircularProgressIndicator()) 226 | : CustomButton( 227 | label: "Submit", 228 | onPressed: () => login(), 229 | ).fadeInList(4, false); 230 | } 231 | } 232 | -------------------------------------------------------------------------------- /lib/views/screens/chat/chats.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:social_app_ui/views/widgets/chat_item.dart'; 3 | import 'package:social_app_ui/util/data.dart'; 4 | 5 | class Chats extends StatefulWidget { 6 | @override 7 | _ChatsState createState() => _ChatsState(); 8 | } 9 | 10 | class _ChatsState extends State 11 | with SingleTickerProviderStateMixin, AutomaticKeepAliveClientMixin { 12 | late TabController _tabController; 13 | 14 | @override 15 | void initState() { 16 | super.initState(); 17 | _tabController = TabController(vsync: this, initialIndex: 0, length: 2); 18 | } 19 | 20 | @override 21 | Widget build(BuildContext context) { 22 | super.build(context); 23 | return Scaffold( 24 | appBar: AppBar( 25 | title: TextField( 26 | decoration: InputDecoration.collapsed( 27 | hintText: 'Search', 28 | ), 29 | ), 30 | actions: [ 31 | IconButton( 32 | icon: Icon( 33 | Icons.filter_list, 34 | ), 35 | onPressed: () {}, 36 | ), 37 | ], 38 | bottom: TabBar( 39 | controller: _tabController, 40 | indicatorColor: Theme.of(context).colorScheme.secondary, 41 | labelColor: Theme.of(context).colorScheme.secondary, 42 | unselectedLabelColor: Theme.of(context).textTheme.bodySmall?.color, 43 | isScrollable: false, 44 | tabs: [ 45 | Tab( 46 | text: "Message", 47 | ), 48 | Tab( 49 | text: "Groups", 50 | ), 51 | ], 52 | ), 53 | ), 54 | body: TabBarView( 55 | controller: _tabController, 56 | children: [ 57 | ListView.separated( 58 | padding: EdgeInsets.all(10), 59 | separatorBuilder: (BuildContext context, int index) { 60 | return Align( 61 | alignment: Alignment.centerRight, 62 | child: Container( 63 | height: 0.5, 64 | width: MediaQuery.of(context).size.width / 1.3, 65 | child: Divider(), 66 | ), 67 | ); 68 | }, 69 | itemCount: chats.length, 70 | itemBuilder: (BuildContext context, int index) { 71 | Map chat = chats[index]; 72 | return ChatItem( 73 | dp: chat['dp'], 74 | name: chat['name'], 75 | isOnline: chat['isOnline'], 76 | counter: chat['counter'], 77 | msg: chat['msg'], 78 | time: chat['time'], 79 | ); 80 | }, 81 | ), 82 | ListView.separated( 83 | padding: EdgeInsets.all(10), 84 | separatorBuilder: (BuildContext context, int index) { 85 | return Align( 86 | alignment: Alignment.centerRight, 87 | child: Container( 88 | height: 0.5, 89 | width: MediaQuery.of(context).size.width / 1.3, 90 | child: Divider(), 91 | ), 92 | ); 93 | }, 94 | itemCount: groups.length, 95 | itemBuilder: (BuildContext context, int index) { 96 | Map chat = groups[index]; 97 | return ChatItem( 98 | dp: chat['dp'], 99 | name: chat['name'], 100 | isOnline: chat['isOnline'], 101 | counter: chat['counter'], 102 | msg: chat['msg'], 103 | time: chat['time'], 104 | ); 105 | }, 106 | ), 107 | ], 108 | ), 109 | floatingActionButton: FloatingActionButton( 110 | child: Icon( 111 | Icons.add, 112 | color: Colors.white, 113 | ), 114 | onPressed: () {}, 115 | ), 116 | ); 117 | } 118 | 119 | @override 120 | bool get wantKeepAlive => true; 121 | } 122 | -------------------------------------------------------------------------------- /lib/views/screens/chat/conversation.dart: -------------------------------------------------------------------------------- 1 | import 'dart:math'; 2 | 3 | import 'package:flutter/material.dart'; 4 | import 'package:social_app_ui/views/widgets/chat_bubble.dart'; 5 | import 'package:social_app_ui/util/data.dart'; 6 | 7 | class Conversation extends StatefulWidget { 8 | @override 9 | _ConversationState createState() => _ConversationState(); 10 | } 11 | 12 | class _ConversationState extends State { 13 | static Random random = Random(); 14 | String name = names[random.nextInt(10)]; 15 | 16 | @override 17 | Widget build(BuildContext context) { 18 | return Scaffold( 19 | appBar: AppBar( 20 | elevation: 3, 21 | leading: IconButton( 22 | icon: Icon( 23 | Icons.keyboard_backspace, 24 | ), 25 | onPressed: () => Navigator.pop(context), 26 | ), 27 | titleSpacing: 0, 28 | title: InkWell( 29 | child: Row( 30 | children: [ 31 | Padding( 32 | padding: EdgeInsets.only(left: 0.0, right: 10.0), 33 | child: CircleAvatar( 34 | backgroundImage: AssetImage( 35 | "assets/cm${random.nextInt(10)}.jpeg", 36 | ), 37 | ), 38 | ), 39 | Expanded( 40 | child: Column( 41 | crossAxisAlignment: CrossAxisAlignment.start, 42 | children: [ 43 | Text( 44 | name, 45 | style: TextStyle( 46 | fontWeight: FontWeight.bold, 47 | fontSize: 14, 48 | ), 49 | ), 50 | SizedBox(height: 5), 51 | Text( 52 | "Online", 53 | style: TextStyle( 54 | fontWeight: FontWeight.w400, 55 | fontSize: 11, 56 | ), 57 | ), 58 | ], 59 | ), 60 | ), 61 | ], 62 | ), 63 | onTap: () {}, 64 | ), 65 | actions: [ 66 | IconButton( 67 | icon: Icon( 68 | Icons.more_horiz, 69 | ), 70 | onPressed: () {}, 71 | ), 72 | ], 73 | ), 74 | body: Container( 75 | height: MediaQuery.of(context).size.height, 76 | child: Column( 77 | children: [ 78 | Flexible( 79 | child: ListView.builder( 80 | padding: EdgeInsets.symmetric(horizontal: 10), 81 | itemCount: conversation.length, 82 | reverse: true, 83 | itemBuilder: (BuildContext context, int index) { 84 | Map msg = conversation[index]; 85 | return ChatBubble( 86 | message: msg['type'] == "text" 87 | ? messages[random.nextInt(10)] 88 | : "assets/cm${random.nextInt(10)}.jpeg", 89 | username: msg["username"], 90 | time: msg["time"], 91 | type: msg['type'], 92 | replyText: msg["replyText"], 93 | isMe: msg['isMe'], 94 | isGroup: msg['isGroup'], 95 | isReply: msg['isReply'], 96 | replyName: name, 97 | ); 98 | }, 99 | ), 100 | ), 101 | Align( 102 | alignment: Alignment.bottomCenter, 103 | child: BottomAppBar( 104 | elevation: 10, 105 | color: Theme.of(context).primaryColor, 106 | child: Container( 107 | constraints: BoxConstraints( 108 | maxHeight: 100, 109 | ), 110 | child: Row( 111 | crossAxisAlignment: CrossAxisAlignment.end, 112 | children: [ 113 | IconButton( 114 | icon: Icon( 115 | Icons.add, 116 | color: Theme.of(context).colorScheme.secondary, 117 | ), 118 | onPressed: () {}, 119 | ), 120 | Flexible( 121 | child: TextField( 122 | style: TextStyle( 123 | fontSize: 15.0, 124 | color: 125 | Theme.of(context).textTheme.titleLarge?.color, 126 | ), 127 | decoration: InputDecoration( 128 | contentPadding: EdgeInsets.all(10.0), 129 | border: InputBorder.none, 130 | enabledBorder: InputBorder.none, 131 | hintText: "Write your message...", 132 | hintStyle: TextStyle( 133 | fontSize: 15.0, 134 | color: 135 | Theme.of(context).textTheme.titleLarge?.color, 136 | ), 137 | ), 138 | maxLines: null, 139 | ), 140 | ), 141 | IconButton( 142 | icon: Icon( 143 | Icons.mic, 144 | color: Theme.of(context).colorScheme.secondary, 145 | ), 146 | onPressed: () {}, 147 | ) 148 | ], 149 | ), 150 | ), 151 | ), 152 | ), 153 | ], 154 | ), 155 | ), 156 | ); 157 | } 158 | } 159 | -------------------------------------------------------------------------------- /lib/views/screens/friends.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:social_app_ui/util/data.dart'; 3 | 4 | class Friends extends StatefulWidget { 5 | @override 6 | _FriendsState createState() => _FriendsState(); 7 | } 8 | 9 | class _FriendsState extends State { 10 | @override 11 | Widget build(BuildContext context) { 12 | return Scaffold( 13 | appBar: AppBar( 14 | title: TextField( 15 | decoration: InputDecoration.collapsed( 16 | hintText: 'Search', 17 | ), 18 | ), 19 | actions: [ 20 | IconButton( 21 | icon: Icon( 22 | Icons.filter_list, 23 | ), 24 | onPressed: () {}, 25 | ), 26 | ], 27 | ), 28 | body: ListView.separated( 29 | padding: EdgeInsets.all(10), 30 | separatorBuilder: (BuildContext context, int index) { 31 | return Align( 32 | alignment: Alignment.centerRight, 33 | child: Container( 34 | height: 0.5, 35 | width: MediaQuery.of(context).size.width / 1.3, 36 | child: Divider(), 37 | ), 38 | ); 39 | }, 40 | itemCount: friends.length, 41 | itemBuilder: (BuildContext context, int index) { 42 | Map friend = friends[index]; 43 | return Padding( 44 | padding: const EdgeInsets.symmetric(horizontal: 8.0), 45 | child: ListTile( 46 | leading: CircleAvatar( 47 | backgroundImage: AssetImage( 48 | friend['dp'], 49 | ), 50 | radius: 25, 51 | ), 52 | contentPadding: EdgeInsets.all(0), 53 | title: Text(friend['name']), 54 | subtitle: Text(friend['status']), 55 | trailing: friend['isAccept'] 56 | ? TextButton( 57 | child: Text( 58 | "Unfollow", 59 | style: TextStyle( 60 | color: Colors.white, 61 | ), 62 | ), 63 | style: ButtonStyle( 64 | backgroundColor: MaterialStateProperty.all(Colors.grey), 65 | ), 66 | onPressed: () {}, 67 | ) 68 | : TextButton( 69 | child: Text( 70 | "Follow", 71 | style: TextStyle( 72 | color: Colors.white, 73 | ), 74 | ), 75 | style: ButtonStyle( 76 | backgroundColor: MaterialStateProperty.all( 77 | Theme.of(context).colorScheme.secondary, 78 | ), 79 | ), 80 | onPressed: () {}, 81 | ), 82 | onTap: () {}, 83 | ), 84 | ); 85 | }, 86 | ), 87 | ); 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /lib/views/screens/home.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:social_app_ui/views/widgets/post_item.dart'; 3 | import 'package:social_app_ui/util/data.dart'; 4 | 5 | class Home extends StatefulWidget { 6 | @override 7 | _HomeState createState() => _HomeState(); 8 | } 9 | 10 | class _HomeState extends State { 11 | @override 12 | Widget build(BuildContext context) { 13 | return Scaffold( 14 | appBar: AppBar( 15 | title: Text("Feeds"), 16 | centerTitle: true, 17 | actions: [ 18 | IconButton( 19 | icon: Icon( 20 | Icons.filter_list, 21 | ), 22 | onPressed: () {}, 23 | ), 24 | ], 25 | ), 26 | body: ListView.builder( 27 | padding: EdgeInsets.symmetric(horizontal: 20), 28 | itemCount: posts.length, 29 | itemBuilder: (BuildContext context, int index) { 30 | Map post = posts[index]; 31 | return PostItem( 32 | img: post['img'], 33 | name: post['name'], 34 | dp: post['dp'], 35 | time: post['time'], 36 | ); 37 | }, 38 | ), 39 | floatingActionButton: FloatingActionButton( 40 | child: Icon( 41 | Icons.add, 42 | color: Colors.white, 43 | ), 44 | onPressed: () {}, 45 | ), 46 | ); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /lib/views/screens/main_screen.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:social_app_ui/views/widgets/icon_badge.dart'; 3 | import 'package:social_app_ui/views/screens/chat/chats.dart'; 4 | import 'package:social_app_ui/views/screens/friends.dart'; 5 | import 'package:social_app_ui/views/screens/home.dart'; 6 | import 'package:social_app_ui/views/screens/notifications.dart'; 7 | import 'package:social_app_ui/views/screens/profile.dart'; 8 | 9 | class MainScreen extends StatefulWidget { 10 | @override 11 | _MainScreenState createState() => _MainScreenState(); 12 | } 13 | 14 | class _MainScreenState extends State { 15 | late PageController _pageController; 16 | int _page = 2; 17 | 18 | @override 19 | Widget build(BuildContext context) { 20 | return Scaffold( 21 | body: PageView( 22 | physics: NeverScrollableScrollPhysics(), 23 | controller: _pageController, 24 | onPageChanged: onPageChanged, 25 | children: [ 26 | Chats(), 27 | Friends(), 28 | Home(), 29 | Notifications(), 30 | Profile(), 31 | ], 32 | ), 33 | bottomNavigationBar: Theme( 34 | data: Theme.of(context).copyWith( 35 | // sets the background color of the `BottomNavigationBar` 36 | canvasColor: Theme.of(context).primaryColor, 37 | // sets the active color of the `BottomNavigationBar` if `Brightness` is light 38 | primaryColor: Theme.of(context).colorScheme.secondary, 39 | textTheme: Theme.of(context).textTheme.copyWith( 40 | bodySmall: TextStyle(color: Colors.grey[500]), 41 | ), 42 | ), 43 | child: BottomNavigationBar( 44 | type: BottomNavigationBarType.fixed, 45 | items: [ 46 | BottomNavigationBarItem( 47 | icon: Icon( 48 | Icons.message, 49 | ), 50 | label: '', 51 | ), 52 | BottomNavigationBarItem( 53 | icon: Icon( 54 | Icons.group, 55 | ), 56 | label: '', 57 | ), 58 | BottomNavigationBarItem( 59 | icon: Icon( 60 | Icons.home, 61 | ), 62 | label: '', 63 | ), 64 | BottomNavigationBarItem( 65 | icon: IconBadge(icon: Icons.notifications), 66 | label: '', 67 | ), 68 | BottomNavigationBarItem( 69 | icon: Icon(Icons.person), 70 | label: '', 71 | ), 72 | ], 73 | onTap: navigationTapped, 74 | currentIndex: _page, 75 | ), 76 | ), 77 | ); 78 | } 79 | 80 | void navigationTapped(int page) { 81 | _pageController.jumpToPage(page); 82 | } 83 | 84 | @override 85 | void initState() { 86 | super.initState(); 87 | _pageController = PageController(initialPage: 2); 88 | } 89 | 90 | @override 91 | void dispose() { 92 | super.dispose(); 93 | _pageController.dispose(); 94 | } 95 | 96 | void onPageChanged(int page) { 97 | setState(() { 98 | this._page = page; 99 | }); 100 | } 101 | } 102 | -------------------------------------------------------------------------------- /lib/views/screens/notifications.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:social_app_ui/util/data.dart'; 3 | 4 | class Notifications extends StatefulWidget { 5 | @override 6 | _NotificationsState createState() => _NotificationsState(); 7 | } 8 | 9 | class _NotificationsState extends State { 10 | @override 11 | Widget build(BuildContext context) { 12 | return Scaffold( 13 | appBar: AppBar( 14 | title: Text( 15 | "Notifications", 16 | ), 17 | centerTitle: true, 18 | actions: [ 19 | IconButton( 20 | icon: Icon( 21 | Icons.filter_list, 22 | ), 23 | onPressed: () {}, 24 | ), 25 | ], 26 | ), 27 | body: ListView.separated( 28 | padding: EdgeInsets.all(10), 29 | separatorBuilder: (BuildContext context, int index) { 30 | return Align( 31 | alignment: Alignment.centerRight, 32 | child: Container( 33 | height: 0.5, 34 | width: MediaQuery.of(context).size.width / 1.3, 35 | child: Divider(), 36 | ), 37 | ); 38 | }, 39 | itemCount: notifications.length, 40 | itemBuilder: (BuildContext context, int index) { 41 | Map notif = notifications[index]; 42 | return Padding( 43 | padding: const EdgeInsets.all(8.0), 44 | child: ListTile( 45 | leading: CircleAvatar( 46 | backgroundImage: AssetImage( 47 | notif['dp'], 48 | ), 49 | radius: 25, 50 | ), 51 | contentPadding: EdgeInsets.all(0), 52 | title: Text(notif['notif']), 53 | trailing: Text( 54 | notif['time'], 55 | style: TextStyle( 56 | fontWeight: FontWeight.w300, 57 | fontSize: 11, 58 | ), 59 | ), 60 | onTap: () {}, 61 | ), 62 | ); 63 | }, 64 | ), 65 | ); 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /lib/views/screens/profile.dart: -------------------------------------------------------------------------------- 1 | import 'dart:math'; 2 | 3 | import 'package:flutter/material.dart'; 4 | import 'package:social_app_ui/util/data.dart'; 5 | 6 | class Profile extends StatefulWidget { 7 | @override 8 | _ProfileState createState() => _ProfileState(); 9 | } 10 | 11 | class _ProfileState extends State { 12 | static Random random = Random(); 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | body: SingleChildScrollView( 18 | padding: EdgeInsets.symmetric(horizontal: 10), 19 | child: Container( 20 | width: MediaQuery.of(context).size.width, 21 | child: Column( 22 | mainAxisAlignment: MainAxisAlignment.center, 23 | crossAxisAlignment: CrossAxisAlignment.center, 24 | children: [ 25 | SizedBox(height: 60), 26 | CircleAvatar( 27 | backgroundImage: AssetImage( 28 | "assets/images/cm${random.nextInt(10)}.jpeg", 29 | ), 30 | radius: 50, 31 | ), 32 | SizedBox(height: 10), 33 | Text( 34 | names[random.nextInt(10)], 35 | style: TextStyle( 36 | fontWeight: FontWeight.bold, 37 | fontSize: 22, 38 | ), 39 | ), 40 | SizedBox(height: 3), 41 | Text( 42 | "Status should be here", 43 | style: TextStyle(), 44 | ), 45 | SizedBox(height: 20), 46 | Row( 47 | mainAxisSize: MainAxisSize.min, 48 | children: [ 49 | TextButton( 50 | child: Icon( 51 | Icons.message, 52 | color: Colors.white, 53 | ), 54 | style: ButtonStyle( 55 | backgroundColor: MaterialStateProperty.all( 56 | Colors.grey, 57 | ), 58 | ), 59 | onPressed: () {}, 60 | ), 61 | SizedBox(width: 10), 62 | TextButton( 63 | child: Icon( 64 | Icons.add, 65 | color: Colors.white, 66 | ), 67 | style: ButtonStyle( 68 | backgroundColor: MaterialStateProperty.all( 69 | Theme.of(context).colorScheme.secondary, 70 | ), 71 | ), 72 | onPressed: () {}, 73 | ), 74 | ], 75 | ), 76 | SizedBox(height: 40), 77 | Padding( 78 | padding: EdgeInsets.symmetric(horizontal: 50), 79 | child: Row( 80 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 81 | children: [ 82 | _buildCategory("Posts"), 83 | _buildCategory("Friends"), 84 | _buildCategory("Groups"), 85 | ], 86 | ), 87 | ), 88 | SizedBox(height: 20), 89 | GridView.builder( 90 | shrinkWrap: true, 91 | physics: NeverScrollableScrollPhysics(), 92 | primary: false, 93 | padding: EdgeInsets.all(5), 94 | itemCount: 15, 95 | gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( 96 | crossAxisCount: 3, 97 | childAspectRatio: 200 / 200, 98 | ), 99 | itemBuilder: (BuildContext context, int index) { 100 | return Padding( 101 | padding: EdgeInsets.all(5.0), 102 | child: Image.asset( 103 | "assets/images/cm${random.nextInt(10)}.jpeg", 104 | fit: BoxFit.cover, 105 | ), 106 | ); 107 | }, 108 | ), 109 | ], 110 | ), 111 | ), 112 | ), 113 | ); 114 | } 115 | 116 | Widget _buildCategory(String title) { 117 | return Column( 118 | children: [ 119 | Text( 120 | random.nextInt(10000).toString(), 121 | style: TextStyle( 122 | fontWeight: FontWeight.bold, 123 | fontSize: 22, 124 | ), 125 | ), 126 | SizedBox(height: 4), 127 | Text( 128 | title, 129 | style: TextStyle(), 130 | ), 131 | ], 132 | ); 133 | } 134 | } 135 | -------------------------------------------------------------------------------- /lib/views/widgets/animations/fade_page_route.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class FadePageRoute extends PageRoute { 4 | FadePageRoute(this.child); 5 | 6 | @override 7 | Color get barrierColor => Colors.white10; 8 | 9 | @override 10 | String get barrierLabel => ''; 11 | 12 | final Widget child; 13 | 14 | @override 15 | Widget buildPage(BuildContext context, Animation animation, 16 | Animation secondaryAnimation) { 17 | return FadeTransition( 18 | opacity: animation, 19 | child: child, 20 | ); 21 | } 22 | 23 | @override 24 | bool get maintainState => true; 25 | 26 | @override 27 | Duration get transitionDuration => Duration(milliseconds: 500); 28 | } 29 | -------------------------------------------------------------------------------- /lib/views/widgets/animations/type_write.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class TypeWrite extends StatefulWidget { 4 | final String word; 5 | final TextStyle? style; 6 | final double? textScaleFactor; 7 | final int seconds; 8 | 9 | TypeWrite({ 10 | super.key, 11 | required this.word, 12 | this.style, 13 | this.textScaleFactor, 14 | this.seconds = 4, 15 | }); 16 | 17 | @override 18 | _TypeWriteState createState() => _TypeWriteState(); 19 | } 20 | 21 | class _TypeWriteState extends State with TickerProviderStateMixin { 22 | @override 23 | void initState() { 24 | super.initState(); 25 | animate(); 26 | } 27 | 28 | late AnimationController controller; 29 | 30 | animate() async { 31 | controller = AnimationController( 32 | duration: Duration(seconds: widget.seconds), 33 | vsync: this, 34 | ); 35 | setState(() { 36 | _stringIndex = _stringIndex == null ? 0 : _stringIndex! + 1; 37 | _characterCount = StepTween(begin: 0, end: widget.word.length) 38 | .animate(CurvedAnimation(parent: controller, curve: Curves.easeIn)); 39 | }); 40 | 41 | await controller.forward(); 42 | } 43 | 44 | late Animation _characterCount; 45 | 46 | int? _stringIndex; 47 | 48 | @override 49 | void dispose() { 50 | controller.dispose(); 51 | super.dispose(); 52 | } 53 | 54 | @override 55 | Widget build(BuildContext context) { 56 | return AnimatedBuilder( 57 | animation: _characterCount, 58 | builder: (BuildContext context, Widget? child) { 59 | String text = widget.word.substring(0, _characterCount.value); 60 | return Text( 61 | text, 62 | style: widget.style, 63 | textScaleFactor: widget.textScaleFactor, 64 | textAlign: TextAlign.center, 65 | ); 66 | }, 67 | ); 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /lib/views/widgets/chat_bubble.dart: -------------------------------------------------------------------------------- 1 | import 'dart:math'; 2 | 3 | import 'package:flutter/material.dart'; 4 | 5 | class ChatBubble extends StatefulWidget { 6 | final String message, time, username, type, replyText, replyName; 7 | final bool isMe, isGroup, isReply; 8 | 9 | ChatBubble( 10 | {required this.message, 11 | required this.time, 12 | required this.isMe, 13 | required this.isGroup, 14 | required this.username, 15 | required this.type, 16 | required this.replyText, 17 | required this.isReply, 18 | required this.replyName}); 19 | 20 | @override 21 | _ChatBubbleState createState() => _ChatBubbleState(); 22 | } 23 | 24 | class _ChatBubbleState extends State { 25 | List colors = Colors.primaries; 26 | static Random random = Random(); 27 | int rNum = random.nextInt(18); 28 | 29 | Color chatBubbleColor() { 30 | if (widget.isMe) { 31 | return Theme.of(context).colorScheme.secondary; 32 | } else { 33 | if (Theme.of(context).brightness == Brightness.dark) { 34 | return Colors.grey[800]!; 35 | } else { 36 | return Colors.grey[200]!; 37 | } 38 | } 39 | } 40 | 41 | Color chatBubbleReplyColor() { 42 | if (Theme.of(context).brightness == Brightness.dark) { 43 | return Colors.grey[600]!; 44 | } else { 45 | return Colors.grey[50]!; 46 | } 47 | } 48 | 49 | @override 50 | Widget build(BuildContext context) { 51 | final align = 52 | widget.isMe ? CrossAxisAlignment.end : CrossAxisAlignment.start; 53 | final radius = widget.isMe 54 | ? BorderRadius.only( 55 | topLeft: Radius.circular(5.0), 56 | bottomLeft: Radius.circular(5.0), 57 | bottomRight: Radius.circular(10.0), 58 | ) 59 | : BorderRadius.only( 60 | topRight: Radius.circular(5.0), 61 | bottomLeft: Radius.circular(10.0), 62 | bottomRight: Radius.circular(5.0), 63 | ); 64 | return Column( 65 | crossAxisAlignment: align, 66 | children: [ 67 | Container( 68 | margin: const EdgeInsets.all(3.0), 69 | padding: const EdgeInsets.all(5.0), 70 | decoration: BoxDecoration( 71 | color: chatBubbleColor(), 72 | borderRadius: radius, 73 | ), 74 | constraints: BoxConstraints( 75 | maxWidth: MediaQuery.of(context).size.width / 1.3, 76 | minWidth: 20.0, 77 | ), 78 | child: Column( 79 | mainAxisSize: MainAxisSize.min, 80 | mainAxisAlignment: MainAxisAlignment.start, 81 | children: [ 82 | widget.isMe 83 | ? SizedBox() 84 | : widget.isGroup 85 | ? Padding( 86 | padding: EdgeInsets.only(right: 48.0), 87 | child: Container( 88 | child: Text( 89 | widget.username, 90 | style: TextStyle( 91 | fontSize: 13, 92 | color: colors[rNum], 93 | fontWeight: FontWeight.bold, 94 | ), 95 | textAlign: TextAlign.left, 96 | ), 97 | alignment: Alignment.centerLeft, 98 | ), 99 | ) 100 | : SizedBox(), 101 | widget.isGroup 102 | ? widget.isMe 103 | ? SizedBox() 104 | : SizedBox(height: 5) 105 | : SizedBox(), 106 | widget.isReply 107 | ? Container( 108 | decoration: BoxDecoration( 109 | color: chatBubbleReplyColor(), 110 | borderRadius: BorderRadius.all(Radius.circular(5.0)), 111 | ), 112 | constraints: BoxConstraints( 113 | minHeight: 25, 114 | maxHeight: 100, 115 | minWidth: 80, 116 | ), 117 | child: Padding( 118 | padding: EdgeInsets.all(5), 119 | child: Column( 120 | mainAxisSize: MainAxisSize.min, 121 | children: [ 122 | Container( 123 | child: Text( 124 | widget.isMe ? "You" : widget.replyName, 125 | style: TextStyle( 126 | color: Theme.of(context).colorScheme.secondary, 127 | fontWeight: FontWeight.bold, 128 | fontSize: 12, 129 | ), 130 | maxLines: 1, 131 | textAlign: TextAlign.left, 132 | ), 133 | alignment: Alignment.centerLeft, 134 | ), 135 | SizedBox(height: 2.0), 136 | Container( 137 | child: Text( 138 | widget.replyText, 139 | style: TextStyle( 140 | color: 141 | Theme.of(context).textTheme.titleLarge?.color, 142 | fontSize: 10.0, 143 | ), 144 | maxLines: 2, 145 | ), 146 | alignment: Alignment.centerLeft, 147 | ), 148 | ], 149 | ), 150 | ), 151 | ) 152 | : SizedBox(width: 2.0), 153 | widget.isReply ? SizedBox(height: 5) : SizedBox(), 154 | Padding( 155 | padding: EdgeInsets.all(widget.type == "text" ? 5 : 0), 156 | child: widget.type == "text" 157 | ? !widget.isReply 158 | ? Text( 159 | widget.message, 160 | style: TextStyle( 161 | color: widget.isMe 162 | ? Colors.white 163 | : Theme.of(context).textTheme.titleLarge?.color, 164 | ), 165 | ) 166 | : Container( 167 | alignment: Alignment.centerLeft, 168 | child: Text( 169 | widget.message, 170 | style: TextStyle( 171 | color: widget.isMe 172 | ? Colors.white 173 | : Theme.of(context).textTheme.titleLarge?.color, 174 | ), 175 | ), 176 | ) 177 | : Image.asset( 178 | "${widget.message}", 179 | height: 130, 180 | width: MediaQuery.of(context).size.width / 1.3, 181 | fit: BoxFit.cover, 182 | ), 183 | ), 184 | ], 185 | ), 186 | ), 187 | Padding( 188 | padding: widget.isMe 189 | ? EdgeInsets.only(right: 10, bottom: 10.0) 190 | : EdgeInsets.only(left: 10, bottom: 10.0), 191 | child: Text( 192 | widget.time, 193 | style: TextStyle( 194 | color: Theme.of(context).textTheme.titleLarge?.color, 195 | fontSize: 10.0, 196 | ), 197 | ), 198 | ), 199 | ], 200 | ); 201 | } 202 | } 203 | -------------------------------------------------------------------------------- /lib/views/widgets/chat_item.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:social_app_ui/views/screens/chat/conversation.dart'; 3 | 4 | 5 | class ChatItem extends StatefulWidget { 6 | 7 | final String dp; 8 | final String name; 9 | final String time; 10 | final String msg; 11 | final bool isOnline; 12 | final int counter; 13 | 14 | ChatItem({ 15 | super.key, 16 | required this.dp, 17 | required this.name, 18 | required this.time, 19 | required this.msg, 20 | required this.isOnline, 21 | required this.counter, 22 | }); 23 | 24 | @override 25 | _ChatItemState createState() => _ChatItemState(); 26 | } 27 | 28 | class _ChatItemState extends State { 29 | @override 30 | Widget build(BuildContext context) { 31 | return Padding( 32 | padding: const EdgeInsets.symmetric(horizontal: 8.0), 33 | child: ListTile( 34 | contentPadding: EdgeInsets.all(0), 35 | leading: Stack( 36 | children: [ 37 | CircleAvatar( 38 | backgroundImage: AssetImage( 39 | "${widget.dp}", 40 | ), 41 | radius: 25, 42 | ), 43 | 44 | Positioned( 45 | bottom: 0.0, 46 | left: 6.0, 47 | child: Container( 48 | decoration: BoxDecoration( 49 | color: Colors.white, 50 | borderRadius: BorderRadius.circular(6), 51 | ), 52 | height: 11, 53 | width: 11, 54 | child: Center( 55 | child: Container( 56 | decoration: BoxDecoration( 57 | color: widget.isOnline 58 | ?Colors.greenAccent 59 | :Colors.grey, 60 | borderRadius: BorderRadius.circular(6), 61 | ), 62 | height: 7, 63 | width: 7, 64 | ), 65 | ), 66 | ), 67 | ), 68 | 69 | ], 70 | ), 71 | 72 | title: Text( 73 | "${widget.name}", 74 | maxLines: 1, 75 | style: TextStyle( 76 | fontWeight: FontWeight.bold, 77 | ), 78 | ), 79 | subtitle: Text( 80 | "${widget.msg}", 81 | overflow: TextOverflow.ellipsis, 82 | maxLines: 2, 83 | ), 84 | trailing: Column( 85 | crossAxisAlignment: CrossAxisAlignment.end, 86 | children: [ 87 | SizedBox(height: 10), 88 | Text( 89 | "${widget.time}", 90 | style: TextStyle( 91 | fontWeight: FontWeight.w300, 92 | fontSize: 11, 93 | ), 94 | ), 95 | 96 | SizedBox(height: 5), 97 | widget.counter == 0 98 | ?SizedBox() 99 | :Container( 100 | padding: EdgeInsets.all(1), 101 | decoration: BoxDecoration( 102 | color: Colors.red, 103 | borderRadius: BorderRadius.circular(6), 104 | ), 105 | constraints: BoxConstraints( 106 | minWidth: 11, 107 | minHeight: 11, 108 | ), 109 | child: Padding( 110 | padding: EdgeInsets.only(top: 1, left: 5, right: 5), 111 | child:Text( 112 | "${widget.counter}", 113 | style: TextStyle( 114 | color: Colors.white, 115 | fontSize: 10, 116 | ), 117 | textAlign: TextAlign.center, 118 | ), 119 | ), 120 | ), 121 | ], 122 | ), 123 | onTap: (){ 124 | Navigator.of(context, rootNavigator: true).push( 125 | MaterialPageRoute( 126 | builder: (BuildContext context){ 127 | return Conversation(); 128 | }, 129 | ), 130 | ); 131 | }, 132 | ), 133 | ); 134 | } 135 | } 136 | -------------------------------------------------------------------------------- /lib/views/widgets/custom_button.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class CustomButton extends StatelessWidget { 4 | final String label; 5 | final Function? onPressed; 6 | final Color? color; 7 | 8 | CustomButton({ 9 | this.label = 'Continue', 10 | this.onPressed, 11 | this.color, 12 | }); 13 | 14 | bool isSmallScreen(BuildContext context) { 15 | return MediaQuery 16 | .of(context) 17 | .size 18 | .width < 800; 19 | } 20 | 21 | @override 22 | Widget build(BuildContext context) { 23 | return Container( 24 | height: 50.0, 25 | width: MediaQuery 26 | .of(context) 27 | .size 28 | .width, 29 | child: TextButton( 30 | onPressed: () => onPressed!(), 31 | style: ButtonStyle( 32 | backgroundColor: MaterialStateProperty.all( 33 | color ?? Theme 34 | .of(context) 35 | .colorScheme 36 | .secondary), 37 | shape: MaterialStateProperty.all( 38 | RoundedRectangleBorder( 39 | borderRadius: BorderRadius.all( 40 | Radius.circular(10.0), 41 | ), 42 | ), 43 | ), 44 | ), 45 | child: Text( 46 | "$label", 47 | style: TextStyle( 48 | fontWeight: FontWeight.w500, 49 | fontSize: 18.0, 50 | color: Colors.white, 51 | ), 52 | ), 53 | ), 54 | ); 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /lib/views/widgets/custom_text_field.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class CustomTextField extends StatelessWidget { 4 | final String? initialValue; 5 | final bool? enabled; 6 | final String? hintText; 7 | final TextInputType? textInputType; 8 | final TextEditingController? controller; 9 | final TextInputAction? textInputAction; 10 | final FocusNode? focusNode, nextFocusNode; 11 | final VoidCallback? submitAction; 12 | final bool obscureText; 13 | final FormFieldValidator? validateFunction; 14 | final void Function(String?)? onSaved, onChange; 15 | 16 | CustomTextField({ 17 | this.initialValue, 18 | this.enabled, 19 | this.hintText, 20 | this.textInputType, 21 | this.controller, 22 | this.textInputAction, 23 | this.focusNode, 24 | this.nextFocusNode, 25 | this.submitAction, 26 | this.obscureText = false, 27 | this.validateFunction, 28 | this.onSaved, 29 | this.onChange, 30 | super.key, 31 | }); 32 | 33 | @override 34 | Widget build(BuildContext context) { 35 | return Container( 36 | width: MediaQuery.of(context).size.width, 37 | child: TextFormField( 38 | initialValue: initialValue, 39 | enabled: enabled, 40 | onChanged: onChange, 41 | style: TextStyle( 42 | fontSize: 15.0, 43 | ), 44 | key: key, 45 | controller: controller, 46 | obscureText: obscureText, 47 | keyboardType: textInputType, 48 | validator: validateFunction, 49 | onSaved: onSaved, 50 | textInputAction: textInputAction, 51 | focusNode: focusNode, 52 | onFieldSubmitted: (String term) { 53 | if (nextFocusNode != null) { 54 | focusNode!.unfocus(); 55 | FocusScope.of(context).requestFocus(nextFocusNode); 56 | } else { 57 | submitAction!(); 58 | } 59 | }, 60 | decoration: InputDecoration( 61 | hintText: hintText, 62 | hintStyle: TextStyle( 63 | color: Colors.grey[400], 64 | ), 65 | contentPadding: EdgeInsets.symmetric(horizontal: 20.0), 66 | border: border(), 67 | focusedBorder: border(), 68 | disabledBorder: border()), 69 | ), 70 | ); 71 | } 72 | 73 | border() { 74 | return OutlineInputBorder( 75 | borderRadius: BorderRadius.all( 76 | Radius.circular(10.0), 77 | ), 78 | borderSide: BorderSide( 79 | color: Color(0xffB3ABAB), 80 | width: 1.0, 81 | ), 82 | ); 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /lib/views/widgets/icon_badge.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class IconBadge extends StatefulWidget { 4 | 5 | final IconData icon; 6 | final double? size; 7 | final Color? color; 8 | 9 | IconBadge({super.key, required this.icon, this.size, this.color}); 10 | 11 | @override 12 | _IconBadgeState createState() => _IconBadgeState(); 13 | } 14 | 15 | class _IconBadgeState extends State { 16 | 17 | int counter = 0; 18 | 19 | @override 20 | void initState() { 21 | super.initState(); 22 | } 23 | 24 | @override 25 | Widget build(BuildContext context) { 26 | return Stack( 27 | children: [ 28 | Icon( 29 | widget.icon, 30 | size: widget.size, 31 | color: widget.color, 32 | ), 33 | Positioned( 34 | right: 0.0, 35 | child: Container( 36 | padding: EdgeInsets.all(1), 37 | decoration: BoxDecoration( 38 | color: Colors.red, 39 | borderRadius: BorderRadius.circular(6), 40 | ), 41 | constraints: BoxConstraints( 42 | minWidth: 11, 43 | minHeight: 11, 44 | ), 45 | child: Padding( 46 | padding: EdgeInsets.only(top: 1), 47 | child: Text( 48 | '16', 49 | style: TextStyle( 50 | color: Colors.white, 51 | fontSize: 9, 52 | ), 53 | textAlign: TextAlign.center, 54 | ), 55 | ), 56 | ), 57 | ), 58 | ], 59 | ); 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /lib/views/widgets/post_item.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class PostItem extends StatefulWidget { 4 | final String dp; 5 | final String name; 6 | final String time; 7 | final String img; 8 | 9 | PostItem({ 10 | super.key, 11 | required this.dp, 12 | required this.name, 13 | required this.time, 14 | required this.img, 15 | }); 16 | 17 | @override 18 | _PostItemState createState() => _PostItemState(); 19 | } 20 | 21 | class _PostItemState extends State { 22 | @override 23 | Widget build(BuildContext context) { 24 | return Padding( 25 | padding: EdgeInsets.symmetric(vertical: 5), 26 | child: InkWell( 27 | child: Column( 28 | children: [ 29 | ListTile( 30 | leading: CircleAvatar( 31 | backgroundImage: AssetImage( 32 | "${widget.dp}", 33 | ), 34 | ), 35 | contentPadding: EdgeInsets.all(0), 36 | title: Text( 37 | "${widget.name}", 38 | style: TextStyle( 39 | fontWeight: FontWeight.bold, 40 | ), 41 | ), 42 | trailing: Text( 43 | "${widget.time}", 44 | style: TextStyle( 45 | fontWeight: FontWeight.w300, 46 | fontSize: 11, 47 | ), 48 | ), 49 | ), 50 | Image.asset( 51 | "${widget.img}", 52 | height: 170, 53 | width: MediaQuery.of(context).size.width, 54 | fit: BoxFit.cover, 55 | ), 56 | ], 57 | ), 58 | onTap: () {}, 59 | ), 60 | ); 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /linux/flutter/ephemeral/.plugin_symlinks/path_provider_linux: -------------------------------------------------------------------------------- 1 | /Users/jideguru/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.11/ -------------------------------------------------------------------------------- /linux/flutter/generated_plugin_registrant.cc: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #include "generated_plugin_registrant.h" 8 | 9 | 10 | void fl_register_plugins(FlPluginRegistry* registry) { 11 | } 12 | -------------------------------------------------------------------------------- /linux/flutter/generated_plugin_registrant.h: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #ifndef GENERATED_PLUGIN_REGISTRANT_ 8 | #define GENERATED_PLUGIN_REGISTRANT_ 9 | 10 | #include 11 | 12 | // Registers Flutter plugins. 13 | void fl_register_plugins(FlPluginRegistry* registry); 14 | 15 | #endif // GENERATED_PLUGIN_REGISTRANT_ 16 | -------------------------------------------------------------------------------- /linux/flutter/generated_plugins.cmake: -------------------------------------------------------------------------------- 1 | # 2 | # Generated file, do not edit. 3 | # 4 | 5 | list(APPEND FLUTTER_PLUGIN_LIST 6 | ) 7 | 8 | list(APPEND FLUTTER_FFI_PLUGIN_LIST 9 | ) 10 | 11 | set(PLUGIN_BUNDLED_LIBRARIES) 12 | 13 | foreach(plugin ${FLUTTER_PLUGIN_LIST}) 14 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin}) 15 | target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) 16 | list(APPEND PLUGIN_BUNDLED_LIBRARIES $) 17 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) 18 | endforeach(plugin) 19 | 20 | foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) 21 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin}) 22 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) 23 | endforeach(ffi_plugin) 24 | -------------------------------------------------------------------------------- /macos/.gitignore: -------------------------------------------------------------------------------- 1 | # Flutter-related 2 | **/Flutter/ephemeral/ 3 | **/Pods/ 4 | 5 | # Xcode-related 6 | **/xcuserdata/ 7 | -------------------------------------------------------------------------------- /macos/Flutter/Flutter-Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "ephemeral/Flutter-Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /macos/Flutter/Flutter-Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "ephemeral/Flutter-Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /macos/Flutter/GeneratedPluginRegistrant.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | import FlutterMacOS 6 | import Foundation 7 | 8 | import path_provider_foundation 9 | 10 | func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { 11 | PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) 12 | } 13 | -------------------------------------------------------------------------------- /macos/Podfile: -------------------------------------------------------------------------------- 1 | platform :osx, '10.11' 2 | 3 | # CocoaPods analytics sends network stats synchronously affecting flutter build latency. 4 | ENV['COCOAPODS_DISABLE_STATS'] = 'true' 5 | 6 | project 'Runner', { 7 | 'Debug' => :debug, 8 | 'Profile' => :release, 9 | 'Release' => :release, 10 | } 11 | 12 | def parse_KV_file(file, separator='=') 13 | file_abs_path = File.expand_path(file) 14 | if !File.exists? file_abs_path 15 | return []; 16 | end 17 | pods_ary = [] 18 | skip_line_start_symbols = ["#", "/"] 19 | File.foreach(file_abs_path) { |line| 20 | next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ } 21 | plugin = line.split(pattern=separator) 22 | if plugin.length == 2 23 | podname = plugin[0].strip() 24 | path = plugin[1].strip() 25 | podpath = File.expand_path("#{path}", file_abs_path) 26 | pods_ary.push({:name => podname, :path => podpath}); 27 | else 28 | puts "Invalid plugin specification: #{line}" 29 | end 30 | } 31 | return pods_ary 32 | end 33 | 34 | def pubspec_supports_macos(file) 35 | file_abs_path = File.expand_path(file) 36 | if !File.exists? file_abs_path 37 | return false; 38 | end 39 | File.foreach(file_abs_path) { |line| 40 | return true if line =~ /^\s*macos:/ 41 | } 42 | return false 43 | end 44 | 45 | target 'Runner' do 46 | use_frameworks! 47 | use_modular_headers! 48 | 49 | # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock 50 | # referring to absolute paths on developers' machines. 51 | ephemeral_dir = File.join('Flutter', 'ephemeral') 52 | symlink_dir = File.join(ephemeral_dir, '.symlinks') 53 | symlink_plugins_dir = File.join(symlink_dir, 'plugins') 54 | system("rm -rf #{symlink_dir}") 55 | system("mkdir -p #{symlink_plugins_dir}") 56 | 57 | # Flutter Pods 58 | generated_xcconfig = parse_KV_file(File.join(ephemeral_dir, 'Flutter-Generated.xcconfig')) 59 | if generated_xcconfig.empty? 60 | puts "Flutter-Generated.xcconfig must exist. If you're running pod install manually, make sure flutter packages get is executed first." 61 | end 62 | generated_xcconfig.map { |p| 63 | if p[:name] == 'FLUTTER_FRAMEWORK_DIR' 64 | symlink = File.join(symlink_dir, 'flutter') 65 | File.symlink(File.dirname(p[:path]), symlink) 66 | pod 'FlutterMacOS', :path => File.join(symlink, File.basename(p[:path])) 67 | end 68 | } 69 | 70 | # Plugin Pods 71 | plugin_pods = parse_KV_file('../.flutter-plugins') 72 | plugin_pods.map { |p| 73 | symlink = File.join(symlink_plugins_dir, p[:name]) 74 | File.symlink(p[:path], symlink) 75 | if pubspec_supports_macos(File.join(symlink, 'pubspec.yaml')) 76 | pod p[:name], :path => File.join(symlink, 'macos') 77 | end 78 | } 79 | end 80 | 81 | # Prevent Cocoapods from embedding a second Flutter framework and causing an error with the new Xcode build system. 82 | install! 'cocoapods', :disable_input_output_paths => true 83 | -------------------------------------------------------------------------------- /macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 33 | 39 | 40 | 41 | 42 | 43 | 49 | 50 | 51 | 52 | 53 | 54 | 64 | 66 | 72 | 73 | 74 | 75 | 76 | 77 | 83 | 85 | 91 | 92 | 93 | 94 | 96 | 97 | 100 | 101 | 102 | -------------------------------------------------------------------------------- /macos/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /macos/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | @NSApplicationMain 5 | class AppDelegate: FlutterAppDelegate { 6 | override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { 7 | return true 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "16x16", 5 | "idiom" : "mac", 6 | "filename" : "app_icon_16.png", 7 | "scale" : "1x" 8 | }, 9 | { 10 | "size" : "16x16", 11 | "idiom" : "mac", 12 | "filename" : "app_icon_32.png", 13 | "scale" : "2x" 14 | }, 15 | { 16 | "size" : "32x32", 17 | "idiom" : "mac", 18 | "filename" : "app_icon_32.png", 19 | "scale" : "1x" 20 | }, 21 | { 22 | "size" : "32x32", 23 | "idiom" : "mac", 24 | "filename" : "app_icon_64.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "128x128", 29 | "idiom" : "mac", 30 | "filename" : "app_icon_128.png", 31 | "scale" : "1x" 32 | }, 33 | { 34 | "size" : "128x128", 35 | "idiom" : "mac", 36 | "filename" : "app_icon_256.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "256x256", 41 | "idiom" : "mac", 42 | "filename" : "app_icon_256.png", 43 | "scale" : "1x" 44 | }, 45 | { 46 | "size" : "256x256", 47 | "idiom" : "mac", 48 | "filename" : "app_icon_512.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "512x512", 53 | "idiom" : "mac", 54 | "filename" : "app_icon_512.png", 55 | "scale" : "1x" 56 | }, 57 | { 58 | "size" : "512x512", 59 | "idiom" : "mac", 60 | "filename" : "app_icon_1024.png", 61 | "scale" : "2x" 62 | } 63 | ], 64 | "info" : { 65 | "version" : 1, 66 | "author" : "xcode" 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png -------------------------------------------------------------------------------- /macos/Runner/Base.lproj/MainMenu.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | -------------------------------------------------------------------------------- /macos/Runner/Configs/AppInfo.xcconfig: -------------------------------------------------------------------------------- 1 | // Application-level settings for the Runner target. 2 | // 3 | // This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the 4 | // future. If not, the values below would default to using the project name when this becomes a 5 | // 'flutter create' template. 6 | 7 | // The application's name. By default this is also the title of the Flutter window. 8 | PRODUCT_NAME = FlutterSocialAppUIKit 9 | 10 | // The application's bundle identifier 11 | PRODUCT_BUNDLE_IDENTIFIER = dev.jideguru.FlutterSocialAppUIKit 12 | 13 | // The copyright displayed in application information 14 | PRODUCT_COPYRIGHT = Copyright © 2020 dev.jideguru. All rights reserved. 15 | -------------------------------------------------------------------------------- /macos/Runner/Configs/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Debug.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /macos/Runner/Configs/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Release.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /macos/Runner/Configs/Warnings.xcconfig: -------------------------------------------------------------------------------- 1 | WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings 2 | GCC_WARN_UNDECLARED_SELECTOR = YES 3 | CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES 4 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE 5 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES 6 | CLANG_WARN_PRAGMA_PACK = YES 7 | CLANG_WARN_STRICT_PROTOTYPES = YES 8 | CLANG_WARN_COMMA = YES 9 | GCC_WARN_STRICT_SELECTOR_MATCH = YES 10 | CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES 11 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES 12 | GCC_WARN_SHADOW = YES 13 | CLANG_WARN_UNREACHABLE_CODE = YES 14 | -------------------------------------------------------------------------------- /macos/Runner/DebugProfile.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.cs.allow-jit 8 | 9 | com.apple.security.network.server 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /macos/Runner/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | $(FLUTTER_BUILD_NAME) 21 | CFBundleVersion 22 | $(FLUTTER_BUILD_NUMBER) 23 | LSMinimumSystemVersion 24 | $(MACOSX_DEPLOYMENT_TARGET) 25 | NSHumanReadableCopyright 26 | $(PRODUCT_COPYRIGHT) 27 | NSMainNibFile 28 | MainMenu 29 | NSPrincipalClass 30 | NSApplication 31 | 32 | 33 | -------------------------------------------------------------------------------- /macos/Runner/MainFlutterWindow.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | class MainFlutterWindow: NSWindow { 5 | override func awakeFromNib() { 6 | let flutterViewController = FlutterViewController.init() 7 | let windowFrame = self.frame 8 | self.contentViewController = flutterViewController 9 | self.setFrame(windowFrame, display: true) 10 | 11 | RegisterGeneratedPlugins(registry: flutterViewController) 12 | 13 | super.awakeFromNib() 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /macos/Runner/Release.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /pubspec.lock: -------------------------------------------------------------------------------- 1 | # Generated by pub 2 | # See https://dart.dev/tools/pub/glossary#lockfile 3 | packages: 4 | archive: 5 | dependency: transitive 6 | description: 7 | name: archive 8 | sha256: "0c8368c9b3f0abbc193b9d6133649a614204b528982bebc7026372d61677ce3a" 9 | url: "https://pub.dev" 10 | source: hosted 11 | version: "3.3.7" 12 | async: 13 | dependency: transitive 14 | description: 15 | name: async 16 | sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" 17 | url: "https://pub.dev" 18 | source: hosted 19 | version: "2.11.0" 20 | boolean_selector: 21 | dependency: transitive 22 | description: 23 | name: boolean_selector 24 | sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" 25 | url: "https://pub.dev" 26 | source: hosted 27 | version: "2.1.1" 28 | characters: 29 | dependency: transitive 30 | description: 31 | name: characters 32 | sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" 33 | url: "https://pub.dev" 34 | source: hosted 35 | version: "1.3.0" 36 | clock: 37 | dependency: transitive 38 | description: 39 | name: clock 40 | sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf 41 | url: "https://pub.dev" 42 | source: hosted 43 | version: "1.1.1" 44 | collection: 45 | dependency: transitive 46 | description: 47 | name: collection 48 | sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" 49 | url: "https://pub.dev" 50 | source: hosted 51 | version: "1.17.1" 52 | convert: 53 | dependency: transitive 54 | description: 55 | name: convert 56 | sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" 57 | url: "https://pub.dev" 58 | source: hosted 59 | version: "3.1.1" 60 | crypto: 61 | dependency: transitive 62 | description: 63 | name: crypto 64 | sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab 65 | url: "https://pub.dev" 66 | source: hosted 67 | version: "3.0.3" 68 | cupertino_icons: 69 | dependency: "direct main" 70 | description: 71 | name: cupertino_icons 72 | sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be 73 | url: "https://pub.dev" 74 | source: hosted 75 | version: "1.0.5" 76 | fake_async: 77 | dependency: transitive 78 | description: 79 | name: fake_async 80 | sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" 81 | url: "https://pub.dev" 82 | source: hosted 83 | version: "1.3.1" 84 | ffi: 85 | dependency: transitive 86 | description: 87 | name: ffi 88 | sha256: ed5337a5660c506388a9f012be0288fb38b49020ce2b45fe1f8b8323fe429f99 89 | url: "https://pub.dev" 90 | source: hosted 91 | version: "2.0.2" 92 | flutter: 93 | dependency: "direct main" 94 | description: flutter 95 | source: sdk 96 | version: "0.0.0" 97 | flutter_staggered_animations: 98 | dependency: "direct main" 99 | description: 100 | name: flutter_staggered_animations 101 | sha256: "81d3c816c9bb0dca9e8a5d5454610e21ffb068aedb2bde49d2f8d04f75538351" 102 | url: "https://pub.dev" 103 | source: hosted 104 | version: "1.1.1" 105 | flutter_test: 106 | dependency: "direct dev" 107 | description: flutter 108 | source: sdk 109 | version: "0.0.0" 110 | google_fonts: 111 | dependency: "direct main" 112 | description: 113 | name: google_fonts 114 | sha256: "2776c66b3e97c6cdd58d1bd3281548b074b64f1fd5c8f82391f7456e38849567" 115 | url: "https://pub.dev" 116 | source: hosted 117 | version: "4.0.5" 118 | http: 119 | dependency: transitive 120 | description: 121 | name: http 122 | sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525" 123 | url: "https://pub.dev" 124 | source: hosted 125 | version: "1.1.0" 126 | http_parser: 127 | dependency: transitive 128 | description: 129 | name: http_parser 130 | sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" 131 | url: "https://pub.dev" 132 | source: hosted 133 | version: "4.0.2" 134 | js: 135 | dependency: transitive 136 | description: 137 | name: js 138 | sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 139 | url: "https://pub.dev" 140 | source: hosted 141 | version: "0.6.7" 142 | lottie: 143 | dependency: "direct main" 144 | description: 145 | name: lottie 146 | sha256: "0793a5866062e5cc8a8b24892fa94c3095953ea914a7fdf790f550dd7537fe60" 147 | url: "https://pub.dev" 148 | source: hosted 149 | version: "2.5.0" 150 | matcher: 151 | dependency: transitive 152 | description: 153 | name: matcher 154 | sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" 155 | url: "https://pub.dev" 156 | source: hosted 157 | version: "0.12.15" 158 | material_color_utilities: 159 | dependency: transitive 160 | description: 161 | name: material_color_utilities 162 | sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 163 | url: "https://pub.dev" 164 | source: hosted 165 | version: "0.2.0" 166 | meta: 167 | dependency: transitive 168 | description: 169 | name: meta 170 | sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" 171 | url: "https://pub.dev" 172 | source: hosted 173 | version: "1.9.1" 174 | path: 175 | dependency: transitive 176 | description: 177 | name: path 178 | sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" 179 | url: "https://pub.dev" 180 | source: hosted 181 | version: "1.8.3" 182 | path_provider: 183 | dependency: transitive 184 | description: 185 | name: path_provider 186 | sha256: "3087813781ab814e4157b172f1a11c46be20179fcc9bea043e0fba36bc0acaa2" 187 | url: "https://pub.dev" 188 | source: hosted 189 | version: "2.0.15" 190 | path_provider_android: 191 | dependency: transitive 192 | description: 193 | name: path_provider_android 194 | sha256: "2cec049d282c7f13c594b4a73976b0b4f2d7a1838a6dd5aaf7bd9719196bee86" 195 | url: "https://pub.dev" 196 | source: hosted 197 | version: "2.0.27" 198 | path_provider_foundation: 199 | dependency: transitive 200 | description: 201 | name: path_provider_foundation 202 | sha256: "916731ccbdce44d545414dd9961f26ba5fbaa74bcbb55237d8e65a623a8c7297" 203 | url: "https://pub.dev" 204 | source: hosted 205 | version: "2.2.4" 206 | path_provider_linux: 207 | dependency: transitive 208 | description: 209 | name: path_provider_linux 210 | sha256: ffbb8cc9ed2c9ec0e4b7a541e56fd79b138e8f47d2fb86815f15358a349b3b57 211 | url: "https://pub.dev" 212 | source: hosted 213 | version: "2.1.11" 214 | path_provider_platform_interface: 215 | dependency: transitive 216 | description: 217 | name: path_provider_platform_interface 218 | sha256: "57585299a729335f1298b43245842678cb9f43a6310351b18fb577d6e33165ec" 219 | url: "https://pub.dev" 220 | source: hosted 221 | version: "2.0.6" 222 | path_provider_windows: 223 | dependency: transitive 224 | description: 225 | name: path_provider_windows 226 | sha256: "1cb68ba4cd3a795033de62ba1b7b4564dace301f952de6bfb3cd91b202b6ee96" 227 | url: "https://pub.dev" 228 | source: hosted 229 | version: "2.1.7" 230 | platform: 231 | dependency: transitive 232 | description: 233 | name: platform 234 | sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76" 235 | url: "https://pub.dev" 236 | source: hosted 237 | version: "3.1.0" 238 | plugin_platform_interface: 239 | dependency: transitive 240 | description: 241 | name: plugin_platform_interface 242 | sha256: "6a2128648c854906c53fa8e33986fc0247a1116122f9534dd20e3ab9e16a32bc" 243 | url: "https://pub.dev" 244 | source: hosted 245 | version: "2.1.4" 246 | pointycastle: 247 | dependency: transitive 248 | description: 249 | name: pointycastle 250 | sha256: "7c1e5f0d23c9016c5bbd8b1473d0d3fb3fc851b876046039509e18e0c7485f2c" 251 | url: "https://pub.dev" 252 | source: hosted 253 | version: "3.7.3" 254 | sky_engine: 255 | dependency: transitive 256 | description: flutter 257 | source: sdk 258 | version: "0.0.99" 259 | source_span: 260 | dependency: transitive 261 | description: 262 | name: source_span 263 | sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 264 | url: "https://pub.dev" 265 | source: hosted 266 | version: "1.9.1" 267 | stack_trace: 268 | dependency: transitive 269 | description: 270 | name: stack_trace 271 | sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 272 | url: "https://pub.dev" 273 | source: hosted 274 | version: "1.11.0" 275 | stream_channel: 276 | dependency: transitive 277 | description: 278 | name: stream_channel 279 | sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" 280 | url: "https://pub.dev" 281 | source: hosted 282 | version: "2.1.1" 283 | string_scanner: 284 | dependency: transitive 285 | description: 286 | name: string_scanner 287 | sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" 288 | url: "https://pub.dev" 289 | source: hosted 290 | version: "1.2.0" 291 | term_glyph: 292 | dependency: transitive 293 | description: 294 | name: term_glyph 295 | sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 296 | url: "https://pub.dev" 297 | source: hosted 298 | version: "1.2.1" 299 | test_api: 300 | dependency: transitive 301 | description: 302 | name: test_api 303 | sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb 304 | url: "https://pub.dev" 305 | source: hosted 306 | version: "0.5.1" 307 | typed_data: 308 | dependency: transitive 309 | description: 310 | name: typed_data 311 | sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c 312 | url: "https://pub.dev" 313 | source: hosted 314 | version: "1.3.2" 315 | vector_math: 316 | dependency: transitive 317 | description: 318 | name: vector_math 319 | sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" 320 | url: "https://pub.dev" 321 | source: hosted 322 | version: "2.1.4" 323 | win32: 324 | dependency: transitive 325 | description: 326 | name: win32 327 | sha256: dfdf0136e0aa7a1b474ea133e67cb0154a0acd2599c4f3ada3b49d38d38793ee 328 | url: "https://pub.dev" 329 | source: hosted 330 | version: "5.0.5" 331 | xdg_directories: 332 | dependency: transitive 333 | description: 334 | name: xdg_directories 335 | sha256: e0b1147eec179d3911f1f19b59206448f78195ca1d20514134e10641b7d7fbff 336 | url: "https://pub.dev" 337 | source: hosted 338 | version: "1.0.1" 339 | sdks: 340 | dart: ">=3.0.0 <4.0.0" 341 | flutter: ">=3.10.0" 342 | -------------------------------------------------------------------------------- /pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: social_app_ui 2 | description: A Social app UI made with flutter. 3 | 4 | # The following defines the version and build number for your application. 5 | # A version number is three numbers separated by dots, like 1.2.43 6 | # followed by an optional build number separated by a +. 7 | # Both the version and the builder number may be overridden in flutter 8 | # build by specifying --build-name and --build-number, respectively. 9 | # In Android, build-name is used as versionName while build-number used as versionCode. 10 | # Read more about Android versioning at https://developer.android.com/studio/publish/versioning 11 | # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. 12 | # Read more about iOS versioning at 13 | # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html 14 | version: 1.0.0+1 15 | 16 | environment: 17 | sdk: ">=3.0.0 <4.0.0" 18 | 19 | dependencies: 20 | flutter: 21 | sdk: flutter 22 | cupertino_icons: ^1.0.5 23 | google_fonts: ^4.0.4 24 | flutter_staggered_animations: ^1.1.1 25 | lottie: ^2.4.0 26 | 27 | dev_dependencies: 28 | flutter_test: 29 | sdk: flutter 30 | 31 | # For information on the generic Dart part of this file, see the 32 | # following page: https://www.dartlang.org/tools/pub/pubspec 33 | 34 | # The following section is specific to Flutter. 35 | flutter: 36 | uses-material-design: true 37 | 38 | assets: 39 | - assets/images/ 40 | - assets/animations/ 41 | # An image asset can refer to one or more resolution-specific "variants", see 42 | # https://flutter.dev/assets-and-images/#resolution-aware. 43 | # For details regarding adding assets from package dependencies, see 44 | # https://flutter.dev/assets-and-images/#from-packages 45 | # To add custom fonts to your application, add a fonts section here, 46 | # in this "flutter" section. Each entry in this list should have a 47 | # "family" key with the font family name, and a "fonts" key with a 48 | # list giving the asset and other descriptors for the font. For 49 | # example: 50 | # fonts: 51 | # - family: Schyler 52 | # fonts: 53 | # - asset: fonts/Schyler-Regular.ttf 54 | # - asset: fonts/Schyler-Italic.ttf 55 | # style: italic 56 | # - family: Trajan Pro 57 | # fonts: 58 | # - asset: fonts/TrajanPro.ttf 59 | # - asset: fonts/TrajanPro_Bold.ttf 60 | # weight: 700 61 | # 62 | # For details regarding fonts from package dependencies, 63 | # see https://flutter.dev/custom-fonts/#from-packages 64 | -------------------------------------------------------------------------------- /ss/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/ss/1.png -------------------------------------------------------------------------------- /ss/10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/ss/10.png -------------------------------------------------------------------------------- /ss/11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/ss/11.png -------------------------------------------------------------------------------- /ss/12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/ss/12.png -------------------------------------------------------------------------------- /ss/13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/ss/13.png -------------------------------------------------------------------------------- /ss/14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/ss/14.png -------------------------------------------------------------------------------- /ss/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/ss/2.png -------------------------------------------------------------------------------- /ss/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/ss/3.png -------------------------------------------------------------------------------- /ss/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/ss/4.png -------------------------------------------------------------------------------- /ss/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/ss/5.png -------------------------------------------------------------------------------- /ss/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/ss/6.png -------------------------------------------------------------------------------- /ss/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/ss/7.png -------------------------------------------------------------------------------- /ss/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/ss/8.png -------------------------------------------------------------------------------- /ss/9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/ss/9.png -------------------------------------------------------------------------------- /test/widget_test.dart: -------------------------------------------------------------------------------- 1 | // This is a basic Flutter widget test. 2 | // 3 | // To perform an interaction with a widget in your test, use the WidgetTester 4 | // utility that Flutter provides. For example, you can send tap and scroll 5 | // gestures. You can also use WidgetTester to find child widgets in the widget 6 | // tree, read text, and verify that the values of widget properties are correct. 7 | 8 | import 'package:flutter/material.dart'; 9 | import 'package:flutter_test/flutter_test.dart'; 10 | 11 | import 'package:social_app_ui/app.dart'; 12 | 13 | void main() { 14 | testWidgets('Counter increments smoke test', (WidgetTester tester) async { 15 | // Build our app and trigger a frame. 16 | await tester.pumpWidget(MyApp()); 17 | 18 | // Verify that our counter starts at 0. 19 | expect(find.text('0'), findsOneWidget); 20 | expect(find.text('1'), findsNothing); 21 | 22 | // Tap the '+' icon and trigger a frame. 23 | await tester.tap(find.byIcon(Icons.add)); 24 | await tester.pump(); 25 | 26 | // Verify that our counter has incremented. 27 | expect(find.text('0'), findsNothing); 28 | expect(find.text('1'), findsOneWidget); 29 | }); 30 | } 31 | -------------------------------------------------------------------------------- /web/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/web/favicon.png -------------------------------------------------------------------------------- /web/icons/Icon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/web/icons/Icon-192.png -------------------------------------------------------------------------------- /web/icons/Icon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JideGuru/FlutterSocialAppUIKit/3db026e507beadd32a71e1e2b5d07c9672471ba1/web/icons/Icon-512.png -------------------------------------------------------------------------------- /web/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | FlutterSocialAppUIKit 18 | 19 | 20 | 21 | 24 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /web/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "FlutterSocialAppUIKit", 3 | "short_name": "FlutterSocialAppUIKit", 4 | "start_url": ".", 5 | "display": "standalone", 6 | "background_color": "#0175C2", 7 | "theme_color": "#0175C2", 8 | "description": "A new Flutter project.", 9 | "orientation": "portrait-primary", 10 | "prefer_related_applications": false, 11 | "icons": [ 12 | { 13 | "src": "icons/Icon-192.png", 14 | "sizes": "192x192", 15 | "type": "image/png" 16 | }, 17 | { 18 | "src": "icons/Icon-512.png", 19 | "sizes": "512x512", 20 | "type": "image/png" 21 | } 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /windows/flutter/ephemeral/.plugin_symlinks/path_provider_windows: -------------------------------------------------------------------------------- 1 | /Users/jideguru/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.2/ --------------------------------------------------------------------------------