├── ios ├── Flutter │ ├── Debug.xcconfig │ ├── Release.xcconfig │ └── 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.xcworkspace │ └── contents.xcworkspacedata ├── Runner.xcodeproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ ├── xcshareddata │ │ └── xcschemes │ │ │ └── Runner.xcscheme │ └── project.pbxproj └── .gitignore ├── 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 │ │ │ │ └── burhanrashid52 │ │ │ │ └── sampleflutterapp │ │ │ │ └── MainActivity.java │ │ │ └── AndroidManifest.xml │ └── build.gradle ├── .gitignore ├── gradle │ └── wrapper │ │ └── gradle-wrapper.properties ├── settings.gradle └── build.gradle ├── CONTRIBUTING.md ├── .metadata ├── lib ├── main.dart ├── activity │ └── acivity_example.dart ├── frameLayout │ ├── frame_layout_widget.dart │ ├── stack_align_example.dart │ └── frame_attribute_controller.dart ├── linearLayout │ ├── row_column_example.dart │ ├── linear_layout_widget.dart │ └── linear_attribute_controller.dart └── home.dart ├── LICENSE ├── test └── widget_test.dart ├── .gitignore ├── pubspec.yaml ├── README.md └── CODE_OF_CONDUCT.md /ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.enableR8=true 3 | android.useAndroidX=true 4 | android.enableJetifier=true 5 | -------------------------------------------------------------------------------- /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/burhanrashid52/FlutterForAndroidExample/HEAD/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burhanrashid52/FlutterForAndroidExample/HEAD/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burhanrashid52/FlutterForAndroidExample/HEAD/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burhanrashid52/FlutterForAndroidExample/HEAD/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burhanrashid52/FlutterForAndroidExample/HEAD/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burhanrashid52/FlutterForAndroidExample/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /android/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | *.class 3 | .gradle 4 | /local.properties 5 | /.idea/workspace.xml 6 | /.idea/libraries 7 | .DS_Store 8 | /build 9 | /captures 10 | GeneratedPluginRegistrant.java 11 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burhanrashid52/FlutterForAndroidExample/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burhanrashid52/FlutterForAndroidExample/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burhanrashid52/FlutterForAndroidExample/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burhanrashid52/FlutterForAndroidExample/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burhanrashid52/FlutterForAndroidExample/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burhanrashid52/FlutterForAndroidExample/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burhanrashid52/FlutterForAndroidExample/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burhanrashid52/FlutterForAndroidExample/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burhanrashid52/FlutterForAndroidExample/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burhanrashid52/FlutterForAndroidExample/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burhanrashid52/FlutterForAndroidExample/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burhanrashid52/FlutterForAndroidExample/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burhanrashid52/FlutterForAndroidExample/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burhanrashid52/FlutterForAndroidExample/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burhanrashid52/FlutterForAndroidExample/HEAD/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/burhanrashid52/FlutterForAndroidExample/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burhanrashid52/FlutterForAndroidExample/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | ## How to contribute? 2 | 3 | 1. Fork the project. 4 | 2. Make required changes and commit. 5 | 3. Generate pull request. Mention all the required description regarding changes you made. 6 | 7 | Happy coding.:-) 8 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/Runner/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char * argv[]) { 6 | @autoreleasepool { 7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip 7 | -------------------------------------------------------------------------------- /.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: 44b7e7d3f42f050a79712daab253af06e9daf530 8 | channel: beta 9 | -------------------------------------------------------------------------------- /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. -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner/AppDelegate.m: -------------------------------------------------------------------------------- 1 | #include "AppDelegate.h" 2 | #include "GeneratedPluginRegistrant.h" 3 | 4 | @implementation AppDelegate 5 | 6 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 7 | [GeneratedPluginRegistrant registerWithRegistry:self]; 8 | // Override point for customization after application launch. 9 | return [super application:application didFinishLaunchingWithOptions:launchOptions]; 10 | } 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /android/app/src/main/java/com/burhanrashid52/sampleflutterapp/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.burhanrashid52.sampleflutterapp; 2 | 3 | import android.os.Bundle; 4 | 5 | import io.flutter.app.FlutterActivity; 6 | import io.flutter.plugins.GeneratedPluginRegistrant; 7 | 8 | public class MainActivity extends FlutterActivity { 9 | @Override 10 | protected void onCreate(Bundle savedInstanceState) { 11 | super.onCreate(savedInstanceState); 12 | GeneratedPluginRegistrant.registerWith(this); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:sample_flutter_app/home.dart'; 3 | 4 | void main() => runApp(new MyApp()); 5 | 6 | class MyApp extends StatefulWidget { 7 | @override 8 | _MyAppState createState() => new _MyAppState(); 9 | } 10 | 11 | class _MyAppState extends State { 12 | @override 13 | Widget build(BuildContext context) { 14 | return new MaterialApp( 15 | theme: new ThemeData(accentColor: Colors.pinkAccent), 16 | debugShowCheckedModeBanner: false, 17 | home: new HomeScreen(), 18 | ); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | google() 4 | jcenter() 5 | } 6 | 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:3.6.2' 9 | } 10 | } 11 | 12 | allprojects { 13 | repositories { 14 | google() 15 | jcenter() 16 | } 17 | } 18 | 19 | rootProject.buildDir = '../build' 20 | subprojects { 21 | project.buildDir = "${rootProject.buildDir}/${project.name}" 22 | } 23 | subprojects { 24 | project.evaluationDependsOn(':app') 25 | } 26 | 27 | task clean(type: Delete) { 28 | delete rootProject.buildDir 29 | } 30 | -------------------------------------------------------------------------------- /ios/.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | .vagrant/ 3 | .sconsign.dblite 4 | .svn/ 5 | 6 | .DS_Store 7 | *.swp 8 | profile 9 | 10 | DerivedData/ 11 | build/ 12 | GeneratedPluginRegistrant.h 13 | GeneratedPluginRegistrant.m 14 | 15 | .generated/ 16 | 17 | *.pbxuser 18 | *.mode1v3 19 | *.mode2v3 20 | *.perspectivev3 21 | 22 | !default.pbxuser 23 | !default.mode1v3 24 | !default.mode2v3 25 | !default.perspectivev3 26 | 27 | xcuserdata 28 | 29 | *.moved-aside 30 | 31 | *.pyc 32 | *sync/ 33 | Icon? 34 | .tags* 35 | 36 | /Flutter/app.flx 37 | /Flutter/app.zip 38 | /Flutter/flutter_assets/ 39 | /Flutter/App.framework 40 | /Flutter/Flutter.framework 41 | /Flutter/Generated.xcconfig 42 | /ServiceDefinitions.json 43 | 44 | Pods/ 45 | -------------------------------------------------------------------------------- /ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | UIRequiredDeviceCapabilities 24 | 25 | arm64 26 | 27 | MinimumOSVersion 28 | 8.0 29 | 30 | 31 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Burhanuddin Rashid 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /test/widget_test.dart: -------------------------------------------------------------------------------- 1 | // This is a basic Flutter widget test. 2 | // To perform an interaction with a widget in your test, use the WidgetTester utility that Flutter 3 | // provides. For example, you can send tap and scroll gestures. You can also use WidgetTester to 4 | // find child widgets in the widget tree, read text, and verify that the values of widget properties 5 | // are correct. 6 | 7 | import 'package:flutter/material.dart'; 8 | import 'package:flutter_test/flutter_test.dart'; 9 | 10 | import 'package:sample_flutter_app/main.dart'; 11 | 12 | void main() { 13 | testWidgets('Counter increments smoke test', (WidgetTester tester) async { 14 | // Build our app and trigger a frame. 15 | // await tester.pumpWidget(new MyApp()); 16 | 17 | // Verify that our counter starts at 0. 18 | expect(find.text('0'), findsOneWidget); 19 | expect(find.text('1'), findsNothing); 20 | 21 | // Tap the '+' icon and trigger a frame. 22 | await tester.tap(find.byIcon(Icons.add)); 23 | await tester.pump(); 24 | 25 | // Verify that our counter has incremented. 26 | expect(find.text('0'), findsNothing); 27 | expect(find.text('1'), findsOneWidget); 28 | }); 29 | } 30 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 29 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.burhanrashid52.sampleflutterapp" 27 | minSdkVersion 16 28 | targetSdkVersion 29 29 | versionCode 1 30 | versionName "1.0" 31 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 32 | } 33 | 34 | buildTypes { 35 | release { 36 | // TODO: Add your own signing config for the release build. 37 | // Signing with the debug keys for now, so `flutter run --release` works. 38 | signingConfig signingConfigs.debug 39 | } 40 | } 41 | } 42 | 43 | flutter { 44 | source '../..' 45 | } 46 | 47 | dependencies { 48 | testImplementation 'junit:junit:4.12' 49 | androidTestImplementation 'androidx.test:runner:1.1.0' 50 | androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0' 51 | } 52 | -------------------------------------------------------------------------------- /ios/Runner/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | sample_flutter_app 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIMainStoryboardFile 28 | Main 29 | UIRequiredDeviceCapabilities 30 | 31 | arm64 32 | 33 | UISupportedInterfaceOrientations 34 | 35 | UIInterfaceOrientationPortrait 36 | UIInterfaceOrientationLandscapeLeft 37 | UIInterfaceOrientationLandscapeRight 38 | 39 | UISupportedInterfaceOrientations~ipad 40 | 41 | UIInterfaceOrientationPortrait 42 | UIInterfaceOrientationPortraitUpsideDown 43 | UIInterfaceOrientationLandscapeLeft 44 | UIInterfaceOrientationLandscapeRight 45 | 46 | UIViewControllerBasedStatusBarAppearance 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /lib/activity/acivity_example.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class ActivityScreen extends StatelessWidget { 4 | @override 5 | Widget build(BuildContext context) { 6 | return new Scaffold( 7 | backgroundColor: Colors.yellowAccent, 8 | appBar: new AppBar( 9 | title: new Text("My Title"), 10 | actions: [ 11 | new IconButton( 12 | icon: new Icon(Icons.shopping_cart), 13 | onPressed: () {}, 14 | ), 15 | new IconButton( 16 | icon: new Icon(Icons.monetization_on), 17 | onPressed: () {}, 18 | ) 19 | ], 20 | ), 21 | body: new Container( 22 | color: Colors.red, 23 | ), 24 | drawer: new Drawer( 25 | child: new ListView( 26 | children: [ 27 | new DrawerHeader( 28 | child: new Text("Drawer Header"), 29 | decoration: new BoxDecoration( 30 | color: Colors.blue, 31 | ), 32 | ), 33 | new Text("Item 1"), 34 | new Text("Item 2"), 35 | new Text("Item 3"), 36 | new Text("Item 4"), 37 | new Text("Item 5"), 38 | new Text("Item 6"), 39 | ], 40 | ), 41 | ), 42 | bottomNavigationBar: new BottomNavigationBar(items: [ 43 | new BottomNavigationBarItem( 44 | icon: new Icon(Icons.home), 45 | title: new Text("Home"), 46 | ), 47 | new BottomNavigationBarItem( 48 | icon: new Icon(Icons.search), 49 | title: new Text("Search"), 50 | ) 51 | ]), 52 | floatingActionButton: new FloatingActionButton( 53 | onPressed: () {}, 54 | child: new Icon(Icons.add), 55 | ), 56 | ); 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /lib/frameLayout/frame_layout_widget.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:sample_flutter_app/frameLayout/stack_align_example.dart'; 3 | import 'frame_attribute_controller.dart'; 4 | 5 | class FrameLayoutScreen extends StatefulWidget { 6 | AlignmentGeometry alignmentGeometry = AlignmentDirectional.center; 7 | bool isAligned = false; 8 | bool isPositioned = false; 9 | 10 | @override 11 | _FrameLayoutScreenState createState() => _FrameLayoutScreenState(); 12 | } 13 | 14 | class _FrameLayoutScreenState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return Scaffold( 18 | appBar: AppBar( 19 | title: Text("FrameLayout"), 20 | bottom: FrameAttributeControllerWidget( 21 | frameAttributeSelection: 22 | (AlignmentGeometry direction, bool isAligned) { 23 | setState(() { 24 | widget.alignmentGeometry = direction; 25 | widget.isAligned = isAligned; 26 | widget.isPositioned = false; 27 | }); 28 | }, 29 | ), 30 | actions: [ 31 | IconButton( 32 | icon: Icon(Icons.widgets), 33 | onPressed: () { 34 | if (!widget.isPositioned) { 35 | setState(() { 36 | widget.isPositioned = true; 37 | }); 38 | } 39 | }) 40 | ], 41 | ), 42 | body: Container( 43 | color: Colors.grey, 44 | constraints: BoxConstraints.expand(), 45 | child: widget.isPositioned 46 | ? PositionedWidget() 47 | : widget.isAligned 48 | ? StackAlignWidgets(widget.alignmentGeometry) 49 | : StackWidgets(widget.alignmentGeometry), 50 | )); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.lock 4 | *.log 5 | *.pyc 6 | *.swp 7 | .DS_Store 8 | .atom/ 9 | .buildlog/ 10 | .history 11 | .svn/ 12 | 13 | # IntelliJ related 14 | *.iml 15 | *.ipr 16 | *.iws 17 | .idea/ 18 | 19 | # Visual Studio Code related 20 | .vscode/ 21 | 22 | # Flutter repo-specific 23 | /bin/cache/ 24 | /bin/mingit/ 25 | /dev/benchmarks/mega_gallery/ 26 | /dev/bots/.recipe_deps 27 | /dev/bots/android_tools/ 28 | /dev/docs/doc/ 29 | /dev/docs/lib/ 30 | /dev/docs/pubspec.yaml 31 | /packages/flutter/coverage/ 32 | version 33 | 34 | # Flutter/Dart/Pub related 35 | **/doc/api/ 36 | .dart_tool/ 37 | .flutter-plugins 38 | .packages 39 | .pub-cache/ 40 | .pub/ 41 | build/ 42 | flutter_*.png 43 | linked_*.ds 44 | unlinked.ds 45 | unlinked_spec.ds 46 | 47 | # Android related 48 | **/android/**/gradle-wrapper.jar 49 | **/android/.gradle 50 | **/android/captures/ 51 | **/android/gradlew 52 | **/android/gradlew.bat 53 | **/android/local.properties 54 | **/android/**/GeneratedPluginRegistrant.java 55 | 56 | # iOS/XCode related 57 | **/ios/**/*.mode1v3 58 | **/ios/**/*.mode2v3 59 | **/ios/**/*.moved-aside 60 | **/ios/**/*.pbxuser 61 | **/ios/**/*.perspectivev3 62 | **/ios/**/*sync/ 63 | **/ios/**/.sconsign.dblite 64 | **/ios/**/.tags* 65 | **/ios/**/.vagrant/ 66 | **/ios/**/DerivedData/ 67 | **/ios/**/Icon? 68 | **/ios/**/Pods/ 69 | **/ios/**/profile 70 | **/ios/**/xcuserdata 71 | **/ios/.generated/ 72 | **/ios/Flutter/App.framework 73 | **/ios/Flutter/Flutter.framework 74 | **/ios/Flutter/Generated.xcconfig 75 | **/ios/Flutter/app.flx 76 | **/ios/Flutter/app.zip 77 | **/ios/Flutter/flutter_assets/ 78 | **/ios/ServiceDefinitions.json 79 | **/ios/Runner/GeneratedPluginRegistrant.* 80 | 81 | # Exceptions to above rules. 82 | !**/ios/**/default.mode1v3 83 | !**/ios/**/default.mode2v3 84 | !**/ios/**/default.pbxuser 85 | !**/ios/**/default.perspectivev3 86 | !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages 87 | -------------------------------------------------------------------------------- /pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: sample_flutter_app 2 | description: A new Flutter application. 3 | 4 | dependencies: 5 | flutter: 6 | sdk: flutter 7 | 8 | # The following adds the Cupertino Icons font to your application. 9 | # Use with the CupertinoIcons class for iOS style icons. 10 | cupertino_icons: ^0.1.0 11 | 12 | dev_dependencies: 13 | flutter_test: 14 | sdk: flutter 15 | 16 | 17 | # For information on the generic Dart part of this file, see the 18 | # following page: https://www.dartlang.org/tools/pub/pubspec 19 | 20 | # The following section is specific to Flutter. 21 | flutter: 22 | 23 | # The following line ensures that the Material Icons font is 24 | # included with your application, so that you can use the icons in 25 | # the material Icons class. 26 | uses-material-design: true 27 | 28 | # To add assets to your application, add an assets section, like this: 29 | # assets: 30 | # - images/a_dot_burr.jpeg 31 | # - images/a_dot_ham.jpeg 32 | 33 | # An image asset can refer to one or more resolution-specific "variants", see 34 | # https://flutter.io/assets-and-images/#resolution-aware. 35 | 36 | # For details regarding adding assets from package dependencies, see 37 | # https://flutter.io/assets-and-images/#from-packages 38 | 39 | # To add custom fonts to your application, add a fonts section here, 40 | # in this "flutter" section. Each entry in this list should have a 41 | # "family" key with the font family name, and a "fonts" key with a 42 | # list giving the asset and other descriptors for the font. For 43 | # example: 44 | # fonts: 45 | # - family: Schyler 46 | # fonts: 47 | # - asset: fonts/Schyler-Regular.ttf 48 | # - asset: fonts/Schyler-Italic.ttf 49 | # style: italic 50 | # - family: Trajan Pro 51 | # fonts: 52 | # - asset: fonts/TrajanPro.ttf 53 | # - asset: fonts/TrajanPro_Bold.ttf 54 | # weight: 700 55 | # 56 | # For details regarding fonts from package dependencies, 57 | # see https://flutter.io/custom-fonts/#from-packages 58 | -------------------------------------------------------------------------------- /android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 8 | 9 | 10 | 15 | 19 | 26 | 30 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /lib/linearLayout/row_column_example.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class RowWidget extends StatelessWidget { 4 | MainAxisAlignment mainAxisAlignment; 5 | CrossAxisAlignment crossAxisAlignment; 6 | MainAxisSize mainAxisSize; 7 | 8 | RowWidget( 9 | {this.mainAxisAlignment = MainAxisAlignment.start, 10 | this.crossAxisAlignment = CrossAxisAlignment.start, 11 | this.mainAxisSize = MainAxisSize.min}); 12 | 13 | @override 14 | Widget build(BuildContext context) { 15 | return new Row( 16 | mainAxisAlignment: mainAxisAlignment, 17 | crossAxisAlignment: crossAxisAlignment, 18 | mainAxisSize: mainAxisSize, 19 | children: getIconWidgets(), 20 | ); 21 | } 22 | } 23 | 24 | class ColumnWidget extends StatelessWidget { 25 | MainAxisAlignment mainAxisAlignment; 26 | CrossAxisAlignment crossAxisAlignment; 27 | MainAxisSize mainAxisSize; 28 | 29 | ColumnWidget( 30 | {this.mainAxisAlignment = MainAxisAlignment.start, 31 | this.crossAxisAlignment = CrossAxisAlignment.start, 32 | this.mainAxisSize = MainAxisSize.min}); 33 | 34 | @override 35 | Widget build(BuildContext context) { 36 | return new Column( 37 | mainAxisAlignment: mainAxisAlignment, 38 | crossAxisAlignment: crossAxisAlignment, 39 | mainAxisSize: mainAxisSize, 40 | children: getIconWidgets(), 41 | ); 42 | } 43 | } 44 | 45 | List getWidgets() { 46 | List widgets = new List(); 47 | widgets.add(new CircleAvatar( 48 | radius: 25.0, 49 | child: new Text("1"), 50 | )); 51 | widgets.add(new Padding( 52 | padding: const EdgeInsets.all(8.0), 53 | child: new CircleAvatar( 54 | radius: 50.0, 55 | child: new Text("2"), 56 | ), 57 | )); 58 | widgets.add(new CircleAvatar( 59 | radius: 25.0, 60 | child: new Text("3"), 61 | )); 62 | return widgets; 63 | } 64 | 65 | List getIconWidgets() { 66 | List widgets = new List(); 67 | widgets.add(new Icon( 68 | Icons.access_time, 69 | size: 50.0, 70 | )); 71 | widgets.add(new Icon( 72 | Icons.pie_chart, 73 | size: 100.0, 74 | )); 75 | widgets.add(new Icon( 76 | Icons.email, 77 | size: 50.0, 78 | )); 79 | return widgets; 80 | } 81 | -------------------------------------------------------------------------------- /lib/linearLayout/linear_layout_widget.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:sample_flutter_app/linearLayout/linear_attribute_controller.dart'; 3 | import 'package:sample_flutter_app/linearLayout/row_column_example.dart'; 4 | 5 | class LinearLayoutScreen extends StatefulWidget { 6 | @override 7 | _LinearLayoutScreenState createState() => new _LinearLayoutScreenState(true, 8 | MainAxisAlignment.start, CrossAxisAlignment.start, MainAxisSize.min); 9 | } 10 | 11 | class _LinearLayoutScreenState extends State { 12 | Widget _rowColumnWidget = new RowWidget(); 13 | bool isRow; 14 | MainAxisAlignment mainAxisAlignment; 15 | CrossAxisAlignment crossAxisAlignment; 16 | MainAxisSize mainAxisSize; 17 | 18 | _LinearLayoutScreenState(this.isRow, this.mainAxisAlignment, 19 | this.crossAxisAlignment, this.mainAxisSize); 20 | 21 | @override 22 | Widget build(BuildContext context) { 23 | return new Scaffold( 24 | appBar: new AppBar( 25 | bottom: new PreferredSize( 26 | child: new LinearAttributeControllerWidget( 27 | isRow, mainAxisAlignment, crossAxisAlignment, mainAxisSize, 28 | attributeSelection: (_isRow, _mainAxisAlignment, _mainAxisSize, 29 | _crossAxisAlignment) { 30 | setState(() { 31 | if (_isRow) { 32 | _rowColumnWidget = new RowWidget( 33 | mainAxisAlignment: _mainAxisAlignment, 34 | mainAxisSize: _mainAxisSize, 35 | crossAxisAlignment: _crossAxisAlignment, 36 | ); 37 | } else { 38 | _rowColumnWidget = new ColumnWidget( 39 | mainAxisAlignment: _mainAxisAlignment, 40 | mainAxisSize: _mainAxisSize, 41 | crossAxisAlignment: _crossAxisAlignment, 42 | ); 43 | } 44 | isRow = _isRow; 45 | mainAxisSize = _mainAxisSize; 46 | mainAxisAlignment = _mainAxisAlignment; 47 | crossAxisAlignment = _crossAxisAlignment; 48 | }); 49 | }), 50 | preferredSize: new Size(0.0, 248.0)), 51 | ), 52 | body: new Container( 53 | color: Colors.yellowAccent, 54 | child: _rowColumnWidget, 55 | ), 56 | ); 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /lib/home.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:sample_flutter_app/activity/acivity_example.dart'; 3 | import 'package:sample_flutter_app/linearLayout/linear_layout_widget.dart'; 4 | import 'package:sample_flutter_app/frameLayout/frame_layout_widget.dart'; 5 | 6 | class HomeScreen extends StatelessWidget { 7 | @override 8 | Widget build(BuildContext context) { 9 | return new Scaffold( 10 | appBar: new AppBar( 11 | title: new Text("Flutter For Android Developers"), 12 | ), 13 | body: new Center( 14 | child: new Column( 15 | mainAxisSize: MainAxisSize.min, 16 | children: [ 17 | Padding( 18 | padding: const EdgeInsets.all(8.0), 19 | child: new FlatButton( 20 | onPressed: () { 21 | Navigator.push( 22 | context, 23 | MaterialPageRoute(builder: (context) => ActivityScreen()), 24 | ); 25 | }, 26 | color: Theme.of(context).accentColor, 27 | child: new Text("Activity", 28 | style: new TextStyle(color: Colors.white)), 29 | ), 30 | ), 31 | Padding( 32 | padding: const EdgeInsets.all(8.0), 33 | child: new FlatButton( 34 | onPressed: () { 35 | Navigator.push( 36 | context, 37 | MaterialPageRoute( 38 | builder: (context) => LinearLayoutScreen()), 39 | ); 40 | }, 41 | color: Theme.of(context).accentColor, 42 | child: new Text("LinearLayout", 43 | style: new TextStyle(color: Colors.white)), 44 | ), 45 | ), 46 | Padding( 47 | padding: const EdgeInsets.all(8.0), 48 | child: new FlatButton( 49 | onPressed: () { 50 | Navigator.push( 51 | context, 52 | MaterialPageRoute( 53 | builder: (context) => FrameLayoutScreen()), 54 | ); 55 | }, 56 | color: Theme.of(context).accentColor, 57 | child: new Text("FrameLayout", 58 | style: new TextStyle(color: Colors.white)), 59 | ), 60 | ) 61 | ], 62 | ), 63 | ), 64 | ); 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Flutter For Android Developers 2 | [![Codemagic build status](https://api.codemagic.io/apps/5d43dd249585dc000d6ae180/5d43dd249585dc000d6ae17f/status_badge.svg)](https://codemagic.io/apps/5d43dd249585dc000d6ae180/5d43dd249585dc000d6ae17f/latest_build) 3 | 4 | This is sample app for my blog series "Flutter For Android Developer" for Android developers who are looking to apply their existing Android knowledge to build mobile apps with Flutter.For more details you can read my blog on meduim 5 | 6 | ## Series 7 | 1. [How to design activity UI in Flutter ?](https://blog.usejournal.com/flutter-for-android-developers-how-to-design-activity-ui-in-flutter-4bf7b0de1e48) 8 | 9 | 10 | ![](https://i.imgur.com/98uj3Zl.png) 11 | 12 | 13 | 14 | 15 | 2. [How to design LinearLayout in Flutter ?](https://medium.com/@burhanrashid52/flutter-for-android-developers-how-to-design-linearlayout-in-flutter-5d819c0ddf1a) 16 | 17 | ![](https://i.imgur.com/5vF2Fia.gif) 18 | 19 | 20 | 21 | 22 | 3. [How to design FrameLayout in Flutter ?](https://medium.com/@burhanrashid52/flutter-for-android-developers-how-to-design-framelayout-in-flutter-93a19fc7e7a6) 23 | 24 | ![](https://i.imgur.com/ogrN3Qj.gif) 25 | 26 | 27 | ## Questions?🤔 28 | Hit me on twitter [![Twitter](https://img.shields.io/badge/Twitter-%40burhanrashid52-blue.svg)](https://twitter.com/burhanrashid52) 29 | [![Medium](https://img.shields.io/badge/Medium-%40burhanrashid52-brightgreen.svg)](https://medium.com/@burhanrashid52) 30 | [![Facebook](https://img.shields.io/badge/Facebook-Burhanuddin%20Rashid-blue.svg)](https://www.facebook.com/Bursid) 31 | 32 | 33 | ## MIT License 34 | 35 | Copyright (c) 2020 Burhanuddin Rashid 36 | 37 | Permission is hereby granted, free of charge, to any person obtaining a copy 38 | of this software and associated documentation files (the "Software"), to deal 39 | in the Software without restriction, including without limitation the rights 40 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 41 | copies of the Software, and to permit persons to whom the Software is 42 | furnished to do so, subject to the following conditions: 43 | 44 | The above copyright notice and this permission notice shall be included in all 45 | copies or substantial portions of the Software. 46 | 47 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 48 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 49 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 50 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 51 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 52 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 53 | SOFTWARE. 54 | -------------------------------------------------------------------------------- /lib/frameLayout/stack_align_example.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class StackWidgets extends StatelessWidget { 4 | final AlignmentGeometry alignmentGeometry; 5 | 6 | StackWidgets(this.alignmentGeometry); 7 | 8 | @override 9 | Widget build(BuildContext context) { 10 | return Stack( 11 | alignment: alignmentGeometry, 12 | children: [ 13 | _buildBoxContainer(Colors.red, 200.0, "1"), 14 | _buildBoxContainer(Colors.blue, 150.0, "2"), 15 | _buildBoxContainer(Colors.green, 100.0, "3"), 16 | _buildBoxContainer(Colors.orange, 50.0, "4"), 17 | ], 18 | ); 19 | } 20 | } 21 | 22 | Widget _buildBoxContainer(Color bgColor, double size, String text) { 23 | return Container( 24 | color: bgColor, 25 | height: size, 26 | width: size, 27 | child: Center( 28 | child: Text( 29 | text, 30 | style: TextStyle(color: Colors.white, fontSize: 25.0), 31 | ), 32 | ), 33 | ); 34 | } 35 | 36 | class StackAlignWidgets extends StatelessWidget { 37 | final AlignmentGeometry alignmentGeometry; 38 | 39 | StackAlignWidgets(this.alignmentGeometry); 40 | 41 | @override 42 | Widget build(BuildContext context) { 43 | return Stack( 44 | children: [ 45 | Align( 46 | alignment: AlignmentDirectional.topStart, 47 | child: _buildBoxContainer(Colors.red, 200.0, "1"), 48 | ), 49 | Align( 50 | alignment: AlignmentDirectional.topEnd, 51 | child: _buildBoxContainer(Colors.blue, 150.0, "2"), 52 | ), 53 | Align( 54 | alignment: alignmentGeometry, 55 | child: _buildBoxContainer(Colors.green, 100.0, "3"), 56 | ), 57 | Align( 58 | alignment: AlignmentDirectional.bottomEnd, 59 | child: _buildBoxContainer(Colors.orange, 50.0, "4"), 60 | ) 61 | ], 62 | ); 63 | } 64 | } 65 | 66 | class PositionedWidget extends StatelessWidget { 67 | @override 68 | Widget build(BuildContext context) { 69 | return Stack( 70 | children: [ 71 | Positioned( 72 | child: _buildBoxContainer(Colors.red, 200.0, "1"), 73 | top: 10.0, 74 | left: 10.0, 75 | ), 76 | Positioned( 77 | child: _buildBoxContainer(Colors.blue, 150.0, "2"), 78 | top: 30.0, 79 | right: 50.0, 80 | ), 81 | Positioned( 82 | child: _buildBoxContainer(Colors.green, 100.0, "3"), 83 | bottom: 100.0, 84 | left: 30.0, 85 | ), 86 | Positioned( 87 | child: _buildBoxContainer(Colors.orange, 50.0, "4"), 88 | bottom: 50.0, 89 | right: 100.0, 90 | ), 91 | ], 92 | ); 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. 6 | 7 | ## Our Standards 8 | 9 | Examples of behavior that contributes to creating a positive environment include: 10 | 11 | * Using welcoming and inclusive language 12 | * Being respectful of differing viewpoints and experiences 13 | * Gracefully accepting constructive criticism 14 | * Focusing on what is best for the community 15 | * Showing empathy towards other community members 16 | 17 | Examples of unacceptable behavior by participants include: 18 | 19 | * The use of sexualized language or imagery and unwelcome sexual attention or advances 20 | * Trolling, insulting/derogatory comments, and personal or political attacks 21 | * Public or private harassment 22 | * Publishing others' private information, such as a physical or electronic address, without explicit permission 23 | * Other conduct which could reasonably be considered inappropriate in a professional setting 24 | 25 | ## Our Responsibilities 26 | 27 | Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. 28 | 29 | Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. 30 | 31 | ## Scope 32 | 33 | This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. 34 | 35 | ## Enforcement 36 | 37 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at burhanrashid5253@gmail.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. 38 | 39 | Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. 40 | 41 | ## Attribution 42 | 43 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] 44 | 45 | [homepage]: http://contributor-covenant.org 46 | [version]: http://contributor-covenant.org/version/1/4/ 47 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 31 | 32 | 33 | 34 | 40 | 41 | 42 | 43 | 44 | 45 | 56 | 58 | 64 | 65 | 66 | 67 | 68 | 69 | 75 | 77 | 83 | 84 | 85 | 86 | 88 | 89 | 92 | 93 | 94 | -------------------------------------------------------------------------------- /lib/frameLayout/frame_attribute_controller.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class FrameAttributeControllerWidget extends StatefulWidget 4 | implements PreferredSizeWidget { 5 | final FrameAttributeSelection frameAttributeSelection; 6 | final int spanCount = 3; 7 | final double titlePadding = 12.0; 8 | final double titleFontSize = 14.0; 9 | 10 | FrameAttributeControllerWidget({this.frameAttributeSelection}); 11 | 12 | @override 13 | _FrameAttributeControllerWidgetState createState() => 14 | _FrameAttributeControllerWidgetState(); 15 | 16 | @override 17 | Size get preferredSize => new Size(double.infinity, 200.0); 18 | } 19 | 20 | class _FrameAttributeControllerWidgetState 21 | extends State { 22 | AlignmentGeometry _alignmentGravity = AlignmentDirectional.center; 23 | AlignmentGeometry _alignmentGravityLayout = AlignmentDirectional.center; 24 | 25 | @override 26 | Widget build(BuildContext context) { 27 | return Container( 28 | height: 200.0, 29 | child: Row( 30 | children: [ 31 | Expanded( 32 | flex: 5, 33 | child: Column( 34 | children: [ 35 | _buildTitleWidget("android:gravity\n(Stack)"), 36 | _buildTable(false) 37 | ], 38 | ), 39 | ), 40 | Expanded( 41 | flex: 5, 42 | child: Column( 43 | children: [ 44 | _buildTitleWidget("android:layout_gravity\n(Align)"), 45 | _buildTable(true) 46 | ], 47 | ), 48 | ) 49 | ], 50 | ), 51 | ); 52 | } 53 | 54 | Padding _buildTitleWidget(String text) { 55 | return Padding( 56 | padding: EdgeInsets.all(widget.titlePadding), 57 | child: Center( 58 | child: Text( 59 | text, 60 | style: TextStyle( 61 | fontSize: widget.titleFontSize, 62 | fontWeight: FontWeight.bold, 63 | color: Colors.white, 64 | ), 65 | textAlign: TextAlign.center, 66 | ), 67 | ), 68 | ); 69 | } 70 | 71 | Table _buildTable(bool isAligned) { 72 | return Table( 73 | children: [ 74 | TableRow( 75 | children: [ 76 | _buildGravityButton("TS", AlignmentDirectional.topStart, isAligned), 77 | _buildGravityButton( 78 | "TC", AlignmentDirectional.topCenter, isAligned), 79 | _buildGravityButton("TE", AlignmentDirectional.topEnd, isAligned), 80 | ], 81 | ), 82 | TableRow( 83 | children: [ 84 | _buildGravityButton( 85 | "CS", AlignmentDirectional.centerStart, isAligned), 86 | _buildGravityButton("C", AlignmentDirectional.center, isAligned), 87 | _buildGravityButton( 88 | "CE", AlignmentDirectional.centerEnd, isAligned), 89 | ], 90 | ), 91 | TableRow( 92 | children: [ 93 | _buildGravityButton( 94 | "BS", AlignmentDirectional.bottomStart, isAligned), 95 | _buildGravityButton( 96 | "BC", AlignmentDirectional.bottomCenter, isAligned), 97 | _buildGravityButton( 98 | "BE", AlignmentDirectional.bottomEnd, isAligned), 99 | ], 100 | ) 101 | ], 102 | ); 103 | } 104 | 105 | Widget _buildGravityButton( 106 | String buttonText, AlignmentGeometry gravity, bool isAligned) { 107 | return GestureDetector( 108 | onTap: () { 109 | setState(() { 110 | if (isAligned) { 111 | _alignmentGravityLayout = gravity; 112 | } else { 113 | _alignmentGravity = gravity; 114 | } 115 | }); 116 | widget.frameAttributeSelection(gravity, isAligned); 117 | }, 118 | child: Padding( 119 | padding: const EdgeInsets.all(12.0), 120 | child: Container( 121 | margin: const EdgeInsets.all(4.0), 122 | child: Center( 123 | child: Text( 124 | buttonText, 125 | style: TextStyle( 126 | color: isAligned 127 | ? _alignmentGravityLayout == gravity 128 | ? Colors.white 129 | : Colors.black 130 | : _alignmentGravity == gravity 131 | ? Colors.white 132 | : Colors.black, 133 | ), 134 | ), 135 | ), 136 | ), 137 | )); 138 | } 139 | } 140 | 141 | typedef void FrameAttributeSelection(AlignmentGeometry gravity, bool isAligned); 142 | -------------------------------------------------------------------------------- /lib/linearLayout/linear_attribute_controller.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class LinearAttributeControllerWidget extends StatelessWidget { 4 | AttributeSelection attributeSelection; 5 | bool _isRow; 6 | MainAxisAlignment _mainAxisAlignment; 7 | CrossAxisAlignment _crossAxisAlignment; 8 | MainAxisSize _mainAxisSize; 9 | 10 | LinearAttributeControllerWidget(this._isRow, this._mainAxisAlignment, 11 | this._crossAxisAlignment, this._mainAxisSize, 12 | {this.attributeSelection}); 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return new Container( 17 | color: Colors.red, 18 | child: new Column( 19 | children: [ 20 | new Row( 21 | children: [ 22 | new Column( 23 | children: [ 24 | Padding( 25 | padding: const EdgeInsets.all(4.0), 26 | child: new Text("Oreintation"), 27 | ), 28 | new Row( 29 | children: [ 30 | new FlatButton( 31 | onPressed: () { 32 | _isRow = true; 33 | updateAttributes(); 34 | }, 35 | child: new Text( 36 | "Row", 37 | style: new TextStyle( 38 | color: _isRow ? Colors.white : Colors.black), 39 | )), 40 | new FlatButton( 41 | onPressed: () { 42 | _isRow = false; 43 | updateAttributes(); 44 | }, 45 | child: new Text( 46 | "Column", 47 | style: new TextStyle( 48 | color: _isRow ? Colors.black : Colors.white), 49 | )), 50 | ], 51 | mainAxisAlignment: MainAxisAlignment.center, 52 | ), 53 | ], 54 | ), 55 | new Divider( 56 | color: Colors.white, 57 | ), 58 | new Column( 59 | children: [ 60 | Padding( 61 | padding: const EdgeInsets.all(8.0), 62 | child: new Text("Wrap/Match"), 63 | ), 64 | new Row( 65 | children: [ 66 | new FlatButton( 67 | onPressed: () { 68 | _mainAxisSize = MainAxisSize.min; 69 | updateAttributes(); 70 | }, 71 | child: new Text( 72 | "Min", 73 | style: new TextStyle( 74 | color: _mainAxisSize == MainAxisSize.min 75 | ? Colors.white 76 | : Colors.black, 77 | ), 78 | )), 79 | new FlatButton( 80 | onPressed: () { 81 | _mainAxisSize = MainAxisSize.max; 82 | updateAttributes(); 83 | }, 84 | child: new Text("Max", 85 | style: new TextStyle( 86 | color: _mainAxisSize == MainAxisSize.max 87 | ? Colors.white 88 | : Colors.black, 89 | ))), 90 | ], 91 | ), 92 | ], 93 | ), 94 | ], 95 | ), 96 | new Divider( 97 | color: Colors.white, 98 | ), 99 | new Column( 100 | children: [ 101 | Padding( 102 | padding: const EdgeInsets.all(4.0), 103 | child: new Text("Gravity on Main Axis"), 104 | ), 105 | new Row( 106 | children: [ 107 | new FlatButton( 108 | onPressed: () { 109 | _mainAxisAlignment = MainAxisAlignment.start; 110 | updateAttributes(); 111 | }, 112 | child: new Text( 113 | "Start", 114 | style: new TextStyle( 115 | color: _mainAxisAlignment == MainAxisAlignment.start 116 | ? Colors.white 117 | : Colors.black), 118 | )), 119 | new FlatButton( 120 | onPressed: () { 121 | _mainAxisAlignment = MainAxisAlignment.center; 122 | updateAttributes(); 123 | }, 124 | child: new Text( 125 | "Center", 126 | style: new TextStyle( 127 | color: 128 | _mainAxisAlignment == MainAxisAlignment.center 129 | ? Colors.white 130 | : Colors.black), 131 | )), 132 | new FlatButton( 133 | onPressed: () { 134 | _mainAxisAlignment = MainAxisAlignment.end; 135 | updateAttributes(); 136 | }, 137 | child: new Text( 138 | "End", 139 | style: new TextStyle( 140 | color: _mainAxisAlignment == MainAxisAlignment.end 141 | ? Colors.white 142 | : Colors.black), 143 | )), 144 | ], 145 | mainAxisAlignment: MainAxisAlignment.center, 146 | ), 147 | ], 148 | ), 149 | new Divider( 150 | color: Colors.white, 151 | ), 152 | new Column( 153 | children: [ 154 | Padding( 155 | padding: const EdgeInsets.all(4.0), 156 | child: new Text("Main Axis Aligment (Chains)"), 157 | ), 158 | new Row( 159 | children: [ 160 | new FlatButton( 161 | onPressed: () { 162 | _mainAxisAlignment = MainAxisAlignment.spaceAround; 163 | updateAttributes(); 164 | }, 165 | child: new Text( 166 | "Around", 167 | style: new TextStyle( 168 | color: _mainAxisAlignment == 169 | MainAxisAlignment.spaceAround 170 | ? Colors.white 171 | : Colors.black), 172 | )), 173 | new FlatButton( 174 | onPressed: () { 175 | _mainAxisAlignment = MainAxisAlignment.spaceEvenly; 176 | updateAttributes(); 177 | }, 178 | child: new Text( 179 | "Evenly", 180 | style: new TextStyle( 181 | color: _mainAxisAlignment == 182 | MainAxisAlignment.spaceEvenly 183 | ? Colors.white 184 | : Colors.black), 185 | )), 186 | new FlatButton( 187 | onPressed: () { 188 | _mainAxisAlignment = MainAxisAlignment.spaceBetween; 189 | updateAttributes(); 190 | }, 191 | child: new Text( 192 | "Between", 193 | style: new TextStyle( 194 | color: _mainAxisAlignment == 195 | MainAxisAlignment.spaceBetween 196 | ? Colors.white 197 | : Colors.black), 198 | )), 199 | ], 200 | mainAxisAlignment: MainAxisAlignment.center, 201 | ), 202 | ], 203 | ), 204 | new Divider( 205 | color: Colors.white, 206 | ), 207 | new Column( 208 | children: [ 209 | Padding( 210 | padding: const EdgeInsets.all(4.0), 211 | child: new Text("Gravity on Cross Axis"), 212 | ), 213 | new Row( 214 | children: [ 215 | new FlatButton( 216 | onPressed: () { 217 | _crossAxisAlignment = CrossAxisAlignment.start; 218 | updateAttributes(); 219 | }, 220 | child: new Text( 221 | "Start", 222 | style: new TextStyle( 223 | color: 224 | _crossAxisAlignment == CrossAxisAlignment.start 225 | ? Colors.white 226 | : Colors.black), 227 | )), 228 | new FlatButton( 229 | onPressed: () { 230 | _crossAxisAlignment = CrossAxisAlignment.center; 231 | updateAttributes(); 232 | }, 233 | child: new Text( 234 | "Center", 235 | style: new TextStyle( 236 | color: 237 | _crossAxisAlignment == CrossAxisAlignment.center 238 | ? Colors.white 239 | : Colors.black), 240 | )), 241 | new FlatButton( 242 | onPressed: () { 243 | _crossAxisAlignment = CrossAxisAlignment.end; 244 | updateAttributes(); 245 | }, 246 | child: new Text( 247 | "End", 248 | style: new TextStyle( 249 | color: _crossAxisAlignment == CrossAxisAlignment.end 250 | ? Colors.white 251 | : Colors.black), 252 | )), 253 | new FlatButton( 254 | onPressed: () { 255 | _crossAxisAlignment = CrossAxisAlignment.stretch; 256 | updateAttributes(); 257 | }, 258 | child: new Text( 259 | "Stretch", 260 | style: new TextStyle( 261 | color: _crossAxisAlignment == 262 | CrossAxisAlignment.stretch 263 | ? Colors.white 264 | : Colors.black), 265 | )), 266 | ], 267 | mainAxisAlignment: MainAxisAlignment.center, 268 | ), 269 | ], 270 | ), 271 | new SizedBox( 272 | width: 8.0, 273 | height: 8.0, 274 | ) 275 | ], 276 | ), 277 | ); 278 | } 279 | 280 | void updateAttributes() { 281 | attributeSelection( 282 | _isRow, _mainAxisAlignment, _mainAxisSize, _crossAxisAlignment); 283 | } 284 | } 285 | 286 | typedef void AttributeSelection(bool isRow, MainAxisAlignment mainAxisAlignment, 287 | MainAxisSize mainAxisSize, CrossAxisAlignment crossAxisAlignment); 288 | -------------------------------------------------------------------------------- /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 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 11 | 2D5378261FAA1A9400D5DBA9 /* flutter_assets in Resources */ = {isa = PBXBuildFile; fileRef = 2D5378251FAA1A9400D5DBA9 /* flutter_assets */; }; 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 | 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; }; 16 | 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 17 | 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB21CF90195004384FC /* Debug.xcconfig */; }; 18 | 9740EEB51CF90195004384FC /* Generated.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB31CF90195004384FC /* Generated.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 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 43 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 44 | 2D5378251FAA1A9400D5DBA9 /* flutter_assets */ = {isa = PBXFileReference; lastKnownFileType = folder; name = flutter_assets; path = Flutter/flutter_assets; sourceTree = SOURCE_ROOT; }; 45 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 46 | 3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = ""; }; 47 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 48 | 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 49 | 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 50 | 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 51 | 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 52 | 9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = ""; }; 53 | 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; 54 | 97C146F21CF9000F007C117D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 55 | 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 56 | 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 57 | 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 58 | 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 59 | /* End PBXFileReference section */ 60 | 61 | /* Begin PBXFrameworksBuildPhase section */ 62 | 97C146EB1CF9000F007C117D /* Frameworks */ = { 63 | isa = PBXFrameworksBuildPhase; 64 | buildActionMask = 2147483647; 65 | files = ( 66 | 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */, 67 | 3B80C3941E831B6300D905FE /* App.framework in Frameworks */, 68 | ); 69 | runOnlyForDeploymentPostprocessing = 0; 70 | }; 71 | /* End PBXFrameworksBuildPhase section */ 72 | 73 | /* Begin PBXGroup section */ 74 | 9740EEB11CF90186004384FC /* Flutter */ = { 75 | isa = PBXGroup; 76 | children = ( 77 | 2D5378251FAA1A9400D5DBA9 /* flutter_assets */, 78 | 3B80C3931E831B6300D905FE /* App.framework */, 79 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, 80 | 9740EEBA1CF902C7004384FC /* Flutter.framework */, 81 | 9740EEB21CF90195004384FC /* Debug.xcconfig */, 82 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, 83 | 9740EEB31CF90195004384FC /* Generated.xcconfig */, 84 | ); 85 | name = Flutter; 86 | sourceTree = ""; 87 | }; 88 | 97C146E51CF9000F007C117D = { 89 | isa = PBXGroup; 90 | children = ( 91 | 9740EEB11CF90186004384FC /* Flutter */, 92 | 97C146F01CF9000F007C117D /* Runner */, 93 | 97C146EF1CF9000F007C117D /* Products */, 94 | CF3B75C9A7D2FA2A4C99F110 /* Frameworks */, 95 | ); 96 | sourceTree = ""; 97 | }; 98 | 97C146EF1CF9000F007C117D /* Products */ = { 99 | isa = PBXGroup; 100 | children = ( 101 | 97C146EE1CF9000F007C117D /* Runner.app */, 102 | ); 103 | name = Products; 104 | sourceTree = ""; 105 | }; 106 | 97C146F01CF9000F007C117D /* Runner */ = { 107 | isa = PBXGroup; 108 | children = ( 109 | 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */, 110 | 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */, 111 | 97C146FA1CF9000F007C117D /* Main.storyboard */, 112 | 97C146FD1CF9000F007C117D /* Assets.xcassets */, 113 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, 114 | 97C147021CF9000F007C117D /* Info.plist */, 115 | 97C146F11CF9000F007C117D /* Supporting Files */, 116 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, 117 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, 118 | ); 119 | path = Runner; 120 | sourceTree = ""; 121 | }; 122 | 97C146F11CF9000F007C117D /* Supporting Files */ = { 123 | isa = PBXGroup; 124 | children = ( 125 | 97C146F21CF9000F007C117D /* main.m */, 126 | ); 127 | name = "Supporting Files"; 128 | sourceTree = ""; 129 | }; 130 | /* End PBXGroup section */ 131 | 132 | /* Begin PBXNativeTarget section */ 133 | 97C146ED1CF9000F007C117D /* Runner */ = { 134 | isa = PBXNativeTarget; 135 | buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; 136 | buildPhases = ( 137 | 9740EEB61CF901F6004384FC /* Run Script */, 138 | 97C146EA1CF9000F007C117D /* Sources */, 139 | 97C146EB1CF9000F007C117D /* Frameworks */, 140 | 97C146EC1CF9000F007C117D /* Resources */, 141 | 9705A1C41CF9048500538489 /* Embed Frameworks */, 142 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */, 143 | ); 144 | buildRules = ( 145 | ); 146 | dependencies = ( 147 | ); 148 | name = Runner; 149 | productName = Runner; 150 | productReference = 97C146EE1CF9000F007C117D /* Runner.app */; 151 | productType = "com.apple.product-type.application"; 152 | }; 153 | /* End PBXNativeTarget section */ 154 | 155 | /* Begin PBXProject section */ 156 | 97C146E61CF9000F007C117D /* Project object */ = { 157 | isa = PBXProject; 158 | attributes = { 159 | LastUpgradeCheck = 0910; 160 | ORGANIZATIONNAME = "The Chromium Authors"; 161 | TargetAttributes = { 162 | 97C146ED1CF9000F007C117D = { 163 | CreatedOnToolsVersion = 7.3.1; 164 | }; 165 | }; 166 | }; 167 | buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; 168 | compatibilityVersion = "Xcode 3.2"; 169 | developmentRegion = English; 170 | hasScannedForEncodings = 0; 171 | knownRegions = ( 172 | en, 173 | Base, 174 | ); 175 | mainGroup = 97C146E51CF9000F007C117D; 176 | productRefGroup = 97C146EF1CF9000F007C117D /* Products */; 177 | projectDirPath = ""; 178 | projectRoot = ""; 179 | targets = ( 180 | 97C146ED1CF9000F007C117D /* Runner */, 181 | ); 182 | }; 183 | /* End PBXProject section */ 184 | 185 | /* Begin PBXResourcesBuildPhase section */ 186 | 97C146EC1CF9000F007C117D /* Resources */ = { 187 | isa = PBXResourcesBuildPhase; 188 | buildActionMask = 2147483647; 189 | files = ( 190 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, 191 | 9740EEB51CF90195004384FC /* Generated.xcconfig in Resources */, 192 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, 193 | 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */, 194 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, 195 | 2D5378261FAA1A9400D5DBA9 /* flutter_assets in Resources */, 196 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, 197 | ); 198 | runOnlyForDeploymentPostprocessing = 0; 199 | }; 200 | /* End PBXResourcesBuildPhase section */ 201 | 202 | /* Begin PBXShellScriptBuildPhase section */ 203 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { 204 | isa = PBXShellScriptBuildPhase; 205 | buildActionMask = 2147483647; 206 | files = ( 207 | ); 208 | inputPaths = ( 209 | ); 210 | name = "Thin Binary"; 211 | outputPaths = ( 212 | ); 213 | runOnlyForDeploymentPostprocessing = 0; 214 | shellPath = /bin/sh; 215 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" thin"; 216 | }; 217 | 9740EEB61CF901F6004384FC /* Run Script */ = { 218 | isa = PBXShellScriptBuildPhase; 219 | buildActionMask = 2147483647; 220 | files = ( 221 | ); 222 | inputPaths = ( 223 | ); 224 | name = "Run Script"; 225 | outputPaths = ( 226 | ); 227 | runOnlyForDeploymentPostprocessing = 0; 228 | shellPath = /bin/sh; 229 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; 230 | }; 231 | /* End PBXShellScriptBuildPhase section */ 232 | 233 | /* Begin PBXSourcesBuildPhase section */ 234 | 97C146EA1CF9000F007C117D /* Sources */ = { 235 | isa = PBXSourcesBuildPhase; 236 | buildActionMask = 2147483647; 237 | files = ( 238 | 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */, 239 | 97C146F31CF9000F007C117D /* main.m in Sources */, 240 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, 241 | ); 242 | runOnlyForDeploymentPostprocessing = 0; 243 | }; 244 | /* End PBXSourcesBuildPhase section */ 245 | 246 | /* Begin PBXVariantGroup section */ 247 | 97C146FA1CF9000F007C117D /* Main.storyboard */ = { 248 | isa = PBXVariantGroup; 249 | children = ( 250 | 97C146FB1CF9000F007C117D /* Base */, 251 | ); 252 | name = Main.storyboard; 253 | sourceTree = ""; 254 | }; 255 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { 256 | isa = PBXVariantGroup; 257 | children = ( 258 | 97C147001CF9000F007C117D /* Base */, 259 | ); 260 | name = LaunchScreen.storyboard; 261 | sourceTree = ""; 262 | }; 263 | /* End PBXVariantGroup section */ 264 | 265 | /* Begin XCBuildConfiguration section */ 266 | 97C147031CF9000F007C117D /* Debug */ = { 267 | isa = XCBuildConfiguration; 268 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; 269 | buildSettings = { 270 | ALWAYS_SEARCH_USER_PATHS = NO; 271 | CLANG_ANALYZER_NONNULL = YES; 272 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 273 | CLANG_CXX_LIBRARY = "libc++"; 274 | CLANG_ENABLE_MODULES = YES; 275 | CLANG_ENABLE_OBJC_ARC = YES; 276 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 277 | CLANG_WARN_BOOL_CONVERSION = YES; 278 | CLANG_WARN_COMMA = YES; 279 | CLANG_WARN_CONSTANT_CONVERSION = YES; 280 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 281 | CLANG_WARN_EMPTY_BODY = YES; 282 | CLANG_WARN_ENUM_CONVERSION = YES; 283 | CLANG_WARN_INFINITE_RECURSION = YES; 284 | CLANG_WARN_INT_CONVERSION = YES; 285 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 286 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 287 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 288 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 289 | CLANG_WARN_STRICT_PROTOTYPES = YES; 290 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 291 | CLANG_WARN_UNREACHABLE_CODE = YES; 292 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 293 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 294 | COPY_PHASE_STRIP = NO; 295 | DEBUG_INFORMATION_FORMAT = dwarf; 296 | ENABLE_STRICT_OBJC_MSGSEND = YES; 297 | ENABLE_TESTABILITY = YES; 298 | GCC_C_LANGUAGE_STANDARD = gnu99; 299 | GCC_DYNAMIC_NO_PIC = NO; 300 | GCC_NO_COMMON_BLOCKS = YES; 301 | GCC_OPTIMIZATION_LEVEL = 0; 302 | GCC_PREPROCESSOR_DEFINITIONS = ( 303 | "DEBUG=1", 304 | "$(inherited)", 305 | ); 306 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 307 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 308 | GCC_WARN_UNDECLARED_SELECTOR = YES; 309 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 310 | GCC_WARN_UNUSED_FUNCTION = YES; 311 | GCC_WARN_UNUSED_VARIABLE = YES; 312 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 313 | MTL_ENABLE_DEBUG_INFO = YES; 314 | ONLY_ACTIVE_ARCH = YES; 315 | SDKROOT = iphoneos; 316 | TARGETED_DEVICE_FAMILY = "1,2"; 317 | }; 318 | name = Debug; 319 | }; 320 | 97C147041CF9000F007C117D /* Release */ = { 321 | isa = XCBuildConfiguration; 322 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 323 | buildSettings = { 324 | ALWAYS_SEARCH_USER_PATHS = NO; 325 | CLANG_ANALYZER_NONNULL = YES; 326 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 327 | CLANG_CXX_LIBRARY = "libc++"; 328 | CLANG_ENABLE_MODULES = YES; 329 | CLANG_ENABLE_OBJC_ARC = YES; 330 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 331 | CLANG_WARN_BOOL_CONVERSION = YES; 332 | CLANG_WARN_COMMA = YES; 333 | CLANG_WARN_CONSTANT_CONVERSION = YES; 334 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 335 | CLANG_WARN_EMPTY_BODY = YES; 336 | CLANG_WARN_ENUM_CONVERSION = YES; 337 | CLANG_WARN_INFINITE_RECURSION = YES; 338 | CLANG_WARN_INT_CONVERSION = YES; 339 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 340 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 341 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 342 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 343 | CLANG_WARN_STRICT_PROTOTYPES = YES; 344 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 345 | CLANG_WARN_UNREACHABLE_CODE = YES; 346 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 347 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 348 | COPY_PHASE_STRIP = NO; 349 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 350 | ENABLE_NS_ASSERTIONS = NO; 351 | ENABLE_STRICT_OBJC_MSGSEND = YES; 352 | GCC_C_LANGUAGE_STANDARD = gnu99; 353 | GCC_NO_COMMON_BLOCKS = YES; 354 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 355 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 356 | GCC_WARN_UNDECLARED_SELECTOR = YES; 357 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 358 | GCC_WARN_UNUSED_FUNCTION = YES; 359 | GCC_WARN_UNUSED_VARIABLE = YES; 360 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 361 | MTL_ENABLE_DEBUG_INFO = NO; 362 | SDKROOT = iphoneos; 363 | TARGETED_DEVICE_FAMILY = "1,2"; 364 | VALIDATE_PRODUCT = YES; 365 | }; 366 | name = Release; 367 | }; 368 | 97C147061CF9000F007C117D /* Debug */ = { 369 | isa = XCBuildConfiguration; 370 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; 371 | buildSettings = { 372 | ARCHS = arm64; 373 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 374 | CURRENT_PROJECT_VERSION = 1; 375 | ENABLE_BITCODE = NO; 376 | FRAMEWORK_SEARCH_PATHS = ( 377 | "$(inherited)", 378 | "$(PROJECT_DIR)/Flutter", 379 | ); 380 | INFOPLIST_FILE = Runner/Info.plist; 381 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 382 | LIBRARY_SEARCH_PATHS = ( 383 | "$(inherited)", 384 | "$(PROJECT_DIR)/Flutter", 385 | ); 386 | PRODUCT_BUNDLE_IDENTIFIER = com.burhanrashid52.sampleFlutterApp; 387 | PRODUCT_NAME = "$(TARGET_NAME)"; 388 | VERSIONING_SYSTEM = "apple-generic"; 389 | }; 390 | name = Debug; 391 | }; 392 | 97C147071CF9000F007C117D /* Release */ = { 393 | isa = XCBuildConfiguration; 394 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 395 | buildSettings = { 396 | ARCHS = arm64; 397 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 398 | CURRENT_PROJECT_VERSION = 1; 399 | ENABLE_BITCODE = NO; 400 | FRAMEWORK_SEARCH_PATHS = ( 401 | "$(inherited)", 402 | "$(PROJECT_DIR)/Flutter", 403 | ); 404 | INFOPLIST_FILE = Runner/Info.plist; 405 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 406 | LIBRARY_SEARCH_PATHS = ( 407 | "$(inherited)", 408 | "$(PROJECT_DIR)/Flutter", 409 | ); 410 | PRODUCT_BUNDLE_IDENTIFIER = com.burhanrashid52.sampleFlutterApp; 411 | PRODUCT_NAME = "$(TARGET_NAME)"; 412 | VERSIONING_SYSTEM = "apple-generic"; 413 | }; 414 | name = Release; 415 | }; 416 | /* End XCBuildConfiguration section */ 417 | 418 | /* Begin XCConfigurationList section */ 419 | 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { 420 | isa = XCConfigurationList; 421 | buildConfigurations = ( 422 | 97C147031CF9000F007C117D /* Debug */, 423 | 97C147041CF9000F007C117D /* Release */, 424 | ); 425 | defaultConfigurationIsVisible = 0; 426 | defaultConfigurationName = Release; 427 | }; 428 | 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { 429 | isa = XCConfigurationList; 430 | buildConfigurations = ( 431 | 97C147061CF9000F007C117D /* Debug */, 432 | 97C147071CF9000F007C117D /* Release */, 433 | ); 434 | defaultConfigurationIsVisible = 0; 435 | defaultConfigurationName = Release; 436 | }; 437 | /* End XCConfigurationList section */ 438 | }; 439 | rootObject = 97C146E61CF9000F007C117D /* Project object */; 440 | } 441 | --------------------------------------------------------------------------------