From 93f83e53da954c15c042f97078024c5e22549d78 Mon Sep 17 00:00:00 2001 From: Pawan Kumar Date: Sun, 17 Jun 2018 10:35:13 +0530 Subject: [PATCH] code updated --- flutfire.iml | 12 + ios/.symlinks/flutter | 1 + ios/.symlinks/plugins/cloud_firestore | 1 + ios/.symlinks/plugins/firebase_admob | 1 + ios/.symlinks/plugins/firebase_analytics | 1 + ios/.symlinks/plugins/firebase_auth | 1 + ios/.symlinks/plugins/google_sign_in | 1 + ios/Podfile | 13 +- ios/Podfile.lock | 246 +++++++++------- ios/Runner.xcodeproj/project.pbxproj | 32 +- lib/CrudApp/crud_sample.dart | 2 +- lib/QuotesApp/backdrop.dart | 354 +++++++++++++++++++++++ lib/QuotesApp/quotes.dart | 35 +++ lib/WallpaperApp/wall_screen.dart | 2 +- lib/main.dart | 6 +- pubspec.lock | 108 +++---- 16 files changed, 638 insertions(+), 178 deletions(-) create mode 120000 ios/.symlinks/flutter create mode 120000 ios/.symlinks/plugins/cloud_firestore create mode 120000 ios/.symlinks/plugins/firebase_admob create mode 120000 ios/.symlinks/plugins/firebase_analytics create mode 120000 ios/.symlinks/plugins/firebase_auth create mode 120000 ios/.symlinks/plugins/google_sign_in create mode 100644 lib/QuotesApp/backdrop.dart create mode 100644 lib/QuotesApp/quotes.dart diff --git a/flutfire.iml b/flutfire.iml index c64a2b6..ed778ba 100644 --- a/flutfire.iml +++ b/flutfire.iml @@ -15,6 +15,18 @@ + + + + + + + + + + + + diff --git a/ios/.symlinks/flutter b/ios/.symlinks/flutter new file mode 120000 index 0000000..79b3cce --- /dev/null +++ b/ios/.symlinks/flutter @@ -0,0 +1 @@ +/Users/pawankumar/Desktop/flutter/flutter/bin/cache/artifacts/engine \ No newline at end of file diff --git a/ios/.symlinks/plugins/cloud_firestore b/ios/.symlinks/plugins/cloud_firestore new file mode 120000 index 0000000..85ecd35 --- /dev/null +++ b/ios/.symlinks/plugins/cloud_firestore @@ -0,0 +1 @@ +/Users/pawankumar/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.4.0 \ No newline at end of file diff --git a/ios/.symlinks/plugins/firebase_admob b/ios/.symlinks/plugins/firebase_admob new file mode 120000 index 0000000..1879d14 --- /dev/null +++ b/ios/.symlinks/plugins/firebase_admob @@ -0,0 +1 @@ +/Users/pawankumar/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.5.2 \ No newline at end of file diff --git a/ios/.symlinks/plugins/firebase_analytics b/ios/.symlinks/plugins/firebase_analytics new file mode 120000 index 0000000..8ffefe9 --- /dev/null +++ b/ios/.symlinks/plugins/firebase_analytics @@ -0,0 +1 @@ +/Users/pawankumar/.pub-cache/hosted/pub.dartlang.org/firebase_analytics-0.2.3 \ No newline at end of file diff --git a/ios/.symlinks/plugins/firebase_auth b/ios/.symlinks/plugins/firebase_auth new file mode 120000 index 0000000..0479435 --- /dev/null +++ b/ios/.symlinks/plugins/firebase_auth @@ -0,0 +1 @@ +/Users/pawankumar/.pub-cache/hosted/pub.dartlang.org/firebase_auth-0.5.3 \ No newline at end of file diff --git a/ios/.symlinks/plugins/google_sign_in b/ios/.symlinks/plugins/google_sign_in new file mode 120000 index 0000000..7f6af15 --- /dev/null +++ b/ios/.symlinks/plugins/google_sign_in @@ -0,0 +1 @@ +/Users/pawankumar/.pub-cache/hosted/pub.dartlang.org/google_sign_in-3.0.0 \ No newline at end of file diff --git a/ios/Podfile b/ios/Podfile index cdaa7b5..7c6cb6f 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -29,9 +29,8 @@ end target 'Runner' do # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock # referring to absolute paths on developers' machines. - system('rm -rf Pods/.symlinks') - system('mkdir -p Pods/.symlinks/flutter') - system('mkdir -p Pods/.symlinks/plugins') + system('rm -rf .symlinks') + system('mkdir -p .symlinks/plugins') # Flutter Pods generated_xcode_build_settings = parse_KV_file('./Flutter/Generated.xcconfig') @@ -40,16 +39,16 @@ target 'Runner' do end generated_xcode_build_settings.map { |p| if p[:name] == 'FLUTTER_FRAMEWORK_DIR' - symlink = File.join('Pods', '.symlinks', 'flutter', File.basename(p[:path])) - File.symlink(p[:path], symlink) - pod 'Flutter', :path => symlink + symlink = File.join('.symlinks', 'flutter') + File.symlink(File.dirname(p[:path]), symlink) + pod 'Flutter', :path => File.join(symlink, File.basename(p[:path])) end } # Plugin Pods plugin_pods = parse_KV_file('../.flutter-plugins') plugin_pods.map { |p| - symlink = File.join('Pods', '.symlinks', 'plugins', File.basename(p[:path])) + symlink = File.join('.symlinks', 'plugins', p[:name]) File.symlink(p[:path], symlink) pod p[:name], :path => File.join(symlink, 'ios') } diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 8611cec..123abea 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1,100 +1,116 @@ PODS: - - BoringSSL (9.1): - - BoringSSL/Implementation (= 9.1) - - BoringSSL/Interface (= 9.1) - - BoringSSL/Implementation (9.1): - - BoringSSL/Interface (= 9.1) - - BoringSSL/Interface (9.1) + - BoringSSL (10.0.2): + - BoringSSL/Implementation (= 10.0.2) + - BoringSSL/Interface (= 10.0.2) + - BoringSSL/Implementation (10.0.2): + - BoringSSL/Interface (= 10.0.2) + - BoringSSL/Interface (10.0.2) - cloud_firestore (0.0.1): - Firebase/Auth - Firebase/Core - Firebase/Database - Firebase/Firestore - Flutter - - Firebase/Auth (4.7.0): + - Firebase/AdMob (5.0.1): - Firebase/Core - - FirebaseAuth (= 4.4.0) - - Firebase/Core (4.7.0): - - FirebaseAnalytics (= 4.0.5) - - FirebaseCore (= 4.0.12) - - Firebase/Database (4.7.0): + - Google-Mobile-Ads-SDK (= 7.30.0) + - Firebase/Auth (5.0.1): + - Firebase/CoreOnly + - FirebaseAuth (= 5.0.0) + - Firebase/Core (5.0.1): + - Firebase/CoreOnly + - FirebaseAnalytics (= 5.0.0) + - Firebase/CoreOnly (5.0.1): + - FirebaseCore (= 5.0.1) + - Firebase/Database (5.0.1): + - Firebase/CoreOnly + - FirebaseDatabase (= 5.0.0) + - Firebase/Firestore (5.0.1): + - Firebase/CoreOnly + - FirebaseFirestore (= 0.12.1) + - firebase_admob (0.0.1): + - Firebase/AdMob - Firebase/Core - - FirebaseDatabase (= 4.1.2) - - Firebase/Firestore (4.7.0): + - Flutter + - firebase_analytics (0.0.1): - Firebase/Core - - FirebaseFirestore (= 0.9.3) + - Flutter - firebase_auth (0.0.1): - Firebase/Auth - Firebase/Core - Flutter - - FirebaseAnalytics (4.0.5): - - FirebaseCore (~> 4.0) - - FirebaseInstanceID (~> 2.0) - - GoogleToolboxForMac/NSData+zlib (~> 2.1) + - FirebaseAnalytics (5.0.0): + - FirebaseCore (~> 5.0) + - FirebaseInstanceID (~> 3.0) + - "GoogleToolboxForMac/NSData+zlib (~> 2.1)" - nanopb (~> 0.3) - - FirebaseAuth (4.4.0): - - FirebaseAnalytics (~> 4.0) - - GoogleToolboxForMac/NSDictionary+URLArguments (~> 2.1) + - FirebaseAuth (5.0.0): + - FirebaseCore (~> 5.0) - GTMSessionFetcher/Core (~> 1.1) - - FirebaseCore (4.0.12): - - GoogleToolboxForMac/NSData+zlib (~> 2.1) - - FirebaseDatabase (4.1.2): - - FirebaseAnalytics (~> 4.0) - - FirebaseCore (~> 4.0) + - FirebaseCore (5.0.1): + - "GoogleToolboxForMac/NSData+zlib (~> 2.1)" + - FirebaseDatabase (5.0.0): + - FirebaseCore (~> 5.0) + - leveldb-library (~> 1.18) + - FirebaseFirestore (0.12.1): + - FirebaseCore (~> 5.0) + - FirebaseFirestore/abseil-cpp (= 0.12.1) + - gRPC-ProtoRPC (~> 1.0) - leveldb-library (~> 1.18) - - FirebaseFirestore (0.9.3): - - FirebaseAnalytics (~> 4.0) - - FirebaseAuth (~> 4.4) - - FirebaseCore (~> 4.0) + - Protobuf (~> 3.1) + - FirebaseFirestore/abseil-cpp (0.12.1): + - FirebaseCore (~> 5.0) - gRPC-ProtoRPC (~> 1.0) - leveldb-library (~> 1.18) - Protobuf (~> 3.1) - - FirebaseInstanceID (2.0.7) + - FirebaseInstanceID (3.0.0): + - FirebaseCore (~> 5.0) - Flutter (1.0.0) + - Google-Mobile-Ads-SDK (7.30.0) - google_sign_in (0.0.1): - Flutter - GoogleSignIn (~> 4.0) - - GoogleSignIn (4.1.1): - - GoogleToolboxForMac/NSDictionary+URLArguments (~> 2.1) - - GoogleToolboxForMac/NSString+URLArguments (~> 2.1) + - GoogleSignIn (4.1.2): + - "GoogleToolboxForMac/NSDictionary+URLArguments (~> 2.1)" + - "GoogleToolboxForMac/NSString+URLArguments (~> 2.1)" - GTMOAuth2 (~> 1.0) - GTMSessionFetcher/Core (~> 1.1) - - GoogleToolboxForMac/DebugUtils (2.1.3): - - GoogleToolboxForMac/Defines (= 2.1.3) - - GoogleToolboxForMac/Defines (2.1.3) - - GoogleToolboxForMac/NSData+zlib (2.1.3): - - GoogleToolboxForMac/Defines (= 2.1.3) - - GoogleToolboxForMac/NSDictionary+URLArguments (2.1.3): - - GoogleToolboxForMac/DebugUtils (= 2.1.3) - - GoogleToolboxForMac/Defines (= 2.1.3) - - GoogleToolboxForMac/NSString+URLArguments (= 2.1.3) - - GoogleToolboxForMac/NSString+URLArguments (2.1.3) - - gRPC (1.7.1): - - gRPC-RxLibrary (= 1.7.1) - - gRPC/Main (= 1.7.1) - - gRPC-Core (1.7.1): - - gRPC-Core/Implementation (= 1.7.1) - - gRPC-Core/Interface (= 1.7.1) - - gRPC-Core/Implementation (1.7.1): - - BoringSSL (~> 9.0) - - gRPC-Core/Interface (= 1.7.1) + - GoogleToolboxForMac/DebugUtils (2.1.4): + - GoogleToolboxForMac/Defines (= 2.1.4) + - GoogleToolboxForMac/Defines (2.1.4) + - "GoogleToolboxForMac/NSData+zlib (2.1.4)": + - GoogleToolboxForMac/Defines (= 2.1.4) + - "GoogleToolboxForMac/NSDictionary+URLArguments (2.1.4)": + - GoogleToolboxForMac/DebugUtils (= 2.1.4) + - GoogleToolboxForMac/Defines (= 2.1.4) + - "GoogleToolboxForMac/NSString+URLArguments (= 2.1.4)" + - "GoogleToolboxForMac/NSString+URLArguments (2.1.4)" + - gRPC (1.12.0): + - gRPC-RxLibrary (= 1.12.0) + - gRPC/Main (= 1.12.0) + - gRPC-Core (1.12.0): + - gRPC-Core/Implementation (= 1.12.0) + - gRPC-Core/Interface (= 1.12.0) + - gRPC-Core/Implementation (1.12.0): + - BoringSSL (~> 10.0) + - gRPC-Core/Interface (= 1.12.0) - nanopb (~> 0.3) - - gRPC-Core/Interface (1.7.1) - - gRPC-ProtoRPC (1.7.1): - - gRPC (= 1.7.1) - - gRPC-RxLibrary (= 1.7.1) + - gRPC-Core/Interface (1.12.0) + - gRPC-ProtoRPC (1.12.0): + - gRPC (= 1.12.0) + - gRPC-RxLibrary (= 1.12.0) - Protobuf (~> 3.0) - - gRPC-RxLibrary (1.7.1) - - gRPC/Main (1.7.1): - - gRPC-Core (= 1.7.1) - - gRPC-RxLibrary (= 1.7.1) - - GTMOAuth2 (1.1.5): + - gRPC-RxLibrary (1.12.0) + - gRPC/Main (1.12.0): + - gRPC-Core (= 1.12.0) + - gRPC-RxLibrary (= 1.12.0) + - GTMOAuth2 (1.1.6): - GTMSessionFetcher (~> 1.1) - - GTMSessionFetcher (1.1.12): - - GTMSessionFetcher/Full (= 1.1.12) - - GTMSessionFetcher/Core (1.1.12) - - GTMSessionFetcher/Full (1.1.12): - - GTMSessionFetcher/Core (= 1.1.12) + - GTMSessionFetcher (1.1.15): + - GTMSessionFetcher/Full (= 1.1.15) + - GTMSessionFetcher/Core (1.1.15) + - GTMSessionFetcher/Full (1.1.15): + - GTMSessionFetcher/Core (= 1.1.15) - leveldb-library (1.20) - nanopb (0.3.8): - nanopb/decode (= 0.3.8) @@ -104,46 +120,78 @@ PODS: - Protobuf (3.5.0) DEPENDENCIES: - - cloud_firestore (from `Pods/.symlinks/plugins/cloud_firestore-0.4.0/ios`) - - firebase_auth (from `Pods/.symlinks/plugins/firebase_auth-0.5.3/ios`) - - Flutter (from `Pods/.symlinks/flutter/ios`) - - google_sign_in (from `Pods/.symlinks/plugins/google_sign_in-3.0.0/ios`) + - cloud_firestore (from `.symlinks/plugins/cloud_firestore/ios`) + - firebase_admob (from `.symlinks/plugins/firebase_admob/ios`) + - firebase_analytics (from `.symlinks/plugins/firebase_analytics/ios`) + - firebase_auth (from `.symlinks/plugins/firebase_auth/ios`) + - Flutter (from `.symlinks/flutter/ios`) + - google_sign_in (from `.symlinks/plugins/google_sign_in/ios`) + +SPEC REPOS: + https://github.com/cocoapods/specs.git: + - BoringSSL + - Firebase + - FirebaseAnalytics + - FirebaseAuth + - FirebaseCore + - FirebaseDatabase + - FirebaseFirestore + - FirebaseInstanceID + - Google-Mobile-Ads-SDK + - GoogleSignIn + - GoogleToolboxForMac + - gRPC + - gRPC-Core + - gRPC-ProtoRPC + - gRPC-RxLibrary + - GTMOAuth2 + - GTMSessionFetcher + - leveldb-library + - nanopb + - Protobuf EXTERNAL SOURCES: cloud_firestore: - :path: Pods/.symlinks/plugins/cloud_firestore-0.4.0/ios + :path: ".symlinks/plugins/cloud_firestore/ios" + firebase_admob: + :path: ".symlinks/plugins/firebase_admob/ios" + firebase_analytics: + :path: ".symlinks/plugins/firebase_analytics/ios" firebase_auth: - :path: Pods/.symlinks/plugins/firebase_auth-0.5.3/ios + :path: ".symlinks/plugins/firebase_auth/ios" Flutter: - :path: Pods/.symlinks/flutter/ios + :path: ".symlinks/flutter/ios" google_sign_in: - :path: Pods/.symlinks/plugins/google_sign_in-3.0.0/ios + :path: ".symlinks/plugins/google_sign_in/ios" SPEC CHECKSUMS: - BoringSSL: 84318770d120503ab1a6aaf1df777c5ca053697e - cloud_firestore: 722bc698fd3ef1758b7c2523cdc51c93ce89cf43 - Firebase: dbfb98ccec2dcfcd21ab9cc1b4981a3f3c8c5e26 - firebase_auth: e160b55a14f5d776ca54163015eec4c43111a3d5 - FirebaseAnalytics: 5b02a63ead2c3f0259cfc7f15e053e440587ecf8 - FirebaseAuth: cdeee95b528958dbb7dcf220ad0fb804d3a284b0 - FirebaseCore: 6cf108b63997bc08c04a1ffa55a3ac0d71a59ffc - FirebaseDatabase: 18ecb23e15c7f58bb0c4527e9cace06897cc40ca - FirebaseFirestore: 0b62fdbe420f2f88b6b2037ba4d92bbd4525e04a - FirebaseInstanceID: 148c25c986c8699e67304b114e365713dce467f2 - Flutter: 58dd7d1b27887414a370fcccb9e645c08ffd7a6a - google_sign_in: a747d969c4b8ee5314f69db37f5adee1d7528ed4 - GoogleSignIn: 3fdaa34a2ba04dbd7a25d7db39aecb0da98d5bdc - GoogleToolboxForMac: 2501e2ad72a52eb3dfe7bd9aee7dad11b858bd20 - gRPC: b56decfd0094854d2ccfe80c8fb767237dace3be - gRPC-Core: 95c4968ae43d29219226f22b656d9f625904281e - gRPC-ProtoRPC: b7259f51cbc19b77c7a38d96f52a00c3a4ea1637 - gRPC-RxLibrary: 4f46343e74e74a7ee8373ffeeaf772dfb330cbd7 - GTMOAuth2: be83fd28d63ae3087e7d351b1f39c1a7e24ab6e7 - GTMSessionFetcher: ebaa1f79a5366922c1735f1566901f50beba23b7 - leveldb-library: 4f9eedf84ab46b4fa3b7893bf30714b2a1a74022 + BoringSSL: 60dd24df4af296bf41d78e5841dbb95d75f88c0d + cloud_firestore: 00886d0b271577dfadd33be97d6bb6095f49499d + Firebase: d6861c2059d8c32d1e6dd8932e22ada346d90a3a + firebase_admob: b8cc46113ddf88a62fec340e9446607a5061a872 + firebase_analytics: ad15e54404e21983408c8b0c24a9d11247be7f33 + firebase_auth: 499d5bfb249606a276f6bddf292a3b2d44139f75 + FirebaseAnalytics: 19812b49fa5f283dd6b23edf8a14b5d477029ab8 + FirebaseAuth: acbeef02fe7c3a26624e309849f3fe30c84115af + FirebaseCore: cafc814b2d84fc8733f09e653041cc2165332ad7 + FirebaseDatabase: 697eb53e5b4fe7cd4fa8756c1f82a9fca011345f + FirebaseFirestore: f686b8e83f3cf8bbc37db6e98e01029a14f01f55 + FirebaseInstanceID: 83e0040351565df711a5db3d8ebe5ea21aca998a + Flutter: 9d0fac939486c9aba2809b7982dfdbb47a7b0296 + Google-Mobile-Ads-SDK: 7404f68120ae8682afeb5af001fbf4aad731c78e + google_sign_in: 64523e9b42c475b01b726ff87e450425ea6d15bc + GoogleSignIn: d9ef55b10f0aa401a5de2747f59b725e4b9732ac + GoogleToolboxForMac: 91c824d21e85b31c2aae9bb011c5027c9b4e738f + gRPC: 9362451032695e2dfb7bafcd3740e3a27939e4ff + gRPC-Core: 9696b220565b283e021cf2722d473a4a74b7622a + gRPC-ProtoRPC: a1bd56fb1991a8dae4581250d7259eddabb66779 + gRPC-RxLibrary: 1ed5314e8b38cd6e55c9bfa048387136ae925ce9 + GTMOAuth2: c77fe325e4acd453837e72d91e3b5f13116857b2 + GTMSessionFetcher: 5fa5b80fd20e439ef5f545fb2cb3ca6c6714caa2 + leveldb-library: 08cba283675b7ed2d99629a4bc5fd052cd2bb6a5 nanopb: 5601e6bca2dbf1ed831b519092ec110f66982ca3 Protobuf: 8a9838fba8dae3389230e1b7f8c104aa32389c03 -PODFILE CHECKSUM: 0420ab312a523ae0eecfb1fc19ea51dd82cc17c7 +PODFILE CHECKSUM: 1e5af4103afd21ca5ead147d7b81d06f494f51a2 -COCOAPODS: 1.3.1 +COCOAPODS: 1.5.2 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 52fe5ef..e4cff26 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -163,8 +163,8 @@ 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - C584DB1F207338C837CA2261 /* [CP] Embed Pods Frameworks */, DA467F5E770BDC3B5A38EAE0 /* [CP] Copy Pods Resources */, + E91C2B40F0509EE372E330A5 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -272,42 +272,44 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - C584DB1F207338C837CA2261 /* [CP] Embed Pods Frameworks */ = { + DA467F5E770BDC3B5A38EAE0 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( - "${SRCROOT}/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh", - "${PODS_ROOT}/.symlinks/flutter/ios/Flutter.framework", + "${SRCROOT}/Pods/Target Support Files/Pods-Runner/Pods-Runner-resources.sh", + "${PODS_ROOT}/GTMOAuth2/Source/Touch/GTMOAuth2ViewTouch.xib", + "${PODS_ROOT}/GoogleSignIn/Resources/GoogleSignIn.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/gRPC/gRPCCertificates.bundle", ); - name = "[CP] Embed Pods Frameworks"; + name = "[CP] Copy Pods Resources"; outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GTMOAuth2ViewTouch.nib", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GoogleSignIn.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/gRPCCertificates.bundle", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; showEnvVarsInLog = 0; }; - DA467F5E770BDC3B5A38EAE0 /* [CP] Copy Pods Resources */ = { + E91C2B40F0509EE372E330A5 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( - "${SRCROOT}/Pods/Target Support Files/Pods-Runner/Pods-Runner-resources.sh", - "${PODS_ROOT}/GTMOAuth2/Source/Touch/GTMOAuth2ViewTouch.xib", - "${PODS_ROOT}/GoogleSignIn/Resources/GoogleSignIn.bundle", - "$PODS_CONFIGURATION_BUILD_DIR/gRPC/gRPCCertificates.bundle", + "${SRCROOT}/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh", + "${PODS_ROOT}/../.symlinks/flutter/ios/Flutter.framework", ); - name = "[CP] Copy Pods Resources"; + name = "[CP] Embed Pods Frameworks"; outputPaths = ( - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ diff --git a/lib/CrudApp/crud_sample.dart b/lib/CrudApp/crud_sample.dart index b174a49..1ed1cd1 100644 --- a/lib/CrudApp/crud_sample.dart +++ b/lib/CrudApp/crud_sample.dart @@ -78,7 +78,7 @@ class CrudSampleState extends State { void initState() { // TODO: implement initState super.initState(); - subscription = documentReference.snapshots.listen((datasnapshot) { + subscription = documentReference.snapshots().listen((datasnapshot) { if (datasnapshot.exists) { setState(() { myText = datasnapshot.data['desc']; diff --git a/lib/QuotesApp/backdrop.dart b/lib/QuotesApp/backdrop.dart new file mode 100644 index 0000000..cad1b55 --- /dev/null +++ b/lib/QuotesApp/backdrop.dart @@ -0,0 +1,354 @@ +import 'dart:math' as math; + +import 'package:flutter/rendering.dart'; +import 'package:flutter/material.dart'; + +const double _kFrontHeadingHeight = 32.0; // front layer beveled rectangle +const double _kFrontClosedHeight = 92.0; // front layer height when closed +const double _kBackAppBarHeight = 56.0; // back layer (options) appbar height + +// The size of the front layer heading's left and right beveled corners. +final Tween _kFrontHeadingBevelRadius = new BorderRadiusTween( + begin: const BorderRadius.only( + topLeft: const Radius.circular(12.0), + topRight: const Radius.circular(12.0), + ), + end: const BorderRadius.only( + topLeft: const Radius.circular(_kFrontHeadingHeight), + topRight: const Radius.circular(_kFrontHeadingHeight), + ), +); + +class _TappableWhileStatusIs extends StatefulWidget { + const _TappableWhileStatusIs( + this.status, { + Key key, + this.controller, + this.child, + }) : super(key: key); + + final AnimationController controller; + final AnimationStatus status; + final Widget child; + + @override + _TappableWhileStatusIsState createState() => + new _TappableWhileStatusIsState(); +} + +class _TappableWhileStatusIsState extends State<_TappableWhileStatusIs> { + bool _active; + + @override + void initState() { + super.initState(); + widget.controller.addStatusListener(_handleStatusChange); + _active = widget.controller.status == widget.status; + } + + @override + void dispose() { + widget.controller.removeStatusListener(_handleStatusChange); + super.dispose(); + } + + void _handleStatusChange(AnimationStatus status) { + final bool value = widget.controller.status == widget.status; + if (_active != value) { + setState(() { + _active = value; + }); + } + } + + @override + Widget build(BuildContext context) { + return new AbsorbPointer( + absorbing: !_active, + // Redundant. TODO(xster): remove after https://github.com/flutter/flutter/issues/17179. + child: new IgnorePointer(ignoring: !_active, child: widget.child), + ); + } +} + +class _CrossFadeTransition extends AnimatedWidget { + const _CrossFadeTransition({ + Key key, + this.alignment: Alignment.center, + Animation progress, + this.child0, + this.child1, + }) : super(key: key, listenable: progress); + + final AlignmentGeometry alignment; + final Widget child0; + final Widget child1; + + @override + Widget build(BuildContext context) { + final Animation progress = listenable; + + final double opacity1 = new CurvedAnimation( + parent: new ReverseAnimation(progress), + curve: const Interval(0.5, 1.0), + ).value; + + final double opacity2 = new CurvedAnimation( + parent: progress, + curve: const Interval(0.5, 1.0), + ).value; + + return new Stack( + alignment: alignment, + children: [ + new Opacity( + opacity: opacity1, + child: new Semantics( + scopesRoute: true, + explicitChildNodes: true, + child: child1, + ), + ), + new Opacity( + opacity: opacity2, + child: new Semantics( + scopesRoute: true, + explicitChildNodes: true, + child: child0, + ), + ), + ], + ); + } +} + +class _BackAppBar extends StatelessWidget { + const _BackAppBar({ + Key key, + this.leading: const SizedBox(width: 56.0), + @required this.title, + this.trailing, + }) : assert(leading != null), + assert(title != null), + super(key: key); + + final Widget leading; + final Widget title; + final Widget trailing; + + @override + Widget build(BuildContext context) { + final List children = [ + new Container( + alignment: Alignment.center, + width: 56.0, + child: leading, + ), + new Expanded( + child: title, + ), + ]; + + if (trailing != null) { + children.add( + new Container( + alignment: Alignment.center, + width: 56.0, + child: trailing, + ), + ); + } + + final ThemeData theme = Theme.of(context); + + return IconTheme.merge( + data: theme.primaryIconTheme, + child: new DefaultTextStyle( + style: theme.primaryTextTheme.title, + child: new SizedBox( + height: _kBackAppBarHeight, + child: new Row(children: children), + ), + ), + ); + } +} + +class Backdrop extends StatefulWidget { + const Backdrop({ + this.frontAction, + this.frontTitle, + this.frontHeading, + this.frontLayer, + this.backTitle, + this.backLayer, + }); + + final Widget frontAction; + final Widget frontTitle; + final Widget frontLayer; + final Widget frontHeading; + final Widget backTitle; + final Widget backLayer; + + @override + _BackdropState createState() => new _BackdropState(); +} + +class _BackdropState extends State + with SingleTickerProviderStateMixin { + final GlobalKey _backdropKey = new GlobalKey(debugLabel: 'Backdrop'); + AnimationController _controller; + Animation _frontOpacity; + + @override + void initState() { + super.initState(); + _controller = new AnimationController( + duration: const Duration(milliseconds: 300), + value: 1.0, + vsync: this, + ); + + _frontOpacity = new Tween(begin: 0.2, end: 1.0).animate( + new CurvedAnimation( + parent: _controller, + curve: const Interval(0.0, 0.4, curve: Curves.easeInOut), + ), + ); + } + + @override + void dispose() { + _controller.dispose(); + super.dispose(); + } + + double get _backdropHeight { + // Warning: this can be safely called from the event handlers but it may + // not be called at build time. + final RenderBox renderBox = _backdropKey.currentContext.findRenderObject(); + return math.max( + 0.0, renderBox.size.height - _kBackAppBarHeight - _kFrontClosedHeight); + } + + void _handleDragUpdate(DragUpdateDetails details) { + _controller.value -= + details.primaryDelta / (_backdropHeight ?? details.primaryDelta); + } + + void _handleDragEnd(DragEndDetails details) { + if (_controller.isAnimating || + _controller.status == AnimationStatus.completed) return; + + final double flingVelocity = + details.velocity.pixelsPerSecond.dy / _backdropHeight; + if (flingVelocity < 0.0) + _controller.fling(velocity: math.max(2.0, -flingVelocity)); + else if (flingVelocity > 0.0) + _controller.fling(velocity: math.min(-2.0, -flingVelocity)); + else + _controller.fling(velocity: _controller.value < 0.5 ? -2.0 : 2.0); + } + + void _toggleFrontLayer() { + final AnimationStatus status = _controller.status; + final bool isOpen = status == AnimationStatus.completed || + status == AnimationStatus.forward; + _controller.fling(velocity: isOpen ? -2.0 : 2.0); + } + + Widget _buildStack(BuildContext context, BoxConstraints constraints) { + final Animation frontRelativeRect = new RelativeRectTween( + begin: new RelativeRect.fromLTRB( + 0.0, constraints.biggest.height - _kFrontClosedHeight, 0.0, 0.0), + end: const RelativeRect.fromLTRB(0.0, _kBackAppBarHeight, 0.0, 0.0), + ).animate(_controller); + + return new Stack( + key: _backdropKey, + children: [ + new Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + // Back layer + new _BackAppBar( + leading: widget.frontAction, + title: new _CrossFadeTransition( + progress: _controller, + alignment: AlignmentDirectional.centerStart, + child0: + new Semantics(namesRoute: true, child: widget.frontTitle), + child1: + new Semantics(namesRoute: true, child: widget.backTitle), + ), + trailing: new IconButton( + onPressed: _toggleFrontLayer, + tooltip: 'Toggle options page', + icon: new AnimatedIcon( + icon: AnimatedIcons.close_menu, + progress: _controller, + ), + ), + ), + new Expanded( + child: new _TappableWhileStatusIs( + AnimationStatus.dismissed, + controller: _controller, + child: widget.backLayer, + ), + ), + ], + ), + // Front layer + new PositionedTransition( + rect: frontRelativeRect, + child: new AnimatedBuilder( + animation: _controller, + builder: (BuildContext context, Widget child) { + return new PhysicalShape( + elevation: 12.0, + color: Theme.of(context).canvasColor, + clipper: new ShapeBorderClipper( + shape: new BeveledRectangleBorder( + borderRadius: + _kFrontHeadingBevelRadius.lerp(_controller.value), + ), + ), + child: child, + ); + }, + child: new _TappableWhileStatusIs( + AnimationStatus.completed, + controller: _controller, + child: new FadeTransition( + opacity: _frontOpacity, + child: widget.frontLayer, + ), + ), + ), + ), + new PositionedTransition( + rect: frontRelativeRect, + child: new ExcludeSemantics( + child: new Container( + alignment: Alignment.topLeft, + child: new GestureDetector( + behavior: HitTestBehavior.opaque, + onTap: _toggleFrontLayer, + onVerticalDragUpdate: _handleDragUpdate, + onVerticalDragEnd: _handleDragEnd, + child: widget.frontHeading, + ), + ), + ), + ), + ], + ); + } + + @override + Widget build(BuildContext context) { + return new LayoutBuilder(builder: _buildStack); + } +} diff --git a/lib/QuotesApp/quotes.dart b/lib/QuotesApp/quotes.dart new file mode 100644 index 0000000..e96c49c --- /dev/null +++ b/lib/QuotesApp/quotes.dart @@ -0,0 +1,35 @@ +import 'package:flutter/material.dart'; + +class QuotesScreen extends StatefulWidget { + @override + _QuotesScreenState createState() => new _QuotesScreenState(); +} + +class _QuotesScreenState extends State { + double db = 0.0; + @override + Widget build(BuildContext context) { + return new Scaffold( + appBar: AppBar( + title: new Text("Quotes"), + ), + body: Container(), + floatingActionButton: new FloatingActionButton( + child: new Icon(Icons.extension), + isExtended: true, + onPressed: () => debugPrint('Clicked'), + notchMargin: 8.0, + ), + floatingActionButtonLocation: FloatingActionButtonLocation.centerFloat, + floatingActionButtonAnimator: FloatingActionButtonAnimator.scaling, + bottomNavigationBar: new BottomAppBar( + color: Colors.purple, + elevation: 5.0, + hasNotch: true, + child: new ButtonBar( + alignment: MainAxisAlignment.start, + children: [], + )), + ); + } +} diff --git a/lib/WallpaperApp/wall_screen.dart b/lib/WallpaperApp/wall_screen.dart index 4a675d9..0cd29c6 100644 --- a/lib/WallpaperApp/wall_screen.dart +++ b/lib/WallpaperApp/wall_screen.dart @@ -73,7 +73,7 @@ class _WallScreenState extends State { _bannerAd = createBannerAd() ..load() ..show(); - subscription = collectionReference.snapshots.listen((datasnapshot) { + subscription = collectionReference.snapshots().listen((datasnapshot) { setState(() { wallpapersList = datasnapshot.documents; }); diff --git a/lib/main.dart b/lib/main.dart index 763116b..faa84f3 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,7 +1,10 @@ +import 'package:flutfire/CrudApp/crud_sample.dart'; +import 'package:flutfire/QuotesApp/quotes.dart'; import 'package:flutfire/WallpaperApp/wall_screen.dart'; import 'package:flutter/material.dart'; import 'package:firebase_analytics/firebase_analytics.dart'; import 'package:firebase_analytics/observer.dart'; +import 'package:flutfire/QuotesApp/backdrop.dart'; void main() => runApp(new MyApp()); @@ -20,7 +23,8 @@ class MyApp extends StatelessWidget { primarySwatch: Colors.blue, ), navigatorObservers: [observer], - home: new WallScreen(analytics: analytics, observer: observer), + // home: new WallScreen(analytics: analytics, observer: observer), + home: new CrudSample(), ); } } diff --git a/pubspec.lock b/pubspec.lock index 8dcbf81..b3be2eb 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -7,28 +7,21 @@ packages: name: analyzer url: "https://pub.dartlang.org" source: hosted - version: "0.31.1" + version: "0.31.2-alpha.2" args: dependency: transitive description: name: args url: "https://pub.dartlang.org" source: hosted - version: "1.4.2" + version: "1.4.3" async: dependency: transitive description: name: async url: "https://pub.dartlang.org" source: hosted - version: "2.0.6" - barback: - dependency: transitive - description: - name: barback - url: "https://pub.dartlang.org" - source: hosted - version: "0.15.2+15" + version: "2.0.7" boolean_selector: dependency: transitive description: @@ -43,20 +36,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.1.1" - cli_util: - dependency: transitive - description: - name: cli_util - url: "https://pub.dartlang.org" - source: hosted - version: "0.1.2+1" cloud_firestore: dependency: "direct main" description: name: cloud_firestore url: "https://pub.dartlang.org" source: hosted - version: "0.4.0" + version: "0.7.3" collection: dependency: transitive description: @@ -77,28 +63,28 @@ packages: name: crypto url: "https://pub.dartlang.org" source: hosted - version: "2.0.2+1" + version: "2.0.3" csslib: dependency: transitive description: name: csslib url: "https://pub.dartlang.org" source: hosted - version: "0.14.1" + version: "0.14.4" cupertino_icons: dependency: "direct main" description: name: cupertino_icons url: "https://pub.dartlang.org" source: hosted - version: "0.1.1" + version: "0.1.2" firebase_admob: dependency: "direct main" description: name: firebase_admob url: "https://pub.dartlang.org" source: hosted - version: "0.5.2" + version: "0.5.5" firebase_analytics: dependency: "direct main" description: @@ -112,7 +98,14 @@ packages: name: firebase_auth url: "https://pub.dartlang.org" source: hosted - version: "0.5.3" + version: "0.5.11" + firebase_core: + dependency: transitive + description: + name: firebase_core + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.4" flutter: dependency: "direct main" description: flutter @@ -124,7 +117,7 @@ packages: name: flutter_staggered_grid_view url: "https://pub.dartlang.org" source: hosted - version: "0.1.3" + version: "0.2.1" flutter_test: dependency: "direct dev" description: flutter @@ -136,7 +129,7 @@ packages: name: front_end url: "https://pub.dartlang.org" source: hosted - version: "0.1.0-alpha.9" + version: "0.1.0-alpha.12" glob: dependency: transitive description: @@ -150,14 +143,14 @@ packages: name: google_sign_in url: "https://pub.dartlang.org" source: hosted - version: "3.0.0" + version: "3.0.4" html: dependency: transitive description: name: html url: "https://pub.dartlang.org" source: hosted - version: "0.13.3" + version: "0.13.3+1" http: dependency: transitive description: @@ -171,14 +164,14 @@ packages: name: http_multi_server url: "https://pub.dartlang.org" source: hosted - version: "2.0.4" + version: "2.0.5" http_parser: dependency: transitive description: name: http_parser url: "https://pub.dartlang.org" source: hosted - version: "3.1.1" + version: "3.1.2" io: dependency: transitive description: @@ -186,27 +179,27 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.3.2+1" - isolate: + js: dependency: transitive description: - name: isolate + name: js url: "https://pub.dartlang.org" source: hosted - version: "1.1.0" - js: + version: "0.6.1" + json_rpc_2: dependency: transitive description: - name: js + name: json_rpc_2 url: "https://pub.dartlang.org" source: hosted - version: "0.6.1" + version: "2.0.8" kernel: dependency: transitive description: name: kernel url: "https://pub.dartlang.org" source: hosted - version: "0.3.0-alpha.9" + version: "0.3.0-alpha.12" logging: dependency: transitive description: @@ -220,21 +213,21 @@ packages: name: matcher url: "https://pub.dartlang.org" source: hosted - version: "0.12.1+4" + version: "0.12.2+1" meta: dependency: transitive description: name: meta url: "https://pub.dartlang.org" source: hosted - version: "1.1.2" + version: "1.1.5" mime: dependency: transitive description: name: mime url: "https://pub.dartlang.org" source: hosted - version: "0.9.6" + version: "0.9.6+1" multi_server_socket: dependency: transitive description: @@ -248,7 +241,7 @@ packages: name: node_preamble url: "https://pub.dartlang.org" source: hosted - version: "1.4.0" + version: "1.4.2" package_config: dependency: transitive description: @@ -262,14 +255,14 @@ packages: name: package_resolver url: "https://pub.dartlang.org" source: hosted - version: "1.0.2" + version: "1.0.3" path: dependency: transitive description: name: path url: "https://pub.dartlang.org" source: hosted - version: "1.5.1" + version: "1.6.0" platform: dependency: transitive description: @@ -290,14 +283,14 @@ packages: name: pool url: "https://pub.dartlang.org" source: hosted - version: "1.3.4" + version: "1.3.5" pub_semver: dependency: transitive description: name: pub_semver url: "https://pub.dartlang.org" source: hosted - version: "1.3.6" + version: "1.4.1" quiver: dependency: transitive description: @@ -311,7 +304,7 @@ packages: name: shelf url: "https://pub.dartlang.org" source: hosted - version: "0.7.2" + version: "0.7.3+1" shelf_packages_handler: dependency: transitive description: @@ -325,14 +318,14 @@ packages: name: shelf_static url: "https://pub.dartlang.org" source: hosted - version: "0.2.7" + version: "0.2.7+1" shelf_web_socket: dependency: transitive description: name: shelf_web_socket url: "https://pub.dartlang.org" source: hosted - version: "0.2.2" + version: "0.2.2+2" sky_engine: dependency: transitive description: flutter @@ -351,7 +344,7 @@ packages: name: source_maps url: "https://pub.dartlang.org" source: hosted - version: "0.10.4" + version: "0.10.5" source_span: dependency: transitive description: @@ -372,7 +365,7 @@ packages: name: stream_channel url: "https://pub.dartlang.org" source: hosted - version: "1.6.4" + version: "1.6.7+1" string_scanner: dependency: transitive description: @@ -393,7 +386,7 @@ packages: name: test url: "https://pub.dartlang.org" source: hosted - version: "0.12.34" + version: "0.12.41" typed_data: dependency: transitive description: @@ -415,27 +408,34 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.0.6" + vm_service_client: + dependency: transitive + description: + name: vm_service_client + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.4+3" watcher: dependency: transitive description: name: watcher url: "https://pub.dartlang.org" source: hosted - version: "0.9.7+7" + version: "0.9.7+8" web_socket_channel: dependency: transitive description: name: web_socket_channel url: "https://pub.dartlang.org" source: hosted - version: "1.0.7" + version: "1.0.8" yaml: dependency: transitive description: name: yaml url: "https://pub.dartlang.org" source: hosted - version: "2.1.13" + version: "2.1.14" sdks: - dart: ">=2.0.0-dev.28.0 <=2.0.0-edge.c080951d45e79cd25df98036c4be835b284a269c" + dart: ">=2.0.0-dev.55.0 <=2.0.0-dev.61.0.flutter-c95617b19c" flutter: ">=0.2.4 <2.0.0"