├── README.md ├── assets ├── fonts │ └── Signatra.ttf └── images │ └── google_signin_button.png ├── ios ├── Flutter │ ├── Debug.xcconfig │ ├── Release.xcconfig │ ├── flutter_export_environment.sh │ ├── Flutter.podspec │ └── AppFrameworkInfo.plist ├── Runner │ ├── AppDelegate.h │ ├── Assets.xcassets │ │ ├── LaunchImage.imageset │ │ │ ├── LaunchImage.png │ │ │ ├── LaunchImage@2x.png │ │ │ ├── LaunchImage@3x.png │ │ │ ├── README.md │ │ │ └── Contents.json │ │ └── AppIcon.appiconset │ │ │ ├── Icon-App-20x20@1x.png │ │ │ ├── Icon-App-20x20@2x.png │ │ │ ├── Icon-App-20x20@3x.png │ │ │ ├── Icon-App-29x29@1x.png │ │ │ ├── Icon-App-29x29@2x.png │ │ │ ├── Icon-App-29x29@3x.png │ │ │ ├── Icon-App-40x40@1x.png │ │ │ ├── Icon-App-40x40@2x.png │ │ │ ├── Icon-App-40x40@3x.png │ │ │ ├── Icon-App-60x60@2x.png │ │ │ ├── Icon-App-60x60@3x.png │ │ │ ├── Icon-App-76x76@1x.png │ │ │ ├── Icon-App-76x76@2x.png │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ ├── Icon-App-83.5x83.5@2x.png │ │ │ └── Contents.json │ ├── main.m │ ├── AppDelegate.m │ ├── Base.lproj │ │ ├── Main.storyboard │ │ └── LaunchScreen.storyboard │ └── Info.plist ├── Runner.xcodeproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ ├── xcshareddata │ │ └── xcschemes │ │ │ └── Runner.xcscheme │ └── project.pbxproj ├── Runner.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── GoogleService-Info.plist ├── Podfile └── Podfile.lock ├── android ├── gradle.properties ├── app │ ├── src │ │ ├── main │ │ │ ├── res │ │ │ │ ├── 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 │ │ │ │ │ └── styles.xml │ │ │ │ └── drawable │ │ │ │ │ └── launch_background.xml │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── example │ │ │ │ │ └── buddiesshare │ │ │ │ │ └── MainActivity.java │ │ │ └── AndroidManifest.xml │ │ ├── debug │ │ │ └── AndroidManifest.xml │ │ └── profile │ │ │ └── AndroidManifest.xml │ ├── google-services.json │ └── build.gradle ├── gradle │ └── wrapper │ │ └── gradle-wrapper.properties ├── settings.gradle └── build.gradle ├── lib ├── widgets │ ├── CImageWidget.dart │ ├── PostTileWidget.dart │ ├── PostWidget.dart │ ├── ProgressWidget.dart │ └── HeaderWidget.dart ├── pages │ ├── PostScreenPage.dart │ ├── EditProfilePage.dart │ ├── ProfilePage.dart │ ├── CommentsPage.dart │ ├── TimeLinePage.dart │ ├── NotificationsPage.dart │ ├── UploadPage.dart │ ├── CreateAccountPage.dart │ ├── SearchPage.dart │ └── HomePage.dart ├── models │ └── user.dart └── main.dart ├── .metadata ├── .flutter-plugins-dependencies ├── test └── widget_test.dart ├── .gitignore ├── pubspec.yaml └── pubspec.lock /README.md: -------------------------------------------------------------------------------- 1 | ## Esinsta, a Social Network "Instagram" clone using flutter 2 | -------------------------------------------------------------------------------- /assets/fonts/Signatra.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RedaElmar/Esinsta/master/assets/fonts/Signatra.ttf -------------------------------------------------------------------------------- /assets/images/google_signin_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RedaElmar/Esinsta/master/assets/images/google_signin_button.png -------------------------------------------------------------------------------- /ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | android.enableJetifier=true 2 | android.useAndroidX=true 3 | org.gradle.jvmargs=-Xmx1536M 4 | android.enableR8=true 5 | -------------------------------------------------------------------------------- /ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /ios/Runner/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @interface AppDelegate : FlutterAppDelegate 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RedaElmar/Esinsta/master/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RedaElmar/Esinsta/master/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RedaElmar/Esinsta/master/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RedaElmar/Esinsta/master/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /lib/widgets/CImageWidget.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | cachedNetworkImage(mediaUrl) { 4 | return Text('cached network image'); 5 | } 6 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RedaElmar/Esinsta/master/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RedaElmar/Esinsta/master/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RedaElmar/Esinsta/master/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RedaElmar/Esinsta/master/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RedaElmar/Esinsta/master/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/RedaElmar/Esinsta/master/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/RedaElmar/Esinsta/master/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/RedaElmar/Esinsta/master/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/RedaElmar/Esinsta/master/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/RedaElmar/Esinsta/master/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/RedaElmar/Esinsta/master/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/RedaElmar/Esinsta/master/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/RedaElmar/Esinsta/master/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/RedaElmar/Esinsta/master/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/RedaElmar/Esinsta/master/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/RedaElmar/Esinsta/master/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/RedaElmar/Esinsta/master/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RedaElmar/Esinsta/master/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RedaElmar/Esinsta/master/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /lib/widgets/PostTileWidget.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class PostTile extends StatelessWidget { 4 | @override 5 | Widget build(BuildContext context) { 6 | return Text("Post Tile"); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /lib/pages/PostScreenPage.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class PostScreenPage extends StatelessWidget { 4 | @override 5 | Widget build(BuildContext context) { 6 | return Text("Post Screen goes here."); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /ios/Runner/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char* argv[]) { 6 | @autoreleasepool { 7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip 7 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /lib/widgets/PostWidget.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Post extends StatefulWidget { 4 | @override 5 | _PostState createState() => _PostState(); 6 | } 7 | 8 | class _PostState extends State { 9 | @override 10 | Widget build(BuildContext context) { 11 | return Text("Post"); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /.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: bb6c3f813146b72ea0f97098c913b45e93b694c4 8 | channel: master 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /lib/pages/EditProfilePage.dart: -------------------------------------------------------------------------------- 1 | import "package:flutter/material.dart"; 2 | 3 | class EditProfilePage extends StatefulWidget { 4 | @override 5 | _EditProfilePageState createState() => _EditProfilePageState(); 6 | } 7 | 8 | class _EditProfilePageState extends State { 9 | @override 10 | Widget build(BuildContext context) { 11 | return Text('Here goes Edit Profile Page'); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | -------------------------------------------------------------------------------- /android/app/src/main/java/com/example/buddiesshare/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.muhammadali.buddiesgram; 2 | 3 | import android.os.Bundle; 4 | import io.flutter.app.FlutterActivity; 5 | import io.flutter.plugins.GeneratedPluginRegistrant; 6 | 7 | public class MainActivity extends FlutterActivity { 8 | @Override 9 | protected void onCreate(Bundle savedInstanceState) { 10 | super.onCreate(savedInstanceState); 11 | GeneratedPluginRegistrant.registerWith(this); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /lib/pages/ProfilePage.dart: -------------------------------------------------------------------------------- 1 | import 'package:buddiesgram/widgets/HeaderWidget.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | class ProfilePage extends StatefulWidget { 5 | @override 6 | _ProfilePageState createState() => _ProfilePageState(); 7 | } 8 | 9 | class _ProfilePageState extends State { 10 | @override 11 | Widget build(BuildContext context) { 12 | return Scaffold( 13 | appBar: header(context, strTitle: "Profile"), 14 | ); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /ios/Runner/AppDelegate.m: -------------------------------------------------------------------------------- 1 | #include "AppDelegate.h" 2 | #include "GeneratedPluginRegistrant.h" 3 | 4 | @implementation AppDelegate 5 | 6 | - (BOOL)application:(UIApplication *)application 7 | didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 8 | [GeneratedPluginRegistrant registerWithRegistry:self]; 9 | // Override point for customization after application launch. 10 | return [super application:application didFinishLaunchingWithOptions:launchOptions]; 11 | } 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ios/Flutter/flutter_export_environment.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # This is a generated file; do not edit or check into version control. 3 | export "FLUTTER_ROOT=C:\flutter" 4 | export "FLUTTER_APPLICATION_PATH=C:\Users\HR\Desktop\buddies_gram" 5 | export "FLUTTER_TARGET=lib\main.dart" 6 | export "FLUTTER_BUILD_DIR=build" 7 | export "SYMROOT=${SOURCE_ROOT}/../build\ios" 8 | export "FLUTTER_FRAMEWORK_DIR=C:\flutter\bin\cache\artifacts\engine\ios" 9 | export "FLUTTER_BUILD_NAME=1.0.0" 10 | export "FLUTTER_BUILD_NUMBER=1" 11 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /lib/pages/CommentsPage.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class CommentsPage extends StatefulWidget { 4 | @override 5 | CommentsPageState createState() => CommentsPageState(); 6 | } 7 | 8 | class CommentsPageState extends State { 9 | @override 10 | Widget build(BuildContext context) { 11 | return Text('Here goes Comments Page'); 12 | } 13 | } 14 | 15 | class Comment extends StatelessWidget { 16 | @override 17 | Widget build(BuildContext context) { 18 | return Text('Comment'); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() 4 | 5 | def plugins = new Properties() 6 | def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') 7 | if (pluginsFile.exists()) { 8 | pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } 9 | } 10 | 11 | plugins.each { name, path -> 12 | def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() 13 | include ":$name" 14 | project(":$name").projectDir = pluginDirectory 15 | } 16 | -------------------------------------------------------------------------------- /lib/widgets/ProgressWidget.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | circularProgress() { 4 | return Container( 5 | alignment: Alignment.center, 6 | padding: EdgeInsets.only(top:12.0), 7 | child: CircularProgressIndicator(valueColor: AlwaysStoppedAnimation(Colors.lightBlueAccent),), 8 | ); 9 | } 10 | linearProgress() { 11 | return Container( 12 | alignment: Alignment.center, 13 | padding: EdgeInsets.only(top:12.0), 14 | child: LinearProgressIndicator(valueColor: AlwaysStoppedAnimation(Colors.lightBlueAccent),), 15 | ); 16 | } -------------------------------------------------------------------------------- /lib/pages/TimeLinePage.dart: -------------------------------------------------------------------------------- 1 | import 'package:buddiesgram/widgets/HeaderWidget.dart'; 2 | import 'package:buddiesgram/widgets/ProgressWidget.dart'; 3 | import 'package:flutter/material.dart'; 4 | 5 | class TimeLinePage extends StatefulWidget { 6 | @override 7 | _TimeLinePageState createState() => _TimeLinePageState(); 8 | } 9 | 10 | class _TimeLinePageState extends State { 11 | @override 12 | Widget build(context) { 13 | return Scaffold( 14 | appBar: header(context,isAppTitle: true,), 15 | body: circularProgress(), 16 | ); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/models/user.dart: -------------------------------------------------------------------------------- 1 | import 'package:cloud_firestore/cloud_firestore.dart'; 2 | 3 | class User { 4 | final String id; 5 | final String profileName; 6 | final String username; 7 | final String url; 8 | final String email; 9 | final String bio; 10 | 11 | User({ 12 | this.id, 13 | this.profileName, 14 | this.username, 15 | this.url, 16 | this.email, 17 | this.bio, 18 | }); 19 | 20 | factory User.fromDocument(DocumentSnapshot doc) { 21 | return User( 22 | id: doc.documentID, 23 | email: doc['email'], 24 | username: doc['username'], 25 | url: doc['url'], 26 | profileName: doc['profileName'], 27 | bio: doc['bio'], 28 | ); 29 | } 30 | } -------------------------------------------------------------------------------- /lib/pages/NotificationsPage.dart: -------------------------------------------------------------------------------- 1 | import 'package:buddiesgram/widgets/HeaderWidget.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | class NotificationsPage extends StatefulWidget { 5 | @override 6 | _NotificationsPageState createState() => _NotificationsPageState(); 7 | } 8 | 9 | class _NotificationsPageState extends State { 10 | @override 11 | Widget build(BuildContext context) { 12 | return Scaffold( 13 | appBar: header(context, strTitle: "Notifications"), 14 | ); 15 | } 16 | } 17 | 18 | class NotificationsItem extends StatelessWidget { 19 | @override 20 | Widget build(BuildContext context) { 21 | return Text('Activity Feed Item goes here'); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:buddiesgram/pages/HomePage.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | void main() 5 | { 6 | WidgetsFlutterBinding.ensureInitialized(); 7 | 8 | runApp(MyApp()); 9 | } 10 | 11 | class MyApp extends StatelessWidget { 12 | @override 13 | Widget build(BuildContext context) { 14 | return MaterialApp( 15 | title: 'BuddiesGram', 16 | debugShowCheckedModeBanner: false, 17 | theme: ThemeData 18 | ( 19 | scaffoldBackgroundColor: Colors.black, 20 | dialogBackgroundColor: Colors.black, 21 | primarySwatch: Colors.grey, 22 | cardColor: Colors.white70, 23 | accentColor: Colors.black, 24 | ), 25 | home: HomePage(), 26 | ); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /lib/widgets/HeaderWidget.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | AppBar header(context,{bool isAppTitle=false, String strTitle, disappearedBackButton=false}){ 4 | 5 | return AppBar( 6 | iconTheme: IconThemeData( 7 | color: Colors.white, 8 | ), 9 | automaticallyImplyLeading: disappearedBackButton ? false : true, 10 | title: Text( 11 | isAppTitle ? "Esinstagram": strTitle, 12 | style: TextStyle( 13 | color: Colors.white, 14 | fontFamily: isAppTitle ? "Signatra": "", 15 | fontSize: isAppTitle ? 45.0 : 22.0, 16 | ), 17 | overflow: TextOverflow.ellipsis, 18 | ), 19 | centerTitle: true, 20 | backgroundColor: Theme.of(context).accentColor, 21 | 22 | ); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | google() 4 | jcenter() 5 | } 6 | 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:3.3.2' 9 | classpath 'com.google.gms:google-services:4.0.1' 10 | 11 | } 12 | } 13 | 14 | allprojects { 15 | repositories { 16 | google() 17 | jcenter() 18 | maven { 19 | url "https://maven.google.com" // Google's Maven repository 20 | } 21 | } 22 | } 23 | 24 | rootProject.buildDir = '../build' 25 | subprojects { 26 | project.buildDir = "${rootProject.buildDir}/${project.name}" 27 | } 28 | subprojects { 29 | project.evaluationDependsOn(':app') 30 | } 31 | 32 | task clean(type: Delete) { 33 | delete rootProject.buildDir 34 | } -------------------------------------------------------------------------------- /ios/Flutter/Flutter.podspec: -------------------------------------------------------------------------------- 1 | # 2 | # NOTE: This podspec is NOT to be published. It is only used as a local source! 3 | # 4 | 5 | Pod::Spec.new do |s| 6 | s.name = 'Flutter' 7 | s.version = '1.0.0' 8 | s.summary = 'High-performance, high-fidelity mobile apps.' 9 | s.description = <<-DESC 10 | Flutter provides an easy and productive way to build and deploy high-performance mobile apps for Android and iOS. 11 | DESC 12 | s.homepage = 'https://flutter.io' 13 | s.license = { :type => 'MIT' } 14 | s.author = { 'Flutter Dev Team' => 'flutter-dev@googlegroups.com' } 15 | s.source = { :git => 'https://github.com/flutter/engine', :tag => s.version.to_s } 16 | s.ios.deployment_target = '8.0' 17 | s.vendored_frameworks = 'Flutter.framework' 18 | end 19 | -------------------------------------------------------------------------------- /.flutter-plugins-dependencies: -------------------------------------------------------------------------------- 1 | {"_info":"// This is a generated file; do not edit or check into version control.","dependencyGraph":[{"name":"cloud_firestore","dependencies":["firebase_core"]},{"name":"firebase_auth","dependencies":["firebase_core"]},{"name":"firebase_core","dependencies":[]},{"name":"firebase_messaging","dependencies":[]},{"name":"firebase_storage","dependencies":["firebase_core"]},{"name":"flutter_plugin_android_lifecycle","dependencies":[]},{"name":"geolocator","dependencies":["google_api_availability","location_permissions"]},{"name":"google_api_availability","dependencies":[]},{"name":"google_sign_in","dependencies":["google_sign_in_web"]},{"name":"google_sign_in_web","dependencies":[]},{"name":"image_picker","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"location_permissions","dependencies":[]},{"name":"path_provider","dependencies":[]},{"name":"sqflite","dependencies":[]}]} -------------------------------------------------------------------------------- /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 | 8.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /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:buddiesgram/main.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 | -------------------------------------------------------------------------------- /ios/GoogleService-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CLIENT_ID 6 | 410006906452-o69bgiu6f5p86apvhr3f90t8quhmq7mt.apps.googleusercontent.com 7 | REVERSED_CLIENT_ID 8 | com.googleusercontent.apps.410006906452-o69bgiu6f5p86apvhr3f90t8quhmq7mt 9 | ANDROID_CLIENT_ID 10 | 410006906452-2mvfft2v3ueecrbliqe7t4hehrm2vr6q.apps.googleusercontent.com 11 | API_KEY 12 | AIzaSyAwlTVLA1ydjr7u_F4S9ZB9CoYaUyC-Cuk 13 | GCM_SENDER_ID 14 | 410006906452 15 | PLIST_VERSION 16 | 1 17 | BUNDLE_ID 18 | com.muhammadali.buddiesgram 19 | PROJECT_ID 20 | social-network-d4a26 21 | STORAGE_BUCKET 22 | social-network-d4a26.appspot.com 23 | IS_ADS_ENABLED 24 | 25 | IS_ANALYTICS_ENABLED 26 | 27 | IS_APPINVITE_ENABLED 28 | 29 | IS_GCM_ENABLED 30 | 31 | IS_SIGNIN_ENABLED 32 | 33 | GOOGLE_APP_ID 34 | 1:410006906452:ios:93095860a889e4e69c6fc1 35 | DATABASE_URL 36 | https://social-network-d4a26.firebaseio.com 37 | 38 | -------------------------------------------------------------------------------- /android/app/google-services.json: -------------------------------------------------------------------------------- 1 | { 2 | "project_info": { 3 | "project_number": "330710929617", 4 | "firebase_url": "https://instapp-4ced5.firebaseio.com", 5 | "project_id": "instapp-4ced5", 6 | "storage_bucket": "instapp-4ced5.appspot.com" 7 | }, 8 | "client": [ 9 | { 10 | "client_info": { 11 | "mobilesdk_app_id": "1:330710929617:android:d5b182a279db17bc7835f0", 12 | "android_client_info": { 13 | "package_name": "com.muhammadali.buddiesgram" 14 | } 15 | }, 16 | "oauth_client": [ 17 | { 18 | "client_id": "330710929617-mfre635advgu6ev1m083g9cut89df8lp.apps.googleusercontent.com", 19 | "client_type": 1, 20 | "android_info": { 21 | "package_name": "com.muhammadali.buddiesgram", 22 | "certificate_hash": "9e540522128814867e9ad7d357b1b9e43086f77e" 23 | } 24 | }, 25 | { 26 | "client_id": "330710929617-3ppq91jcqvti5sg3vgu2acuvhooj9e47.apps.googleusercontent.com", 27 | "client_type": 3 28 | } 29 | ], 30 | "api_key": [ 31 | { 32 | "current_key": "AIzaSyBgu36Ew4C3HffkAM516k-X94tVDJdSUps" 33 | } 34 | ], 35 | "services": { 36 | "appinvite_service": { 37 | "other_platform_oauth_client": [ 38 | { 39 | "client_id": "330710929617-3ppq91jcqvti5sg3vgu2acuvhooj9e47.apps.googleusercontent.com", 40 | "client_type": 3 41 | } 42 | ] 43 | } 44 | } 45 | } 46 | ], 47 | "configuration_version": "1" 48 | } -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | 12 | # IntelliJ related 13 | *.iml 14 | *.ipr 15 | *.iws 16 | .idea/ 17 | 18 | # The .vscode folder contains launch configuration and tasks you configure in 19 | # VS Code which you may wish to be included in version control, so this line 20 | # is commented out by default. 21 | #.vscode/ 22 | 23 | # Flutter/Dart/Pub related 24 | **/doc/api/ 25 | .dart_tool/ 26 | .flutter-plugins 27 | .packages 28 | .pub-cache/ 29 | .pub/ 30 | /build/ 31 | 32 | # Android related 33 | **/android/**/gradle-wrapper.jar 34 | **/android/.gradle 35 | **/android/captures/ 36 | **/android/gradlew 37 | **/android/gradlew.bat 38 | **/android/local.properties 39 | **/android/**/GeneratedPluginRegistrant.java 40 | 41 | # iOS/XCode related 42 | **/ios/**/*.mode1v3 43 | **/ios/**/*.mode2v3 44 | **/ios/**/*.moved-aside 45 | **/ios/**/*.pbxuser 46 | **/ios/**/*.perspectivev3 47 | **/ios/**/*sync/ 48 | **/ios/**/.sconsign.dblite 49 | **/ios/**/.tags* 50 | **/ios/**/.vagrant/ 51 | **/ios/**/DerivedData/ 52 | **/ios/**/Icon? 53 | **/ios/**/Pods/ 54 | **/ios/**/.symlinks/ 55 | **/ios/**/profile 56 | **/ios/**/xcuserdata 57 | **/ios/.generated/ 58 | **/ios/Flutter/App.framework 59 | **/ios/Flutter/Flutter.framework 60 | **/ios/Flutter/Generated.xcconfig 61 | **/ios/Flutter/app.flx 62 | **/ios/Flutter/app.zip 63 | **/ios/Flutter/flutter_assets/ 64 | **/ios/ServiceDefinitions.json 65 | **/ios/Runner/GeneratedPluginRegistrant.* 66 | 67 | # Exceptions to above rules. 68 | !**/ios/**/default.mode1v3 69 | !**/ios/**/default.mode2v3 70 | !**/ios/**/default.pbxuser 71 | !**/ios/**/default.perspectivev3 72 | !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages 73 | -------------------------------------------------------------------------------- /android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 9 | 13 | 20 | 24 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /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 | apply plugin: 'com.android.application' 15 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" 16 | 17 | android { 18 | compileSdkVersion 28 19 | 20 | lintOptions { 21 | disable 'InvalidPackage' 22 | } 23 | 24 | defaultConfig { 25 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). 26 | applicationId "com.muhammadali.buddiesgram" 27 | minSdkVersion 16 28 | targetSdkVersion 28 29 | versionCode 1 30 | versionName "1.2.2" 31 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 32 | multiDexEnabled true 33 | } 34 | 35 | buildTypes { 36 | release { 37 | // TODO: Add your own signing config for the release build. 38 | // Signing with the debug keys for now, so `flutter run --release` works. 39 | signingConfig signingConfigs.debug 40 | } 41 | } 42 | } 43 | 44 | flutter { 45 | source '../..' 46 | } 47 | 48 | dependencies { 49 | testImplementation 'junit:junit:4.12' 50 | androidTestImplementation 'androidx.test:runner:1.1.0-alpha4' 51 | androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4' 52 | implementation 'com.google.firebase:firebase-core:16.0.1' 53 | 54 | } 55 | apply plugin: 'com.google.gms.google-services' -------------------------------------------------------------------------------- /pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: buddiesgram 2 | description: A new Flutter project. 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: ">=2.1.0 <3.0.0" 18 | 19 | dependencies: 20 | flutter: 21 | sdk: flutter 22 | cloud_firestore: ^0.9.7+2 23 | image: ^2.0.7 24 | animator: 0.1.4 25 | image_picker: ^0.6.0+2 26 | google_sign_in: ^4.0.1+1 27 | timeago: 2.0.17 28 | cached_network_image: 29 | firebase_auth: ^0.8.3 30 | geolocator: 5.0.1 31 | uuid: ^2.0.0 32 | cupertino_icons: ^0.1.2 33 | path_provider: ^0.5.0+1 34 | firebase_messaging: ^4.0.0+1 35 | firebase_storage: ^2.1.0+1 36 | flutter_svg: 37 | 38 | dev_dependencies: 39 | flutter_test: 40 | sdk: flutter 41 | 42 | # For information on the generic Dart part of this file, see the 43 | # following page: https://dart.dev/tools/pub/pubspec 44 | 45 | # The following section is specific to Flutter. 46 | flutter: 47 | uses-material-design: true 48 | fonts: 49 | - family: Signatra 50 | fonts: 51 | - asset: assets/fonts/Signatra.ttf 52 | assets: 53 | - assets/images/google_signin_button.png 54 | -------------------------------------------------------------------------------- /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/Podfile: -------------------------------------------------------------------------------- 1 | # Uncomment this line to define a global platform for your project 2 | platform :ios, '9.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 parse_KV_file(file, separator='=') 14 | file_abs_path = File.expand_path(file) 15 | if !File.exists? file_abs_path 16 | return []; 17 | end 18 | pods_ary = [] 19 | skip_line_start_symbols = ["#", "/"] 20 | File.foreach(file_abs_path) { |line| 21 | next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ } 22 | plugin = line.split(pattern=separator) 23 | if plugin.length == 2 24 | podname = plugin[0].strip() 25 | path = plugin[1].strip() 26 | podpath = File.expand_path("#{path}", file_abs_path) 27 | pods_ary.push({:name => podname, :path => podpath}); 28 | else 29 | puts "Invalid plugin specification: #{line}" 30 | end 31 | } 32 | return pods_ary 33 | end 34 | 35 | target 'Runner' do 36 | # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock 37 | # referring to absolute paths on developers' machines. 38 | system('rm -rf .symlinks') 39 | system('mkdir -p .symlinks/plugins') 40 | 41 | # Flutter Pods 42 | generated_xcode_build_settings = parse_KV_file('./Flutter/Generated.xcconfig') 43 | if generated_xcode_build_settings.empty? 44 | puts "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first." 45 | end 46 | generated_xcode_build_settings.map { |p| 47 | if p[:name] == 'FLUTTER_FRAMEWORK_DIR' 48 | symlink = File.join('.symlinks', 'flutter') 49 | File.symlink(File.dirname(p[:path]), symlink) 50 | pod 'Flutter', :path => File.join(symlink, File.basename(p[:path])) 51 | end 52 | } 53 | 54 | # Plugin Pods 55 | plugin_pods = parse_KV_file('../.flutter-plugins') 56 | plugin_pods.map { |p| 57 | symlink = File.join('.symlinks', 'plugins', p[:name]) 58 | File.symlink(p[:path], symlink) 59 | pod p[:name], :path => File.join(symlink, 'ios') 60 | } 61 | end 62 | 63 | # Prevent Cocoapods from embedding a second Flutter framework and causing an error with the new Xcode build system. 64 | install! 'cocoapods', :disable_input_output_paths => true 65 | 66 | post_install do |installer| 67 | installer.pods_project.targets.each do |target| 68 | target.build_configurations.each do |config| 69 | config.build_settings['ENABLE_BITCODE'] = 'NO' 70 | end 71 | end 72 | end 73 | -------------------------------------------------------------------------------- /lib/pages/UploadPage.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:image_picker/image_picker.dart'; 3 | import 'dart:io'; 4 | class UploadPage extends StatefulWidget { 5 | @override 6 | _UploadPageState createState() => _UploadPageState(); 7 | } 8 | 9 | class _UploadPageState extends State { 10 | File file; 11 | captureImageWithCamera()async{ 12 | Navigator.pop(context); 13 | File imageFile = await ImagePicker.pickImage( 14 | source: ImageSource.camera, 15 | maxHeight: 680, 16 | maxWidth: 970, 17 | ); 18 | setState(() { 19 | this.file = imageFile; 20 | }); 21 | } 22 | pickImageFromGallery()async{ 23 | Navigator.pop(context); 24 | File imageFile = await ImagePicker.pickImage( 25 | source: ImageSource.gallery, 26 | ); 27 | setState(() { 28 | this.file = imageFile; 29 | }); 30 | } 31 | 32 | 33 | takeImage(mContext){ 34 | return showDialog( 35 | context: mContext, 36 | builder: (context){ 37 | return SimpleDialog( 38 | title: Text("New Post", style: TextStyle(color: Colors.white,fontWeight: FontWeight.bold),), 39 | children: [ 40 | SimpleDialogOption( 41 | child: Text("Capture Image with Camera", style: TextStyle(color: Colors.white),), 42 | onPressed: captureImageWithCamera, 43 | ), 44 | SimpleDialogOption( 45 | child: Text("Select Image from Gallery", style: TextStyle(color: Colors.white),), 46 | onPressed: pickImageFromGallery, 47 | ), 48 | SimpleDialogOption( 49 | child: Text("Cancel", style: TextStyle(color: Colors.white),), 50 | onPressed:() => Navigator.pop(context), 51 | ), 52 | ], 53 | ); 54 | } 55 | ); 56 | } 57 | displayUploadScreen(){ 58 | return Container( 59 | color: Theme.of(context).accentColor.withOpacity(0.5), 60 | child: Column( 61 | mainAxisAlignment: MainAxisAlignment.center, 62 | children: [ 63 | Icon(Icons.add_photo_alternate,color: Colors.grey, size: 200.0,), 64 | Padding( 65 | padding: EdgeInsets.only(top: 20.0), 66 | child: RaisedButton( 67 | shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(9.0),), 68 | child: Text("Upload Image",style: TextStyle(color: Colors.white,fontSize: 20.0),), 69 | color: Colors.blueAccent, 70 | onPressed: ()=> takeImage(context)), 71 | ), 72 | ], 73 | ), 74 | ); 75 | } 76 | 77 | 78 | 79 | @override 80 | Widget build(BuildContext context) { 81 | return displayUploadScreen(); 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /ios/Runner/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | CFBundleURLTypes 7 | 8 | 9 | CFBundleTypeRole 10 | Editor 11 | CFBundleURLSchemes 12 | 13 | 14 | 15 | com.googleusercontent.apps.59618786383-06uqombe6l6uf7p44l18vd8m90hjlhe5 16 | 17 | 18 | 19 | 20 | 21 | 22 | NSLocationWhenInUseUsageDescription 23 | This app needs access to location when open. 24 | 25 | 26 | 27 | NSCameraUsageDescription 28 | Used to demonstrate image picker plugin 29 | NSMicrophoneUsageDescription 30 | Used to capture audio for image picker plugin 31 | NSPhotoLibraryUsageDescription 32 | Used to demonstrate image picker plugin 33 | 34 | 35 | CFBundleDevelopmentRegion 36 | $(DEVELOPMENT_LANGUAGE) 37 | CFBundleExecutable 38 | $(EXECUTABLE_NAME) 39 | CFBundleIdentifier 40 | $(PRODUCT_BUNDLE_IDENTIFIER) 41 | CFBundleInfoDictionaryVersion 42 | 6.0 43 | CFBundleName 44 | Buddies Gram 45 | CFBundlePackageType 46 | APPL 47 | CFBundleShortVersionString 48 | $(FLUTTER_BUILD_NAME) 49 | CFBundleSignature 50 | ???? 51 | CFBundleVersion 52 | $(FLUTTER_BUILD_NUMBER) 53 | LSRequiresIPhoneOS 54 | 55 | UILaunchStoryboardName 56 | LaunchScreen 57 | UIMainStoryboardFile 58 | Main 59 | UISupportedInterfaceOrientations 60 | 61 | UIInterfaceOrientationPortrait 62 | UIInterfaceOrientationLandscapeLeft 63 | UIInterfaceOrientationLandscapeRight 64 | 65 | UISupportedInterfaceOrientations~ipad 66 | 67 | UIInterfaceOrientationPortrait 68 | UIInterfaceOrientationPortraitUpsideDown 69 | UIInterfaceOrientationLandscapeLeft 70 | UIInterfaceOrientationLandscapeRight 71 | 72 | UIViewControllerBasedStatusBarAppearance 73 | 74 | 75 | 76 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "20x20", 5 | "idiom" : "iphone", 6 | "filename" : "Icon-App-20x20@2x.png", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "size" : "20x20", 11 | "idiom" : "iphone", 12 | "filename" : "Icon-App-20x20@3x.png", 13 | "scale" : "3x" 14 | }, 15 | { 16 | "size" : "29x29", 17 | "idiom" : "iphone", 18 | "filename" : "Icon-App-29x29@1x.png", 19 | "scale" : "1x" 20 | }, 21 | { 22 | "size" : "29x29", 23 | "idiom" : "iphone", 24 | "filename" : "Icon-App-29x29@2x.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "29x29", 29 | "idiom" : "iphone", 30 | "filename" : "Icon-App-29x29@3x.png", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "size" : "40x40", 35 | "idiom" : "iphone", 36 | "filename" : "Icon-App-40x40@2x.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "40x40", 41 | "idiom" : "iphone", 42 | "filename" : "Icon-App-40x40@3x.png", 43 | "scale" : "3x" 44 | }, 45 | { 46 | "size" : "60x60", 47 | "idiom" : "iphone", 48 | "filename" : "Icon-App-60x60@2x.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "60x60", 53 | "idiom" : "iphone", 54 | "filename" : "Icon-App-60x60@3x.png", 55 | "scale" : "3x" 56 | }, 57 | { 58 | "size" : "20x20", 59 | "idiom" : "ipad", 60 | "filename" : "Icon-App-20x20@1x.png", 61 | "scale" : "1x" 62 | }, 63 | { 64 | "size" : "20x20", 65 | "idiom" : "ipad", 66 | "filename" : "Icon-App-20x20@2x.png", 67 | "scale" : "2x" 68 | }, 69 | { 70 | "size" : "29x29", 71 | "idiom" : "ipad", 72 | "filename" : "Icon-App-29x29@1x.png", 73 | "scale" : "1x" 74 | }, 75 | { 76 | "size" : "29x29", 77 | "idiom" : "ipad", 78 | "filename" : "Icon-App-29x29@2x.png", 79 | "scale" : "2x" 80 | }, 81 | { 82 | "size" : "40x40", 83 | "idiom" : "ipad", 84 | "filename" : "Icon-App-40x40@1x.png", 85 | "scale" : "1x" 86 | }, 87 | { 88 | "size" : "40x40", 89 | "idiom" : "ipad", 90 | "filename" : "Icon-App-40x40@2x.png", 91 | "scale" : "2x" 92 | }, 93 | { 94 | "size" : "76x76", 95 | "idiom" : "ipad", 96 | "filename" : "Icon-App-76x76@1x.png", 97 | "scale" : "1x" 98 | }, 99 | { 100 | "size" : "76x76", 101 | "idiom" : "ipad", 102 | "filename" : "Icon-App-76x76@2x.png", 103 | "scale" : "2x" 104 | }, 105 | { 106 | "size" : "83.5x83.5", 107 | "idiom" : "ipad", 108 | "filename" : "Icon-App-83.5x83.5@2x.png", 109 | "scale" : "2x" 110 | }, 111 | { 112 | "size" : "1024x1024", 113 | "idiom" : "ios-marketing", 114 | "filename" : "Icon-App-1024x1024@1x.png", 115 | "scale" : "1x" 116 | } 117 | ], 118 | "info" : { 119 | "version" : 1, 120 | "author" : "xcode" 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 43 | 44 | 54 | 56 | 62 | 63 | 64 | 65 | 66 | 67 | 73 | 75 | 81 | 82 | 83 | 84 | 86 | 87 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /lib/pages/CreateAccountPage.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | 3 | import 'package:buddiesgram/widgets/HeaderWidget.dart'; 4 | import 'package:flutter/material.dart'; 5 | 6 | class CreateAccountPage extends StatefulWidget { 7 | @override 8 | _CreateAccountPageState createState() => _CreateAccountPageState(); 9 | } 10 | 11 | class _CreateAccountPageState extends State { 12 | final _scaffoldKey = GlobalKey(); 13 | final _formKey = GlobalKey(); 14 | String username; 15 | 16 | submitUsername(){ 17 | final form = _formKey.currentState; 18 | if(form.validate()){ 19 | form.save(); 20 | SnackBar snackBar = SnackBar(content: Text("Welcome "+ username),); 21 | _scaffoldKey.currentState.showSnackBar(snackBar); 22 | Timer(Duration(seconds: 4), (){ 23 | Navigator.pop(context,username); 24 | }); 25 | } 26 | } 27 | 28 | @override 29 | Widget build(BuildContext parentContext) { 30 | return Scaffold( 31 | key: _scaffoldKey, 32 | appBar: header(context, strTitle: "Settings",disappearedBackButton: true), 33 | body: ListView( 34 | children: [ 35 | Container( 36 | child: Column( 37 | children: [ 38 | Padding( 39 | padding: EdgeInsets.only(top:26.0), 40 | child: Center( 41 | child: Text("Set up a username",style: TextStyle(fontSize: 26.0),), 42 | ) 43 | ), 44 | Padding( 45 | padding: EdgeInsets.all(17.0), 46 | child: Container( 47 | child: Form( 48 | key: _formKey, 49 | autovalidate: true, 50 | child: TextFormField( 51 | style: TextStyle(color: Colors.white), 52 | validator: (val){ 53 | if(val.trim().length<5 || val.isEmpty){ 54 | return "user name is very short"; 55 | }else if (val.trim().length>15){ 56 | return "user name is very long"; 57 | }else{ 58 | return null; 59 | } 60 | }, 61 | onSaved :(val)=> username = val , 62 | decoration: InputDecoration( 63 | enabledBorder: UnderlineInputBorder( 64 | borderSide: BorderSide(color: Colors.grey), 65 | ), 66 | focusedBorder: UnderlineInputBorder( 67 | borderSide: BorderSide(color: Colors.white), 68 | ), 69 | border:OutlineInputBorder(), 70 | labelText: "Username", 71 | labelStyle: TextStyle(fontSize: 16.0), 72 | hintText: "Must be at least 5 characters", 73 | hintStyle: TextStyle(color: Colors.grey), 74 | ), 75 | ) 76 | ) 77 | ), 78 | ), 79 | GestureDetector( 80 | onTap: submitUsername, 81 | child: Container( 82 | height: 55.0, 83 | width: 360.0, 84 | decoration: BoxDecoration( 85 | color: Colors.blueAccent, 86 | borderRadius: BorderRadius.circular(8.0), 87 | ), 88 | child: Center( 89 | child: Text( 90 | "Proceed", 91 | style: TextStyle( 92 | color: Colors.white, 93 | fontSize: 16.0, 94 | fontWeight: FontWeight.bold, 95 | ), 96 | ), 97 | ), 98 | ), 99 | ) 100 | ], 101 | ), 102 | ) 103 | ], 104 | ), 105 | ); 106 | } 107 | } 108 | -------------------------------------------------------------------------------- /lib/pages/SearchPage.dart: -------------------------------------------------------------------------------- 1 | import 'package:buddiesgram/models/user.dart'; 2 | import 'package:buddiesgram/widgets/ProgressWidget.dart'; 3 | import 'package:cached_network_image/cached_network_image.dart'; 4 | import 'package:cloud_firestore/cloud_firestore.dart'; 5 | import 'package:flutter/material.dart'; 6 | import 'package:buddiesgram/pages/HomePage.dart'; 7 | 8 | class SearchPage extends StatefulWidget { 9 | @override 10 | _SearchPageState createState() => _SearchPageState(); 11 | } 12 | 13 | 14 | 15 | 16 | 17 | 18 | class _SearchPageState extends State with AutomaticKeepAliveClientMixin{ 19 | TextEditingController searchTextEditingController =TextEditingController(); 20 | Future futureSearchResults; 21 | emptyTheTextFormField(){ 22 | searchTextEditingController.clear(); 23 | } 24 | controlSearching(String str){ 25 | Future allUsers = userReference.where("profileName", isGreaterThanOrEqualTo: str).getDocuments(); 26 | setState(() { 27 | futureSearchResults=allUsers; 28 | }); 29 | } 30 | 31 | AppBar searchPageHeader(){ 32 | return AppBar( 33 | backgroundColor: Colors.black, 34 | title: TextFormField( 35 | style: TextStyle(fontSize:18.0 ,color: Colors.white), 36 | controller: searchTextEditingController, 37 | decoration: InputDecoration( 38 | hintText:"Search here...", 39 | hintStyle: TextStyle(color: Colors.grey), 40 | enabledBorder: UnderlineInputBorder( 41 | borderSide: BorderSide(color: Colors.grey), 42 | ), 43 | focusedBorder: UnderlineInputBorder( 44 | borderSide: BorderSide(color: Colors.white), 45 | ), 46 | filled: true, 47 | prefixIcon: Icon(Icons.person_pin,color: Colors.white,size: 30.0,), 48 | suffixIcon: IconButton(icon:Icon(Icons.clear,color: Colors.white,),onPressed: emptyTheTextFormField) 49 | ), 50 | onFieldSubmitted: controlSearching, 51 | ), 52 | ); 53 | } 54 | 55 | Container displayNoSearchResultScreen(){ 56 | final Orientation orientation = MediaQuery.of(context).orientation; 57 | return Container( 58 | child: Center( 59 | child: ListView( 60 | shrinkWrap: true, 61 | children: [ 62 | Icon(Icons.group, color: Colors.grey, size: 160.0,), 63 | Text( 64 | "Search Users", 65 | textAlign: TextAlign.center, 66 | style: TextStyle(color: Colors.white,fontWeight: FontWeight.w500,fontSize: 25.0), 67 | ), 68 | ] 69 | ) 70 | ) 71 | ); 72 | } 73 | displayUsersFoundScreen(){ 74 | return FutureBuilder( 75 | future: futureSearchResults, 76 | builder:(context, dataSnapshot){ 77 | 78 | if(!dataSnapshot.hasData){ 79 | return circularProgress(); 80 | } 81 | List searchUsersResult = []; 82 | dataSnapshot.data.documents.forEach((document){ 83 | User eachUser =User.fromDocument(document); 84 | UserResult userResult = UserResult(eachUser); 85 | searchUsersResult.add(userResult); 86 | }); 87 | return ListView(children: searchUsersResult); 88 | }, 89 | ); 90 | } 91 | 92 | bool get wantKeepAlive =>true; 93 | 94 | @override 95 | Widget build(BuildContext context) { 96 | return Scaffold( 97 | backgroundColor: Colors.black, 98 | appBar: searchPageHeader(), 99 | body: futureSearchResults == null ? displayNoSearchResultScreen() : displayUsersFoundScreen(), 100 | 101 | ); 102 | } 103 | } 104 | 105 | 106 | 107 | 108 | 109 | class UserResult extends StatelessWidget { 110 | final User eachUser; 111 | UserResult(this.eachUser); 112 | @override 113 | Widget build(BuildContext context) { 114 | return Padding( 115 | padding: EdgeInsets.all(4.0), 116 | child: Container( 117 | color: Colors.white54, 118 | child: Column( 119 | children: [ 120 | GestureDetector( 121 | onTap: ()=>print("tapped"), 122 | child: ListTile( 123 | leading: CircleAvatar(backgroundColor: Colors.black,backgroundImage: CachedNetworkImageProvider(eachUser.url),), 124 | title: Text(eachUser.profileName,style: TextStyle( 125 | color: Colors.black, fontSize: 13.0, 126 | ),), 127 | subtitle: Text(eachUser.username,style: TextStyle( 128 | color: Colors.black, fontSize: 16.0,fontWeight: FontWeight.bold, 129 | ), 130 | ), 131 | ), 132 | ), 133 | ], 134 | 135 | ), 136 | 137 | ), 138 | ); 139 | } 140 | } 141 | -------------------------------------------------------------------------------- /lib/pages/HomePage.dart: -------------------------------------------------------------------------------- 1 | import 'package:buddiesgram/models/user.dart'; 2 | import 'package:buddiesgram/pages/CreateAccountPage.dart'; 3 | import 'package:buddiesgram/pages/NotificationsPage.dart'; 4 | import 'package:buddiesgram/pages/ProfilePage.dart'; 5 | import 'package:buddiesgram/pages/SearchPage.dart'; 6 | import 'package:buddiesgram/pages/TimeLinePage.dart'; 7 | import 'package:buddiesgram/pages/UploadPage.dart'; 8 | import 'package:cloud_firestore/cloud_firestore.dart'; 9 | import 'package:flutter/cupertino.dart'; 10 | import 'package:flutter/material.dart'; 11 | import 'package:google_sign_in/google_sign_in.dart'; 12 | 13 | 14 | final GoogleSignIn gSignIn = GoogleSignIn(); 15 | final userReference = Firestore.instance.collection("users"); 16 | final DateTime timestamp = DateTime.now(); 17 | User currentUser; 18 | class HomePage extends StatefulWidget { 19 | @override 20 | _HomePageState createState() => _HomePageState(); 21 | } 22 | 23 | class _HomePageState extends State { 24 | bool isSignedIn = false; 25 | PageController pageController; 26 | int getPageIndex=0; 27 | void initState(){ 28 | super.initState(); 29 | pageController = PageController(); 30 | gSignIn.onCurrentUserChanged.listen((gSigninAccount){ 31 | controlSignIn(gSigninAccount); 32 | }, onError: (gError){ 33 | print("Error Message: "+ gError); 34 | }); 35 | gSignIn.signInSilently(suppressErrors: false).then((gSignInAccount){ 36 | controlSignIn(gSignInAccount); 37 | }).catchError((gError){ 38 | print("Error Message: "+ gError); 39 | }); 40 | } 41 | 42 | controlSignIn(GoogleSignInAccount signInAccount) async{ 43 | if (signInAccount !=null){ 44 | await saveUserInfoToFireStore(); 45 | setState(() { 46 | isSignedIn=true; 47 | }); 48 | } 49 | else 50 | { 51 | setState(() { 52 | isSignedIn=false; 53 | }); 54 | } 55 | } 56 | 57 | saveUserInfoToFireStore() async{ 58 | final GoogleSignInAccount gCurrentUser = gSignIn.currentUser; 59 | DocumentSnapshot documentSnapshot = await userReference.document(gCurrentUser.id).get(); 60 | 61 | if(!documentSnapshot.exists){ 62 | final username = await Navigator.push(context, MaterialPageRoute(builder: (context) => CreateAccountPage())); 63 | userReference.document(gCurrentUser.id).setData({ 64 | "id" : gCurrentUser.id, 65 | "profileName":gCurrentUser.displayName, 66 | "username":username, 67 | "url":gCurrentUser.photoUrl, 68 | "email":gCurrentUser.email, 69 | "bio":"", 70 | "timestamp":timestamp, 71 | }); 72 | documentSnapshot = await userReference.document(gCurrentUser.id).get(); 73 | } 74 | currentUser = User.fromDocument(documentSnapshot); 75 | } 76 | 77 | void dispose(){ 78 | pageController.dispose(); 79 | super.dispose(); 80 | 81 | } 82 | 83 | loginUser(){ 84 | gSignIn.signIn(); 85 | } 86 | 87 | logoutUser(){ 88 | gSignIn.signOut(); 89 | } 90 | whenPageChanges(int pageIndex){ 91 | setState(() { 92 | this.getPageIndex=pageIndex; 93 | }); 94 | } 95 | onTapChangePage(int pageIndex){ 96 | pageController.animateToPage(pageIndex, duration: Duration(milliseconds: 400), curve: Curves.bounceInOut); 97 | } 98 | Scaffold buildHomeScreen(){ 99 | return Scaffold( 100 | body: PageView( 101 | children: [ 102 | //TimeLinePage(), 103 | RaisedButton.icon(onPressed: logoutUser, icon: Icon(Icons.close), label: Text("Sign Out")), 104 | SearchPage(), 105 | UploadPage(), 106 | NotificationsPage(), 107 | ProfilePage(), 108 | ], 109 | controller: pageController, 110 | onPageChanged: whenPageChanges, 111 | physics: NeverScrollableScrollPhysics(), 112 | ), 113 | bottomNavigationBar: CupertinoTabBar( 114 | currentIndex: getPageIndex, 115 | onTap: onTapChangePage, 116 | backgroundColor: Theme.of(context).accentColor, 117 | activeColor: Colors.white, 118 | inactiveColor: Colors.blueGrey, 119 | items: [ 120 | BottomNavigationBarItem(icon: Icon(Icons.home)), 121 | BottomNavigationBarItem(icon: Icon(Icons.search)), 122 | BottomNavigationBarItem(icon: Icon(Icons.photo_camera,size:37.0)), 123 | BottomNavigationBarItem(icon: Icon(Icons.favorite)), 124 | BottomNavigationBarItem(icon: Icon(Icons.person)), 125 | 126 | ], 127 | ), 128 | 129 | ); 130 | } 131 | 132 | Scaffold buildSignInScreen(){ 133 | return Scaffold( 134 | body: Container( 135 | decoration: BoxDecoration( 136 | gradient: LinearGradient( 137 | begin: Alignment.topRight, 138 | end: Alignment.bottomLeft, 139 | colors: [Theme.of(context).accentColor,Theme.of(context).primaryColor], 140 | ), 141 | ), 142 | alignment: Alignment.center, 143 | child: Column( 144 | mainAxisAlignment: MainAxisAlignment.center, 145 | crossAxisAlignment: CrossAxisAlignment.center, 146 | children: [ 147 | Text( 148 | "Esinstagram", 149 | style: TextStyle(fontSize:92.0,color: Colors.white,fontFamily: "Signatra" ), 150 | ), 151 | GestureDetector( 152 | onTap: loginUser(), 153 | child: Container( 154 | width: 270.0, 155 | height: 65.0, 156 | decoration: BoxDecoration( 157 | image: DecorationImage(image: AssetImage("assets/images/google_signin_button.png"), 158 | fit:BoxFit.cover, 159 | ) 160 | ), 161 | ) 162 | ) 163 | ],) 164 | ) 165 | ); 166 | } 167 | @override 168 | Widget build(BuildContext context) { 169 | if (isSignedIn) 170 | { 171 | return buildHomeScreen(); 172 | }else{ 173 | return buildSignInScreen(); 174 | } 175 | } 176 | } 177 | -------------------------------------------------------------------------------- /pubspec.lock: -------------------------------------------------------------------------------- 1 | # Generated by pub 2 | # See https://dart.dev/tools/pub/glossary#lockfile 3 | packages: 4 | animator: 5 | dependency: "direct main" 6 | description: 7 | name: animator 8 | url: "https://pub.dartlang.org" 9 | source: hosted 10 | version: "0.1.4" 11 | archive: 12 | dependency: transitive 13 | description: 14 | name: archive 15 | url: "https://pub.dartlang.org" 16 | source: hosted 17 | version: "2.0.11" 18 | args: 19 | dependency: transitive 20 | description: 21 | name: args 22 | url: "https://pub.dartlang.org" 23 | source: hosted 24 | version: "1.5.2" 25 | async: 26 | dependency: transitive 27 | description: 28 | name: async 29 | url: "https://pub.dartlang.org" 30 | source: hosted 31 | version: "2.4.0" 32 | boolean_selector: 33 | dependency: transitive 34 | description: 35 | name: boolean_selector 36 | url: "https://pub.dartlang.org" 37 | source: hosted 38 | version: "1.0.5" 39 | cached_network_image: 40 | dependency: "direct main" 41 | description: 42 | name: cached_network_image 43 | url: "https://pub.dartlang.org" 44 | source: hosted 45 | version: "2.0.0" 46 | charcode: 47 | dependency: transitive 48 | description: 49 | name: charcode 50 | url: "https://pub.dartlang.org" 51 | source: hosted 52 | version: "1.1.2" 53 | cloud_firestore: 54 | dependency: "direct main" 55 | description: 56 | name: cloud_firestore 57 | url: "https://pub.dartlang.org" 58 | source: hosted 59 | version: "0.9.13+1" 60 | collection: 61 | dependency: transitive 62 | description: 63 | name: collection 64 | url: "https://pub.dartlang.org" 65 | source: hosted 66 | version: "1.14.11" 67 | convert: 68 | dependency: transitive 69 | description: 70 | name: convert 71 | url: "https://pub.dartlang.org" 72 | source: hosted 73 | version: "2.1.1" 74 | crypto: 75 | dependency: transitive 76 | description: 77 | name: crypto 78 | url: "https://pub.dartlang.org" 79 | source: hosted 80 | version: "2.1.3" 81 | cupertino_icons: 82 | dependency: "direct main" 83 | description: 84 | name: cupertino_icons 85 | url: "https://pub.dartlang.org" 86 | source: hosted 87 | version: "0.1.3" 88 | firebase_auth: 89 | dependency: "direct main" 90 | description: 91 | name: firebase_auth 92 | url: "https://pub.dartlang.org" 93 | source: hosted 94 | version: "0.8.4+5" 95 | firebase_core: 96 | dependency: transitive 97 | description: 98 | name: firebase_core 99 | url: "https://pub.dartlang.org" 100 | source: hosted 101 | version: "0.3.4" 102 | firebase_messaging: 103 | dependency: "direct main" 104 | description: 105 | name: firebase_messaging 106 | url: "https://pub.dartlang.org" 107 | source: hosted 108 | version: "4.0.0+4" 109 | firebase_storage: 110 | dependency: "direct main" 111 | description: 112 | name: firebase_storage 113 | url: "https://pub.dartlang.org" 114 | source: hosted 115 | version: "2.1.1+2" 116 | flutter: 117 | dependency: "direct main" 118 | description: flutter 119 | source: sdk 120 | version: "0.0.0" 121 | flutter_cache_manager: 122 | dependency: transitive 123 | description: 124 | name: flutter_cache_manager 125 | url: "https://pub.dartlang.org" 126 | source: hosted 127 | version: "1.1.3" 128 | flutter_plugin_android_lifecycle: 129 | dependency: transitive 130 | description: 131 | name: flutter_plugin_android_lifecycle 132 | url: "https://pub.dartlang.org" 133 | source: hosted 134 | version: "1.0.6" 135 | flutter_svg: 136 | dependency: "direct main" 137 | description: 138 | name: flutter_svg 139 | url: "https://pub.dartlang.org" 140 | source: hosted 141 | version: "0.17.3+1" 142 | flutter_test: 143 | dependency: "direct dev" 144 | description: flutter 145 | source: sdk 146 | version: "0.0.0" 147 | flutter_web_plugins: 148 | dependency: transitive 149 | description: flutter 150 | source: sdk 151 | version: "0.0.0" 152 | geolocator: 153 | dependency: "direct main" 154 | description: 155 | name: geolocator 156 | url: "https://pub.dartlang.org" 157 | source: hosted 158 | version: "5.0.1" 159 | google_api_availability: 160 | dependency: transitive 161 | description: 162 | name: google_api_availability 163 | url: "https://pub.dartlang.org" 164 | source: hosted 165 | version: "2.0.3" 166 | google_sign_in: 167 | dependency: "direct main" 168 | description: 169 | name: google_sign_in 170 | url: "https://pub.dartlang.org" 171 | source: hosted 172 | version: "4.1.4" 173 | google_sign_in_platform_interface: 174 | dependency: transitive 175 | description: 176 | name: google_sign_in_platform_interface 177 | url: "https://pub.dartlang.org" 178 | source: hosted 179 | version: "1.1.0" 180 | google_sign_in_web: 181 | dependency: transitive 182 | description: 183 | name: google_sign_in_web 184 | url: "https://pub.dartlang.org" 185 | source: hosted 186 | version: "0.8.4" 187 | http: 188 | dependency: transitive 189 | description: 190 | name: http 191 | url: "https://pub.dartlang.org" 192 | source: hosted 193 | version: "0.12.0+4" 194 | http_parser: 195 | dependency: transitive 196 | description: 197 | name: http_parser 198 | url: "https://pub.dartlang.org" 199 | source: hosted 200 | version: "3.1.3" 201 | image: 202 | dependency: "direct main" 203 | description: 204 | name: image 205 | url: "https://pub.dartlang.org" 206 | source: hosted 207 | version: "2.1.4" 208 | image_picker: 209 | dependency: "direct main" 210 | description: 211 | name: image_picker 212 | url: "https://pub.dartlang.org" 213 | source: hosted 214 | version: "0.6.3+4" 215 | js: 216 | dependency: transitive 217 | description: 218 | name: js 219 | url: "https://pub.dartlang.org" 220 | source: hosted 221 | version: "0.6.1+1" 222 | location_permissions: 223 | dependency: transitive 224 | description: 225 | name: location_permissions 226 | url: "https://pub.dartlang.org" 227 | source: hosted 228 | version: "2.0.5" 229 | matcher: 230 | dependency: transitive 231 | description: 232 | name: matcher 233 | url: "https://pub.dartlang.org" 234 | source: hosted 235 | version: "0.12.6" 236 | meta: 237 | dependency: transitive 238 | description: 239 | name: meta 240 | url: "https://pub.dartlang.org" 241 | source: hosted 242 | version: "1.1.8" 243 | path: 244 | dependency: transitive 245 | description: 246 | name: path 247 | url: "https://pub.dartlang.org" 248 | source: hosted 249 | version: "1.6.4" 250 | path_drawing: 251 | dependency: transitive 252 | description: 253 | name: path_drawing 254 | url: "https://pub.dartlang.org" 255 | source: hosted 256 | version: "0.4.1" 257 | path_parsing: 258 | dependency: transitive 259 | description: 260 | name: path_parsing 261 | url: "https://pub.dartlang.org" 262 | source: hosted 263 | version: "0.1.4" 264 | path_provider: 265 | dependency: "direct main" 266 | description: 267 | name: path_provider 268 | url: "https://pub.dartlang.org" 269 | source: hosted 270 | version: "0.5.0+1" 271 | pedantic: 272 | dependency: transitive 273 | description: 274 | name: pedantic 275 | url: "https://pub.dartlang.org" 276 | source: hosted 277 | version: "1.8.0+1" 278 | petitparser: 279 | dependency: transitive 280 | description: 281 | name: petitparser 282 | url: "https://pub.dartlang.org" 283 | source: hosted 284 | version: "2.4.0" 285 | platform: 286 | dependency: transitive 287 | description: 288 | name: platform 289 | url: "https://pub.dartlang.org" 290 | source: hosted 291 | version: "2.2.1" 292 | quiver: 293 | dependency: transitive 294 | description: 295 | name: quiver 296 | url: "https://pub.dartlang.org" 297 | source: hosted 298 | version: "2.0.5" 299 | sky_engine: 300 | dependency: transitive 301 | description: flutter 302 | source: sdk 303 | version: "0.0.99" 304 | source_span: 305 | dependency: transitive 306 | description: 307 | name: source_span 308 | url: "https://pub.dartlang.org" 309 | source: hosted 310 | version: "1.5.5" 311 | sqflite: 312 | dependency: transitive 313 | description: 314 | name: sqflite 315 | url: "https://pub.dartlang.org" 316 | source: hosted 317 | version: "1.3.0" 318 | sqflite_common: 319 | dependency: transitive 320 | description: 321 | name: sqflite_common 322 | url: "https://pub.dartlang.org" 323 | source: hosted 324 | version: "1.0.0+1" 325 | stack_trace: 326 | dependency: transitive 327 | description: 328 | name: stack_trace 329 | url: "https://pub.dartlang.org" 330 | source: hosted 331 | version: "1.9.3" 332 | states_rebuilder: 333 | dependency: transitive 334 | description: 335 | name: states_rebuilder 336 | url: "https://pub.dartlang.org" 337 | source: hosted 338 | version: "1.14.3" 339 | stream_channel: 340 | dependency: transitive 341 | description: 342 | name: stream_channel 343 | url: "https://pub.dartlang.org" 344 | source: hosted 345 | version: "2.0.0" 346 | string_scanner: 347 | dependency: transitive 348 | description: 349 | name: string_scanner 350 | url: "https://pub.dartlang.org" 351 | source: hosted 352 | version: "1.0.5" 353 | synchronized: 354 | dependency: transitive 355 | description: 356 | name: synchronized 357 | url: "https://pub.dartlang.org" 358 | source: hosted 359 | version: "2.2.0" 360 | term_glyph: 361 | dependency: transitive 362 | description: 363 | name: term_glyph 364 | url: "https://pub.dartlang.org" 365 | source: hosted 366 | version: "1.1.0" 367 | test_api: 368 | dependency: transitive 369 | description: 370 | name: test_api 371 | url: "https://pub.dartlang.org" 372 | source: hosted 373 | version: "0.2.11" 374 | timeago: 375 | dependency: "direct main" 376 | description: 377 | name: timeago 378 | url: "https://pub.dartlang.org" 379 | source: hosted 380 | version: "2.0.17" 381 | typed_data: 382 | dependency: transitive 383 | description: 384 | name: typed_data 385 | url: "https://pub.dartlang.org" 386 | source: hosted 387 | version: "1.1.6" 388 | uuid: 389 | dependency: "direct main" 390 | description: 391 | name: uuid 392 | url: "https://pub.dartlang.org" 393 | source: hosted 394 | version: "2.0.4" 395 | vector_math: 396 | dependency: transitive 397 | description: 398 | name: vector_math 399 | url: "https://pub.dartlang.org" 400 | source: hosted 401 | version: "2.0.8" 402 | xml: 403 | dependency: transitive 404 | description: 405 | name: xml 406 | url: "https://pub.dartlang.org" 407 | source: hosted 408 | version: "3.5.0" 409 | sdks: 410 | dart: ">=2.7.0 <3.0.0" 411 | flutter: ">=1.12.13+hotfix.4 <2.0.0" 412 | -------------------------------------------------------------------------------- /ios/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - AppAuth (1.3.0): 3 | - AppAuth/Core (= 1.3.0) 4 | - AppAuth/ExternalUserAgent (= 1.3.0) 5 | - AppAuth/Core (1.3.0) 6 | - AppAuth/ExternalUserAgent (1.3.0) 7 | - BoringSSL-GRPC (0.0.2): 8 | - BoringSSL-GRPC/Implementation (= 0.0.2) 9 | - BoringSSL-GRPC/Interface (= 0.0.2) 10 | - BoringSSL-GRPC/Implementation (0.0.2): 11 | - BoringSSL-GRPC/Interface (= 0.0.2) 12 | - BoringSSL-GRPC/Interface (0.0.2) 13 | - cloud_firestore (0.0.1): 14 | - Firebase/Auth 15 | - Firebase/Core 16 | - Firebase/Database 17 | - Firebase/Firestore 18 | - Flutter 19 | - Firebase/Auth (5.20.2): 20 | - Firebase/CoreOnly 21 | - FirebaseAuth (= 5.4.2) 22 | - Firebase/Core (5.20.2): 23 | - Firebase/CoreOnly 24 | - FirebaseAnalytics (= 5.8.1) 25 | - Firebase/CoreOnly (5.20.2): 26 | - FirebaseCore (= 5.4.1) 27 | - Firebase/Database (5.20.2): 28 | - Firebase/CoreOnly 29 | - FirebaseDatabase (= 5.1.1) 30 | - Firebase/Firestore (5.20.2): 31 | - Firebase/CoreOnly 32 | - FirebaseFirestore (= 1.2.1) 33 | - Firebase/Messaging (5.20.2): 34 | - Firebase/CoreOnly 35 | - FirebaseMessaging (= 3.5.0) 36 | - Firebase/Storage (5.20.2): 37 | - Firebase/CoreOnly 38 | - FirebaseStorage (= 3.1.1) 39 | - firebase_auth (0.0.1): 40 | - Firebase/Auth (~> 5.19) 41 | - Firebase/Core 42 | - Flutter 43 | - firebase_core (0.0.1): 44 | - Firebase/Core 45 | - Flutter 46 | - firebase_messaging (0.0.1): 47 | - Firebase/Core 48 | - Firebase/Messaging 49 | - Flutter 50 | - firebase_storage (0.0.1): 51 | - Firebase/Storage 52 | - Flutter 53 | - FirebaseAnalytics (5.8.1): 54 | - FirebaseCore (~> 5.4) 55 | - FirebaseInstanceID (~> 3.8) 56 | - GoogleAppMeasurement (= 5.8.1) 57 | - GoogleUtilities/AppDelegateSwizzler (~> 5.2) 58 | - GoogleUtilities/MethodSwizzler (~> 5.2) 59 | - GoogleUtilities/Network (~> 5.2) 60 | - "GoogleUtilities/NSData+zlib (~> 5.2)" 61 | - nanopb (~> 0.3) 62 | - FirebaseAnalyticsInterop (1.2.0) 63 | - FirebaseAuth (5.4.2): 64 | - FirebaseAuthInterop (~> 1.0) 65 | - FirebaseCore (~> 5.2) 66 | - GoogleUtilities/Environment (~> 5.2) 67 | - GTMSessionFetcher/Core (~> 1.1) 68 | - FirebaseAuthInterop (1.0.0) 69 | - FirebaseCore (5.4.1): 70 | - GoogleUtilities/Environment (~> 5.2) 71 | - GoogleUtilities/Logger (~> 5.2) 72 | - FirebaseDatabase (5.1.1): 73 | - FirebaseAuthInterop (~> 1.0) 74 | - FirebaseCore (~> 5.2) 75 | - leveldb-library (~> 1.18) 76 | - FirebaseFirestore (1.2.1): 77 | - FirebaseAuthInterop (~> 1.0) 78 | - FirebaseCore (~> 5.2) 79 | - FirebaseFirestore/abseil-cpp (= 1.2.1) 80 | - "gRPC-C++ (= 0.0.6)" 81 | - leveldb-library (~> 1.20) 82 | - nanopb (~> 0.3.901) 83 | - Protobuf (~> 3.1) 84 | - FirebaseFirestore/abseil-cpp (1.2.1): 85 | - FirebaseAuthInterop (~> 1.0) 86 | - FirebaseCore (~> 5.2) 87 | - "gRPC-C++ (= 0.0.6)" 88 | - leveldb-library (~> 1.20) 89 | - nanopb (~> 0.3.901) 90 | - Protobuf (~> 3.1) 91 | - FirebaseInstanceID (3.8.1): 92 | - FirebaseCore (~> 5.2) 93 | - GoogleUtilities/Environment (~> 5.2) 94 | - GoogleUtilities/UserDefaults (~> 5.2) 95 | - FirebaseMessaging (3.5.0): 96 | - FirebaseAnalyticsInterop (~> 1.1) 97 | - FirebaseCore (~> 5.2) 98 | - FirebaseInstanceID (~> 3.6) 99 | - GoogleUtilities/Environment (~> 5.3) 100 | - GoogleUtilities/Reachability (~> 5.3) 101 | - GoogleUtilities/UserDefaults (~> 5.3) 102 | - Protobuf (~> 3.1) 103 | - FirebaseStorage (3.1.1): 104 | - FirebaseAuthInterop (~> 1.0) 105 | - FirebaseCore (~> 5.2) 106 | - GTMSessionFetcher/Core (~> 1.1) 107 | - Flutter (1.0.0) 108 | - flutter_plugin_android_lifecycle (0.0.1): 109 | - Flutter 110 | - FMDB (2.7.5): 111 | - FMDB/standard (= 2.7.5) 112 | - FMDB/standard (2.7.5) 113 | - geolocator (5.0.1): 114 | - Flutter 115 | - google_api_availability (2.0.3): 116 | - Flutter 117 | - google_sign_in (0.0.1): 118 | - Flutter 119 | - GoogleSignIn (~> 5.0) 120 | - google_sign_in_web (0.8.1): 121 | - Flutter 122 | - GoogleAppMeasurement (5.8.1): 123 | - GoogleUtilities/AppDelegateSwizzler (~> 5.2) 124 | - GoogleUtilities/MethodSwizzler (~> 5.2) 125 | - GoogleUtilities/Network (~> 5.2) 126 | - "GoogleUtilities/NSData+zlib (~> 5.2)" 127 | - nanopb (~> 0.3) 128 | - GoogleSignIn (5.0.2): 129 | - AppAuth (~> 1.2) 130 | - GTMAppAuth (~> 1.0) 131 | - GTMSessionFetcher/Core (~> 1.1) 132 | - GoogleUtilities/AppDelegateSwizzler (5.8.0): 133 | - GoogleUtilities/Environment 134 | - GoogleUtilities/Logger 135 | - GoogleUtilities/Network 136 | - GoogleUtilities/Environment (5.8.0) 137 | - GoogleUtilities/Logger (5.8.0): 138 | - GoogleUtilities/Environment 139 | - GoogleUtilities/MethodSwizzler (5.8.0): 140 | - GoogleUtilities/Logger 141 | - GoogleUtilities/Network (5.8.0): 142 | - GoogleUtilities/Logger 143 | - "GoogleUtilities/NSData+zlib" 144 | - GoogleUtilities/Reachability 145 | - "GoogleUtilities/NSData+zlib (5.8.0)" 146 | - GoogleUtilities/Reachability (5.8.0): 147 | - GoogleUtilities/Logger 148 | - GoogleUtilities/UserDefaults (5.8.0): 149 | - GoogleUtilities/Logger 150 | - "gRPC-C++ (0.0.6)": 151 | - "gRPC-C++/Implementation (= 0.0.6)" 152 | - "gRPC-C++/Interface (= 0.0.6)" 153 | - "gRPC-C++/Implementation (0.0.6)": 154 | - "gRPC-C++/Interface (= 0.0.6)" 155 | - gRPC-Core (= 1.17.0) 156 | - nanopb (~> 0.3) 157 | - "gRPC-C++/Interface (0.0.6)" 158 | - gRPC-Core (1.17.0): 159 | - gRPC-Core/Implementation (= 1.17.0) 160 | - gRPC-Core/Interface (= 1.17.0) 161 | - gRPC-Core/Implementation (1.17.0): 162 | - BoringSSL-GRPC (= 0.0.2) 163 | - gRPC-Core/Interface (= 1.17.0) 164 | - nanopb (~> 0.3) 165 | - gRPC-Core/Interface (1.17.0) 166 | - GTMAppAuth (1.0.0): 167 | - AppAuth/Core (~> 1.0) 168 | - GTMSessionFetcher (~> 1.1) 169 | - GTMSessionFetcher (1.2.2): 170 | - GTMSessionFetcher/Full (= 1.2.2) 171 | - GTMSessionFetcher/Core (1.2.2) 172 | - GTMSessionFetcher/Full (1.2.2): 173 | - GTMSessionFetcher/Core (= 1.2.2) 174 | - image_picker (0.0.1): 175 | - Flutter 176 | - leveldb-library (1.20) 177 | - location_permissions (2.0.5): 178 | - Flutter 179 | - nanopb (0.3.901): 180 | - nanopb/decode (= 0.3.901) 181 | - nanopb/encode (= 0.3.901) 182 | - nanopb/decode (0.3.901) 183 | - nanopb/encode (0.3.901) 184 | - path_provider (0.0.1): 185 | - Flutter 186 | - Protobuf (3.8.0) 187 | - sqflite (0.0.1): 188 | - Flutter 189 | - FMDB (~> 2.7.2) 190 | 191 | DEPENDENCIES: 192 | - cloud_firestore (from `.symlinks/plugins/cloud_firestore/ios`) 193 | - firebase_auth (from `.symlinks/plugins/firebase_auth/ios`) 194 | - firebase_core (from `.symlinks/plugins/firebase_core/ios`) 195 | - firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`) 196 | - firebase_storage (from `.symlinks/plugins/firebase_storage/ios`) 197 | - Flutter (from `.symlinks/flutter/ios`) 198 | - flutter_plugin_android_lifecycle (from `.symlinks/plugins/flutter_plugin_android_lifecycle/ios`) 199 | - geolocator (from `.symlinks/plugins/geolocator/ios`) 200 | - google_api_availability (from `.symlinks/plugins/google_api_availability/ios`) 201 | - google_sign_in (from `.symlinks/plugins/google_sign_in/ios`) 202 | - google_sign_in_web (from `.symlinks/plugins/google_sign_in_web/ios`) 203 | - image_picker (from `.symlinks/plugins/image_picker/ios`) 204 | - location_permissions (from `.symlinks/plugins/location_permissions/ios`) 205 | - path_provider (from `.symlinks/plugins/path_provider/ios`) 206 | - sqflite (from `.symlinks/plugins/sqflite/ios`) 207 | 208 | SPEC REPOS: 209 | trunk: 210 | - AppAuth 211 | - BoringSSL-GRPC 212 | - Firebase 213 | - FirebaseAnalytics 214 | - FirebaseAnalyticsInterop 215 | - FirebaseAuth 216 | - FirebaseAuthInterop 217 | - FirebaseCore 218 | - FirebaseDatabase 219 | - FirebaseFirestore 220 | - FirebaseInstanceID 221 | - FirebaseMessaging 222 | - FirebaseStorage 223 | - FMDB 224 | - GoogleAppMeasurement 225 | - GoogleSignIn 226 | - GoogleUtilities 227 | - "gRPC-C++" 228 | - gRPC-Core 229 | - GTMAppAuth 230 | - GTMSessionFetcher 231 | - leveldb-library 232 | - nanopb 233 | - Protobuf 234 | 235 | EXTERNAL SOURCES: 236 | cloud_firestore: 237 | :path: ".symlinks/plugins/cloud_firestore/ios" 238 | firebase_auth: 239 | :path: ".symlinks/plugins/firebase_auth/ios" 240 | firebase_core: 241 | :path: ".symlinks/plugins/firebase_core/ios" 242 | firebase_messaging: 243 | :path: ".symlinks/plugins/firebase_messaging/ios" 244 | firebase_storage: 245 | :path: ".symlinks/plugins/firebase_storage/ios" 246 | Flutter: 247 | :path: ".symlinks/flutter/ios" 248 | flutter_plugin_android_lifecycle: 249 | :path: ".symlinks/plugins/flutter_plugin_android_lifecycle/ios" 250 | geolocator: 251 | :path: ".symlinks/plugins/geolocator/ios" 252 | google_api_availability: 253 | :path: ".symlinks/plugins/google_api_availability/ios" 254 | google_sign_in: 255 | :path: ".symlinks/plugins/google_sign_in/ios" 256 | google_sign_in_web: 257 | :path: ".symlinks/plugins/google_sign_in_web/ios" 258 | image_picker: 259 | :path: ".symlinks/plugins/image_picker/ios" 260 | location_permissions: 261 | :path: ".symlinks/plugins/location_permissions/ios" 262 | path_provider: 263 | :path: ".symlinks/plugins/path_provider/ios" 264 | sqflite: 265 | :path: ".symlinks/plugins/sqflite/ios" 266 | 267 | SPEC CHECKSUMS: 268 | AppAuth: 73574f3013a1e65b9601a3ddc8b3158cce68c09d 269 | BoringSSL-GRPC: 2a230d9cd93e7ce39916044f645cebb31f37dde6 270 | cloud_firestore: cd6e849ecb8ab43e5a7a5f1f169304ca65436c03 271 | Firebase: 0c8cf33f266410c61ab3e2265cfa412200351d9c 272 | firebase_auth: e32ab45c234bdf847b7777f5b097ce4f7d26879f 273 | firebase_core: ce5006bb48508ee4e71e0f429a3f519bb8ee2961 274 | firebase_messaging: b25b2fa94e685146bcf9d706ed87b4e95cd2a17d 275 | firebase_storage: 2543f377090a6e219caab9224dead5bbcb30ef33 276 | FirebaseAnalytics: ece1aa57a4f43c64d53a648b5a5e05151aae947b 277 | FirebaseAnalyticsInterop: efbe45c8385ec626e29f9525e5ebd38520dfb6c1 278 | FirebaseAuth: dd7bbf03a5aee0eafb3a1aee4d2812bd74bac890 279 | FirebaseAuthInterop: 0ffa57668be100582bb7643d4fcb7615496c41fc 280 | FirebaseCore: f1a9a8be1aee4bf71a2fc0f4096df6788bdfda61 281 | FirebaseDatabase: 2c15b0ea6f2c6eb5e57413f9d6340f1e50b81ae3 282 | FirebaseFirestore: faca891c0f0d1d6c10c793473e2f6a29d75014b5 283 | FirebaseInstanceID: a122b0c258720cf250551bb2bedf48c699f80d90 284 | FirebaseMessaging: 4235f949ce1c4e827aeb19705ba5c53f9b85aa10 285 | FirebaseStorage: 6162ef4322502b818d9de0ec552f5226d283de43 286 | Flutter: 0e3d915762c693b495b44d77113d4970485de6ec 287 | flutter_plugin_android_lifecycle: 47de533a02850f070f5696a623995e93eddcdb9b 288 | FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a 289 | geolocator: f3dd3b5b1761a15a4da00665774c5a8319e657d6 290 | google_api_availability: 526574c9a5a0ae541e18c65f98e47afc11f53c8b 291 | google_sign_in: decaf71f56e22fb1dc179de062177ae6df415716 292 | google_sign_in_web: 52deb24929ac0992baff65c57956031c44ed44c3 293 | GoogleAppMeasurement: ffe513e90551844a739e7bcbb1d2aca1c28a4338 294 | GoogleSignIn: 7137d297ddc022a7e0aa4619c86d72c909fa7213 295 | GoogleUtilities: 04fce34bcd5620c1ee76fb79172105c74a4df335 296 | "gRPC-C++": e76441995900ac90e9bd98644ab4733f12521edf 297 | gRPC-Core: 4028031ed2c5267cca0d846c876d8046b1ecb9b6 298 | GTMAppAuth: 4deac854479704f348309e7b66189e604cf5e01e 299 | GTMSessionFetcher: 61bb0f61a4cb560030f1222021178008a5727a23 300 | image_picker: e3eacd46b94694dde7cf2705955cece853aa1a8f 301 | leveldb-library: 08cba283675b7ed2d99629a4bc5fd052cd2bb6a5 302 | location_permissions: 4a49d4e5bec5b653643e551ab77963cc99bb0e4a 303 | nanopb: 2901f78ea1b7b4015c860c2fdd1ea2fee1a18d48 304 | path_provider: f96fff6166a8867510d2c25fdcc346327cc4b259 305 | Protobuf: 3f617b9a6e73605565086864c9bc26b2bf2dd5a3 306 | sqflite: 4001a31ff81d210346b500c55b17f4d6c7589dd0 307 | 308 | PODFILE CHECKSUM: 81d9101721a74b9b88ddd9e9dfe15eec968bc82e 309 | 310 | COCOAPODS: 1.9.1 311 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 130AB5C9241E85CA007D31C7 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 130AB5C8241E85CA007D31C7 /* GoogleService-Info.plist */; }; 11 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 12 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 13 | 3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; }; 14 | 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 15 | 964BD1FD9684CA9BF42F6F1F /* libPods-Runner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 23F4EADA84AE2F83891E1EBA /* libPods-Runner.a */; }; 16 | 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; }; 17 | 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 18 | 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB21CF90195004384FC /* Debug.xcconfig */; }; 19 | 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; }; 20 | 97C146F31CF9000F007C117D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C146F21CF9000F007C117D /* main.m */; }; 21 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 22 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 23 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; 24 | /* End PBXBuildFile section */ 25 | 26 | /* Begin PBXCopyFilesBuildPhase section */ 27 | 9705A1C41CF9048500538489 /* Embed Frameworks */ = { 28 | isa = PBXCopyFilesBuildPhase; 29 | buildActionMask = 2147483647; 30 | dstPath = ""; 31 | dstSubfolderSpec = 10; 32 | files = ( 33 | 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */, 34 | 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */, 35 | ); 36 | name = "Embed Frameworks"; 37 | runOnlyForDeploymentPostprocessing = 0; 38 | }; 39 | /* End PBXCopyFilesBuildPhase section */ 40 | 41 | /* Begin PBXFileReference section */ 42 | 130AB5C8241E85CA007D31C7 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "../../../../Downloads/GoogleService-Info.plist"; sourceTree = ""; }; 43 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 44 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 45 | 1FEA9F5AFAA9BFC8F1DB4F8B /* 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 = ""; }; 46 | 23F4EADA84AE2F83891E1EBA /* libPods-Runner.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Runner.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 47 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 48 | 3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = ""; }; 49 | 3BEF546D702808C3C51CCEFE /* 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 = ""; }; 50 | 3C9F2C70703F7ECC26A8DB67 /* 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 = ""; }; 51 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 52 | 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 53 | 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 54 | 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 55 | 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 56 | 9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = ""; }; 57 | 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; 58 | 97C146F21CF9000F007C117D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 59 | 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 60 | 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 61 | 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 62 | 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 63 | /* End PBXFileReference section */ 64 | 65 | /* Begin PBXFrameworksBuildPhase section */ 66 | 97C146EB1CF9000F007C117D /* Frameworks */ = { 67 | isa = PBXFrameworksBuildPhase; 68 | buildActionMask = 2147483647; 69 | files = ( 70 | 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */, 71 | 3B80C3941E831B6300D905FE /* App.framework in Frameworks */, 72 | 964BD1FD9684CA9BF42F6F1F /* libPods-Runner.a in Frameworks */, 73 | ); 74 | runOnlyForDeploymentPostprocessing = 0; 75 | }; 76 | /* End PBXFrameworksBuildPhase section */ 77 | 78 | /* Begin PBXGroup section */ 79 | 8CBEE9C8FA89F5CC2911FDC6 /* Pods */ = { 80 | isa = PBXGroup; 81 | children = ( 82 | 3BEF546D702808C3C51CCEFE /* Pods-Runner.debug.xcconfig */, 83 | 3C9F2C70703F7ECC26A8DB67 /* Pods-Runner.release.xcconfig */, 84 | 1FEA9F5AFAA9BFC8F1DB4F8B /* Pods-Runner.profile.xcconfig */, 85 | ); 86 | path = Pods; 87 | sourceTree = ""; 88 | }; 89 | 9740EEB11CF90186004384FC /* Flutter */ = { 90 | isa = PBXGroup; 91 | children = ( 92 | 3B80C3931E831B6300D905FE /* App.framework */, 93 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, 94 | 9740EEBA1CF902C7004384FC /* Flutter.framework */, 95 | 9740EEB21CF90195004384FC /* Debug.xcconfig */, 96 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, 97 | 9740EEB31CF90195004384FC /* Generated.xcconfig */, 98 | ); 99 | name = Flutter; 100 | sourceTree = ""; 101 | }; 102 | 97C146E51CF9000F007C117D = { 103 | isa = PBXGroup; 104 | children = ( 105 | 130AB5C8241E85CA007D31C7 /* GoogleService-Info.plist */, 106 | 9740EEB11CF90186004384FC /* Flutter */, 107 | 97C146F01CF9000F007C117D /* Runner */, 108 | 97C146EF1CF9000F007C117D /* Products */, 109 | 8CBEE9C8FA89F5CC2911FDC6 /* Pods */, 110 | F70933126535390CEB47CF53 /* Frameworks */, 111 | ); 112 | sourceTree = ""; 113 | }; 114 | 97C146EF1CF9000F007C117D /* Products */ = { 115 | isa = PBXGroup; 116 | children = ( 117 | 97C146EE1CF9000F007C117D /* Runner.app */, 118 | ); 119 | name = Products; 120 | sourceTree = ""; 121 | }; 122 | 97C146F01CF9000F007C117D /* Runner */ = { 123 | isa = PBXGroup; 124 | children = ( 125 | 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */, 126 | 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */, 127 | 97C146FA1CF9000F007C117D /* Main.storyboard */, 128 | 97C146FD1CF9000F007C117D /* Assets.xcassets */, 129 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, 130 | 97C147021CF9000F007C117D /* Info.plist */, 131 | 97C146F11CF9000F007C117D /* Supporting Files */, 132 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, 133 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, 134 | ); 135 | path = Runner; 136 | sourceTree = ""; 137 | }; 138 | 97C146F11CF9000F007C117D /* Supporting Files */ = { 139 | isa = PBXGroup; 140 | children = ( 141 | 97C146F21CF9000F007C117D /* main.m */, 142 | ); 143 | name = "Supporting Files"; 144 | sourceTree = ""; 145 | }; 146 | F70933126535390CEB47CF53 /* Frameworks */ = { 147 | isa = PBXGroup; 148 | children = ( 149 | 23F4EADA84AE2F83891E1EBA /* libPods-Runner.a */, 150 | ); 151 | name = Frameworks; 152 | sourceTree = ""; 153 | }; 154 | /* End PBXGroup section */ 155 | 156 | /* Begin PBXNativeTarget section */ 157 | 97C146ED1CF9000F007C117D /* Runner */ = { 158 | isa = PBXNativeTarget; 159 | buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; 160 | buildPhases = ( 161 | 37AFA7892B569BF2318ABDEF /* [CP] Check Pods Manifest.lock */, 162 | 9740EEB61CF901F6004384FC /* Run Script */, 163 | 97C146EA1CF9000F007C117D /* Sources */, 164 | 97C146EB1CF9000F007C117D /* Frameworks */, 165 | 97C146EC1CF9000F007C117D /* Resources */, 166 | 9705A1C41CF9048500538489 /* Embed Frameworks */, 167 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */, 168 | D3C678522ED76F8552974CE4 /* [CP] Embed Pods Frameworks */, 169 | 5F3382C918B825F864321B1C /* [CP] Copy Pods Resources */, 170 | ); 171 | buildRules = ( 172 | ); 173 | dependencies = ( 174 | ); 175 | name = Runner; 176 | productName = Runner; 177 | productReference = 97C146EE1CF9000F007C117D /* Runner.app */; 178 | productType = "com.apple.product-type.application"; 179 | }; 180 | /* End PBXNativeTarget section */ 181 | 182 | /* Begin PBXProject section */ 183 | 97C146E61CF9000F007C117D /* Project object */ = { 184 | isa = PBXProject; 185 | attributes = { 186 | LastUpgradeCheck = 1020; 187 | ORGANIZATIONNAME = "The Chromium Authors"; 188 | TargetAttributes = { 189 | 97C146ED1CF9000F007C117D = { 190 | CreatedOnToolsVersion = 7.3.1; 191 | }; 192 | }; 193 | }; 194 | buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; 195 | compatibilityVersion = "Xcode 3.2"; 196 | developmentRegion = en; 197 | hasScannedForEncodings = 0; 198 | knownRegions = ( 199 | en, 200 | Base, 201 | ); 202 | mainGroup = 97C146E51CF9000F007C117D; 203 | productRefGroup = 97C146EF1CF9000F007C117D /* Products */; 204 | projectDirPath = ""; 205 | projectRoot = ""; 206 | targets = ( 207 | 97C146ED1CF9000F007C117D /* Runner */, 208 | ); 209 | }; 210 | /* End PBXProject section */ 211 | 212 | /* Begin PBXResourcesBuildPhase section */ 213 | 97C146EC1CF9000F007C117D /* Resources */ = { 214 | isa = PBXResourcesBuildPhase; 215 | buildActionMask = 2147483647; 216 | files = ( 217 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, 218 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, 219 | 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */, 220 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, 221 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, 222 | 130AB5C9241E85CA007D31C7 /* GoogleService-Info.plist in Resources */, 223 | ); 224 | runOnlyForDeploymentPostprocessing = 0; 225 | }; 226 | /* End PBXResourcesBuildPhase section */ 227 | 228 | /* Begin PBXShellScriptBuildPhase section */ 229 | 37AFA7892B569BF2318ABDEF /* [CP] Check Pods Manifest.lock */ = { 230 | isa = PBXShellScriptBuildPhase; 231 | buildActionMask = 2147483647; 232 | files = ( 233 | ); 234 | inputFileListPaths = ( 235 | ); 236 | inputPaths = ( 237 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 238 | "${PODS_ROOT}/Manifest.lock", 239 | ); 240 | name = "[CP] Check Pods Manifest.lock"; 241 | outputFileListPaths = ( 242 | ); 243 | outputPaths = ( 244 | "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", 245 | ); 246 | runOnlyForDeploymentPostprocessing = 0; 247 | shellPath = /bin/sh; 248 | 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"; 249 | showEnvVarsInLog = 0; 250 | }; 251 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { 252 | isa = PBXShellScriptBuildPhase; 253 | buildActionMask = 2147483647; 254 | files = ( 255 | ); 256 | inputPaths = ( 257 | ); 258 | name = "Thin Binary"; 259 | outputPaths = ( 260 | ); 261 | runOnlyForDeploymentPostprocessing = 0; 262 | shellPath = /bin/sh; 263 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" thin"; 264 | }; 265 | 5F3382C918B825F864321B1C /* [CP] Copy Pods Resources */ = { 266 | isa = PBXShellScriptBuildPhase; 267 | buildActionMask = 2147483647; 268 | files = ( 269 | ); 270 | inputPaths = ( 271 | ); 272 | name = "[CP] Copy Pods Resources"; 273 | outputPaths = ( 274 | ); 275 | runOnlyForDeploymentPostprocessing = 0; 276 | shellPath = /bin/sh; 277 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; 278 | showEnvVarsInLog = 0; 279 | }; 280 | 9740EEB61CF901F6004384FC /* Run Script */ = { 281 | isa = PBXShellScriptBuildPhase; 282 | buildActionMask = 2147483647; 283 | files = ( 284 | ); 285 | inputPaths = ( 286 | ); 287 | name = "Run Script"; 288 | outputPaths = ( 289 | ); 290 | runOnlyForDeploymentPostprocessing = 0; 291 | shellPath = /bin/sh; 292 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; 293 | }; 294 | D3C678522ED76F8552974CE4 /* [CP] Embed Pods Frameworks */ = { 295 | isa = PBXShellScriptBuildPhase; 296 | buildActionMask = 2147483647; 297 | files = ( 298 | ); 299 | inputPaths = ( 300 | ); 301 | name = "[CP] Embed Pods Frameworks"; 302 | outputPaths = ( 303 | ); 304 | runOnlyForDeploymentPostprocessing = 0; 305 | shellPath = /bin/sh; 306 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; 307 | showEnvVarsInLog = 0; 308 | }; 309 | /* End PBXShellScriptBuildPhase section */ 310 | 311 | /* Begin PBXSourcesBuildPhase section */ 312 | 97C146EA1CF9000F007C117D /* Sources */ = { 313 | isa = PBXSourcesBuildPhase; 314 | buildActionMask = 2147483647; 315 | files = ( 316 | 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */, 317 | 97C146F31CF9000F007C117D /* main.m in Sources */, 318 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, 319 | ); 320 | runOnlyForDeploymentPostprocessing = 0; 321 | }; 322 | /* End PBXSourcesBuildPhase section */ 323 | 324 | /* Begin PBXVariantGroup section */ 325 | 97C146FA1CF9000F007C117D /* Main.storyboard */ = { 326 | isa = PBXVariantGroup; 327 | children = ( 328 | 97C146FB1CF9000F007C117D /* Base */, 329 | ); 330 | name = Main.storyboard; 331 | sourceTree = ""; 332 | }; 333 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { 334 | isa = PBXVariantGroup; 335 | children = ( 336 | 97C147001CF9000F007C117D /* Base */, 337 | ); 338 | name = LaunchScreen.storyboard; 339 | sourceTree = ""; 340 | }; 341 | /* End PBXVariantGroup section */ 342 | 343 | /* Begin XCBuildConfiguration section */ 344 | 249021D3217E4FDB00AE95B9 /* Profile */ = { 345 | isa = XCBuildConfiguration; 346 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 347 | buildSettings = { 348 | ALWAYS_SEARCH_USER_PATHS = NO; 349 | CLANG_ANALYZER_NONNULL = YES; 350 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 351 | CLANG_CXX_LIBRARY = "libc++"; 352 | CLANG_ENABLE_MODULES = YES; 353 | CLANG_ENABLE_OBJC_ARC = YES; 354 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 355 | CLANG_WARN_BOOL_CONVERSION = YES; 356 | CLANG_WARN_COMMA = YES; 357 | CLANG_WARN_CONSTANT_CONVERSION = YES; 358 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 359 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 360 | CLANG_WARN_EMPTY_BODY = YES; 361 | CLANG_WARN_ENUM_CONVERSION = YES; 362 | CLANG_WARN_INFINITE_RECURSION = YES; 363 | CLANG_WARN_INT_CONVERSION = YES; 364 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 365 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 366 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 367 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 368 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 369 | CLANG_WARN_STRICT_PROTOTYPES = YES; 370 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 371 | CLANG_WARN_UNREACHABLE_CODE = YES; 372 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 373 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 374 | COPY_PHASE_STRIP = NO; 375 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 376 | ENABLE_NS_ASSERTIONS = NO; 377 | ENABLE_STRICT_OBJC_MSGSEND = YES; 378 | GCC_C_LANGUAGE_STANDARD = gnu99; 379 | GCC_NO_COMMON_BLOCKS = YES; 380 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 381 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 382 | GCC_WARN_UNDECLARED_SELECTOR = YES; 383 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 384 | GCC_WARN_UNUSED_FUNCTION = YES; 385 | GCC_WARN_UNUSED_VARIABLE = YES; 386 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 387 | MTL_ENABLE_DEBUG_INFO = NO; 388 | SDKROOT = iphoneos; 389 | TARGETED_DEVICE_FAMILY = "1,2"; 390 | VALIDATE_PRODUCT = YES; 391 | }; 392 | name = Profile; 393 | }; 394 | 249021D4217E4FDB00AE95B9 /* Profile */ = { 395 | isa = XCBuildConfiguration; 396 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 397 | buildSettings = { 398 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 399 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 400 | DEVELOPMENT_TEAM = S8QB4VV633; 401 | ENABLE_BITCODE = NO; 402 | FRAMEWORK_SEARCH_PATHS = ( 403 | "$(inherited)", 404 | "$(PROJECT_DIR)/Flutter", 405 | ); 406 | INFOPLIST_FILE = Runner/Info.plist; 407 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 408 | LIBRARY_SEARCH_PATHS = ( 409 | "$(inherited)", 410 | "$(PROJECT_DIR)/Flutter", 411 | ); 412 | PRODUCT_BUNDLE_IDENTIFIER = com.muhammadali.buddiesgram; 413 | PRODUCT_NAME = "$(TARGET_NAME)"; 414 | VERSIONING_SYSTEM = "apple-generic"; 415 | }; 416 | name = Profile; 417 | }; 418 | 97C147031CF9000F007C117D /* Debug */ = { 419 | isa = XCBuildConfiguration; 420 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; 421 | buildSettings = { 422 | ALWAYS_SEARCH_USER_PATHS = NO; 423 | CLANG_ANALYZER_NONNULL = YES; 424 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 425 | CLANG_CXX_LIBRARY = "libc++"; 426 | CLANG_ENABLE_MODULES = YES; 427 | CLANG_ENABLE_OBJC_ARC = YES; 428 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 429 | CLANG_WARN_BOOL_CONVERSION = YES; 430 | CLANG_WARN_COMMA = YES; 431 | CLANG_WARN_CONSTANT_CONVERSION = YES; 432 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 433 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 434 | CLANG_WARN_EMPTY_BODY = YES; 435 | CLANG_WARN_ENUM_CONVERSION = YES; 436 | CLANG_WARN_INFINITE_RECURSION = YES; 437 | CLANG_WARN_INT_CONVERSION = YES; 438 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 439 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 440 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 441 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 442 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 443 | CLANG_WARN_STRICT_PROTOTYPES = YES; 444 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 445 | CLANG_WARN_UNREACHABLE_CODE = YES; 446 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 447 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 448 | COPY_PHASE_STRIP = NO; 449 | DEBUG_INFORMATION_FORMAT = dwarf; 450 | ENABLE_STRICT_OBJC_MSGSEND = YES; 451 | ENABLE_TESTABILITY = YES; 452 | GCC_C_LANGUAGE_STANDARD = gnu99; 453 | GCC_DYNAMIC_NO_PIC = NO; 454 | GCC_NO_COMMON_BLOCKS = YES; 455 | GCC_OPTIMIZATION_LEVEL = 0; 456 | GCC_PREPROCESSOR_DEFINITIONS = ( 457 | "DEBUG=1", 458 | "$(inherited)", 459 | ); 460 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 461 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 462 | GCC_WARN_UNDECLARED_SELECTOR = YES; 463 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 464 | GCC_WARN_UNUSED_FUNCTION = YES; 465 | GCC_WARN_UNUSED_VARIABLE = YES; 466 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 467 | MTL_ENABLE_DEBUG_INFO = YES; 468 | ONLY_ACTIVE_ARCH = YES; 469 | SDKROOT = iphoneos; 470 | TARGETED_DEVICE_FAMILY = "1,2"; 471 | }; 472 | name = Debug; 473 | }; 474 | 97C147041CF9000F007C117D /* Release */ = { 475 | isa = XCBuildConfiguration; 476 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 477 | buildSettings = { 478 | ALWAYS_SEARCH_USER_PATHS = NO; 479 | CLANG_ANALYZER_NONNULL = YES; 480 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 481 | CLANG_CXX_LIBRARY = "libc++"; 482 | CLANG_ENABLE_MODULES = YES; 483 | CLANG_ENABLE_OBJC_ARC = YES; 484 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 485 | CLANG_WARN_BOOL_CONVERSION = YES; 486 | CLANG_WARN_COMMA = YES; 487 | CLANG_WARN_CONSTANT_CONVERSION = YES; 488 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 489 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 490 | CLANG_WARN_EMPTY_BODY = YES; 491 | CLANG_WARN_ENUM_CONVERSION = YES; 492 | CLANG_WARN_INFINITE_RECURSION = YES; 493 | CLANG_WARN_INT_CONVERSION = YES; 494 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 495 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 496 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 497 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 498 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 499 | CLANG_WARN_STRICT_PROTOTYPES = YES; 500 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 501 | CLANG_WARN_UNREACHABLE_CODE = YES; 502 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 503 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 504 | COPY_PHASE_STRIP = NO; 505 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 506 | ENABLE_NS_ASSERTIONS = NO; 507 | ENABLE_STRICT_OBJC_MSGSEND = YES; 508 | GCC_C_LANGUAGE_STANDARD = gnu99; 509 | GCC_NO_COMMON_BLOCKS = YES; 510 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 511 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 512 | GCC_WARN_UNDECLARED_SELECTOR = YES; 513 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 514 | GCC_WARN_UNUSED_FUNCTION = YES; 515 | GCC_WARN_UNUSED_VARIABLE = YES; 516 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 517 | MTL_ENABLE_DEBUG_INFO = NO; 518 | SDKROOT = iphoneos; 519 | TARGETED_DEVICE_FAMILY = "1,2"; 520 | VALIDATE_PRODUCT = YES; 521 | }; 522 | name = Release; 523 | }; 524 | 97C147061CF9000F007C117D /* Debug */ = { 525 | isa = XCBuildConfiguration; 526 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; 527 | buildSettings = { 528 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 529 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 530 | ENABLE_BITCODE = NO; 531 | FRAMEWORK_SEARCH_PATHS = ( 532 | "$(inherited)", 533 | "$(PROJECT_DIR)/Flutter", 534 | ); 535 | INFOPLIST_FILE = Runner/Info.plist; 536 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 537 | LIBRARY_SEARCH_PATHS = ( 538 | "$(inherited)", 539 | "$(PROJECT_DIR)/Flutter", 540 | ); 541 | PRODUCT_BUNDLE_IDENTIFIER = com.codeartistry.buddiesshare; 542 | PRODUCT_NAME = "$(TARGET_NAME)"; 543 | VERSIONING_SYSTEM = "apple-generic"; 544 | }; 545 | name = Debug; 546 | }; 547 | 97C147071CF9000F007C117D /* Release */ = { 548 | isa = XCBuildConfiguration; 549 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 550 | buildSettings = { 551 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 552 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 553 | ENABLE_BITCODE = NO; 554 | FRAMEWORK_SEARCH_PATHS = ( 555 | "$(inherited)", 556 | "$(PROJECT_DIR)/Flutter", 557 | ); 558 | INFOPLIST_FILE = Runner/Info.plist; 559 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 560 | LIBRARY_SEARCH_PATHS = ( 561 | "$(inherited)", 562 | "$(PROJECT_DIR)/Flutter", 563 | ); 564 | PRODUCT_BUNDLE_IDENTIFIER = com.codeartistry.buddiesshare; 565 | PRODUCT_NAME = "$(TARGET_NAME)"; 566 | VERSIONING_SYSTEM = "apple-generic"; 567 | }; 568 | name = Release; 569 | }; 570 | /* End XCBuildConfiguration section */ 571 | 572 | /* Begin XCConfigurationList section */ 573 | 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { 574 | isa = XCConfigurationList; 575 | buildConfigurations = ( 576 | 97C147031CF9000F007C117D /* Debug */, 577 | 97C147041CF9000F007C117D /* Release */, 578 | 249021D3217E4FDB00AE95B9 /* Profile */, 579 | ); 580 | defaultConfigurationIsVisible = 0; 581 | defaultConfigurationName = Release; 582 | }; 583 | 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { 584 | isa = XCConfigurationList; 585 | buildConfigurations = ( 586 | 97C147061CF9000F007C117D /* Debug */, 587 | 97C147071CF9000F007C117D /* Release */, 588 | 249021D4217E4FDB00AE95B9 /* Profile */, 589 | ); 590 | defaultConfigurationIsVisible = 0; 591 | defaultConfigurationName = Release; 592 | }; 593 | /* End XCConfigurationList section */ 594 | }; 595 | rootObject = 97C146E61CF9000F007C117D /* Project object */; 596 | } 597 | --------------------------------------------------------------------------------