diff --git a/cancerlinc/android/build/reports/problems/problems-report.html b/cancerlinc/android/build/reports/problems/problems-report.html new file mode 100644 index 0000000..0696006 --- /dev/null +++ b/cancerlinc/android/build/reports/problems/problems-report.html @@ -0,0 +1,663 @@ + + + + + + + + + + + + + Gradle Configuration Cache + + + +
+ +
+ Loading... +
+ + + + + + diff --git a/cancerlinc/assets/images/cancerlinc-logo.png b/cancerlinc/assets/images/cancerlinc-logo.png new file mode 100644 index 0000000..f84f594 Binary files /dev/null and b/cancerlinc/assets/images/cancerlinc-logo.png differ diff --git a/cancerlinc/assets/images/cssg-logo.jpg b/cancerlinc/assets/images/cssg-logo.jpg new file mode 100644 index 0000000..e81e99e Binary files /dev/null and b/cancerlinc/assets/images/cssg-logo.jpg differ diff --git a/cancerlinc/ios/Flutter/AppFrameworkInfo.plist b/cancerlinc/ios/Flutter/AppFrameworkInfo.plist index 7c56964..1dc6cf7 100644 --- a/cancerlinc/ios/Flutter/AppFrameworkInfo.plist +++ b/cancerlinc/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/cancerlinc/ios/Flutter/Debug.xcconfig b/cancerlinc/ios/Flutter/Debug.xcconfig index 592ceee..ec97fc6 100644 --- a/cancerlinc/ios/Flutter/Debug.xcconfig +++ b/cancerlinc/ios/Flutter/Debug.xcconfig @@ -1 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" #include "Generated.xcconfig" diff --git a/cancerlinc/ios/Flutter/Release.xcconfig b/cancerlinc/ios/Flutter/Release.xcconfig index 592ceee..c4855bf 100644 --- a/cancerlinc/ios/Flutter/Release.xcconfig +++ b/cancerlinc/ios/Flutter/Release.xcconfig @@ -1 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" #include "Generated.xcconfig" diff --git a/cancerlinc/ios/Podfile b/cancerlinc/ios/Podfile new file mode 100644 index 0000000..620e46e --- /dev/null +++ b/cancerlinc/ios/Podfile @@ -0,0 +1,43 @@ +# Uncomment this line to define a global platform for your project +# platform :ios, '13.0' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_ios_podfile_setup + +target 'Runner' do + use_frameworks! + + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) + target 'RunnerTests' do + inherit! :search_paths + end +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + end +end diff --git a/cancerlinc/ios/Podfile.lock b/cancerlinc/ios/Podfile.lock new file mode 100644 index 0000000..9e2986a --- /dev/null +++ b/cancerlinc/ios/Podfile.lock @@ -0,0 +1,22 @@ +PODS: + - Flutter (1.0.0) + - url_launcher_ios (0.0.1): + - Flutter + +DEPENDENCIES: + - Flutter (from `Flutter`) + - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) + +EXTERNAL SOURCES: + Flutter: + :path: Flutter + url_launcher_ios: + :path: ".symlinks/plugins/url_launcher_ios/ios" + +SPEC CHECKSUMS: + Flutter: cabc95a1d2626b1b06e7179b784ebcf0c0cde467 + url_launcher_ios: 7a95fa5b60cc718a708b8f2966718e93db0cef1b + +PODFILE CHECKSUM: 3c63482e143d1b91d2d2560aee9fb04ecc74ac7e + +COCOAPODS: 1.16.2 diff --git a/cancerlinc/ios/Runner.xcodeproj/project.pbxproj b/cancerlinc/ios/Runner.xcodeproj/project.pbxproj index 9b2f219..8df0490 100644 --- a/cancerlinc/ios/Runner.xcodeproj/project.pbxproj +++ b/cancerlinc/ios/Runner.xcodeproj/project.pbxproj @@ -10,10 +10,12 @@ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 447FF7BF70354B619D41F797 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1965EB66B603222399896CFA /* Pods_RunnerTests.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; + F243F8E4BEAC8120D1963621 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4F401D6C1025355F47DFBC77 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -40,11 +42,17 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 11F10A69D930B533D4D6C6C3 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 1965EB66B603222399896CFA /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 1C89B4AE7DD81BDF4174AB1F /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 4F401D6C1025355F47DFBC77 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 53DBCBF628D193290C296679 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + 554C76AF5DB7332209365F6E /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; @@ -55,19 +63,53 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + BC60FCDEC13F32A5BC0F7A6F /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + E13A87861BC95D36C7AA7184 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + 21C7FA21C4FBEB4C076499D6 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 447FF7BF70354B619D41F797 /* Pods_RunnerTests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + F243F8E4BEAC8120D1963621 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 12955579D51536321E37E372 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 4F401D6C1025355F47DFBC77 /* Pods_Runner.framework */, + 1965EB66B603222399896CFA /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 15CB4A897A1C95D7C4CAC368 /* Pods */ = { + isa = PBXGroup; + children = ( + 554C76AF5DB7332209365F6E /* Pods-Runner.debug.xcconfig */, + BC60FCDEC13F32A5BC0F7A6F /* Pods-Runner.release.xcconfig */, + 53DBCBF628D193290C296679 /* Pods-Runner.profile.xcconfig */, + 1C89B4AE7DD81BDF4174AB1F /* Pods-RunnerTests.debug.xcconfig */, + 11F10A69D930B533D4D6C6C3 /* Pods-RunnerTests.release.xcconfig */, + E13A87861BC95D36C7AA7184 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -94,6 +136,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, + 15CB4A897A1C95D7C4CAC368 /* Pods */, + 12955579D51536321E37E372 /* Frameworks */, ); sourceTree = ""; }; @@ -128,8 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( + 7FB720ED760AF71FAA672C82 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, + 21C7FA21C4FBEB4C076499D6 /* Frameworks */, ); buildRules = ( ); @@ -145,12 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( + D7FF52186C9AAD07B9DE2064 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + D6A58553078153298C7307DF /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -238,6 +286,28 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; + 7FB720ED760AF71FAA672C82 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -253,6 +323,45 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; + D6A58553078153298C7307DF /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + D7FF52186C9AAD07B9DE2064 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -346,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -378,6 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 1C89B4AE7DD81BDF4174AB1F /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -395,6 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 11F10A69D930B533D4D6C6C3 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -410,6 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; + baseConfigurationReference = E13A87861BC95D36C7AA7184 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -472,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/cancerlinc/ios/Runner.xcworkspace/contents.xcworkspacedata b/cancerlinc/ios/Runner.xcworkspace/contents.xcworkspacedata index 1d526a1..21a3cc1 100644 --- a/cancerlinc/ios/Runner.xcworkspace/contents.xcworkspacedata +++ b/cancerlinc/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -4,4 +4,7 @@ + + diff --git a/cancerlinc/lib/pages/home_page.dart b/cancerlinc/lib/pages/home_page.dart index 2778396..f06661d 100644 --- a/cancerlinc/lib/pages/home_page.dart +++ b/cancerlinc/lib/pages/home_page.dart @@ -1,10 +1,347 @@ import 'package:flutter/material.dart'; +import 'package:flutter/gestures.dart'; +import 'package:url_launcher/url_launcher.dart'; class HomePage extends StatelessWidget { const HomePage({super.key}); + // Dynamic data variables + final String userName = "Lisa"; + final int newMessageCount = 12; + final String nextEventDate = "Nov 12"; + final int completedChecklists = 10; + final int totalChecklists = 12; + final int activeReferrals = 11; + final String phoneNumber = "(804) 562-0371"; + final String faxNumber = "(804) 918-0946"; + final String addressLine1 = "200 South 3rd St,"; + final String addressLine2 = "Richmond, VA 23219"; + @override Widget build(BuildContext context) { - return const Center(child: Text('Welcome to the home screen!')); + return SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.symmetric(vertical: 0, horizontal: 22), + child: Column( + children: [ + Center( + child: Image.asset( + 'assets/images/cancerlinc-logo.png', + width: 100, + height: 100, + ), + ), + SizedBox(height: 33), + Align( + alignment: Alignment.centerLeft, + child: RichText( + text: TextSpan( + style: TextStyle(fontSize: 24, color: Colors.black), + children: [ + TextSpan(text: "Welcome, "), + TextSpan( + text: "$userName!", + style: TextStyle(fontWeight: FontWeight.w600), + ), + ], + ), + ), + ), + SizedBox(height: 24), + GridView.count( + shrinkWrap: true, + physics: NeverScrollableScrollPhysics(), + crossAxisCount: 2, + crossAxisSpacing: 16, + mainAxisSpacing: 16, + childAspectRatio: 1.3, + children: [ + _buildCard( + label: "Chat", + icon: Icons.chat_bubble_outline, + info: "$newMessageCount new messages", + ), + _buildCard( + label: "Calendar", + icon: Icons.calendar_today_outlined, + info: "Next: $nextEventDate", + ), + _buildCard( + label: "Checklists", + icon: Icons.check_box_outlined, + info: "$completedChecklists of $totalChecklists complete", + ), + _buildCard( + label: "Referrals", + icon: Icons.assignment_ind_outlined, + info: "$activeReferrals active", + ), + ], + ), + SizedBox(height: 24), + Divider(thickness: 1, color: Color(0xFFD9D9D9)), + SizedBox(height: 33), + Align( + alignment: Alignment.centerLeft, + child: Text( + "At CancerLINC, we provide free legal, financial, and community resource assistance to patients in the Greater Richmond area.", + style: TextStyle(fontSize: 16, color: Color(0xFF666666)), + ), + ), + SizedBox(height: 24), + SizedBox( + width: double.infinity, + child: Card( + color: Color(0xFFD9D9D9), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12), + ), + child: Padding( + padding: const EdgeInsets.symmetric( + vertical: 20, + horizontal: 16, + ), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + "You are never alone in your journey.", + style: TextStyle( + fontSize: 16, + fontStyle: FontStyle.italic, + color: Color(0xFF999999), + ), + ), + ], + ), + ), + ), + ), + SizedBox(height: 35), + Align( + alignment: Alignment.centerLeft, + child: Text( + "Available Resources", + style: TextStyle(fontSize: 20), + ), + ), + SizedBox(height: 16), + GridView.count( + shrinkWrap: true, + physics: NeverScrollableScrollPhysics(), + crossAxisCount: 2, + crossAxisSpacing: 16, + mainAxisSpacing: 12, + childAspectRatio: 2, + children: [ + _buildSmallCard(text: "Employment"), + _buildSmallCard(text: "Insurance"), + _buildSmallCard(text: "Housing"), + _buildSmallCard(text: "Financial"), + _buildSmallCard(text: "Transportation"), + _buildSmallCard(text: "Food Access"), + ], + ), + SizedBox(height: 32), + Align( + alignment: Alignment.centerLeft, + child: Text("Contact Us", style: TextStyle(fontSize: 20)), + ), + SizedBox(height: 12), + GridView.count( + shrinkWrap: true, + physics: NeverScrollableScrollPhysics(), + crossAxisCount: 2, + crossAxisSpacing: 6, + mainAxisSpacing: 6, + childAspectRatio: 7, + children: [ + InkWell( + onTap: () async { + final url = Uri.parse('tel:$phoneNumber'); + if (await canLaunchUrl(url)) { + await launchUrl(url); + } + }, + child: Row( + children: [ + Icon(Icons.phone_outlined, size: 20), + SizedBox(width: 12), + Text( + phoneNumber, + style: TextStyle( + fontSize: 14, + color: Colors.blue, + decoration: TextDecoration.underline, + ), + ), + ], + ), + ), + Row( + children: [ + Icon(Icons.location_pin, size: 20), + SizedBox(width: 12), + Text( + addressLine1, + style: TextStyle(fontSize: 14, color: Color(0xFF666666)), + ), + ], + ), + Row( + children: [ + Icon(Icons.adf_scanner_outlined, size: 20), + SizedBox(width: 12), + Text( + faxNumber, + style: TextStyle(fontSize: 14, color: Color(0xFF666666)), + ), + ], + ), + Row( + children: [ + SizedBox(width: 32), + Text( + addressLine2, + style: TextStyle(fontSize: 14, color: Color(0xFF666666)), + ), + ], + ), + ], + ), + SizedBox(height: 26), + Card( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12), + side: BorderSide(color: Colors.grey, width: 1), + ), + child: Padding( + padding: const EdgeInsets.symmetric( + vertical: 20, + horizontal: 16, + ), + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Image.asset( + 'assets/images/cssg-logo.jpg', + width: 48, + height: 48, + ), + SizedBox(width: 12), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + "App built by", + style: + TextStyle(fontSize: 12, color: Color(0xFF666666)), + ), + Text( + "UNC CS + SG", + style: + TextStyle(fontSize: 16, color: Colors.black), + ), + ], + ) + ], + ), + SizedBox(height: 12), + RichText( + text: TextSpan( + style: TextStyle(fontSize: 12, color: Color(0xFF666666)), + children: [ + TextSpan( + text: "UNC Computer Science for Social Good is a student organization dedicated to using our technical skills, time, and resources to make a positive impact on our campus, in our community, and in the world.\n\nWe design and create websites and apps for nonprofits and other organizations to fulfill our mission. Need our help? Check us out at ", + ), + TextSpan( + text: "cssgunc.org", + style: TextStyle( + color: Color(0xFF666666), + decoration: TextDecoration.underline, + ), + recognizer: TapGestureRecognizer() + ..onTap = () async { + final url = Uri.parse('https://www.cssgunc.org/'); + if (await canLaunchUrl(url)) { + await launchUrl(url); + } + }, + ), + ], + ), + ), + ], + ), + ), + ), + SizedBox(height: 31), + ], + ), + ), + ); + } + + Widget _buildSmallCard({required String text, VoidCallback? onTap}) { + return Card( + color: Color(0xFFD9D9D9), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12), + side: BorderSide(color: Colors.grey, width: 1), + ), + child: InkWell( + onTap: onTap ?? () { + print('$text resource tapped'); + }, + borderRadius: BorderRadius.circular(12), + child: Padding( + padding: const EdgeInsets.symmetric(vertical: 20, horizontal: 16), + child: Center( + child: Text( + text, + style: TextStyle(fontSize: 14, color: Color(0xFF666666)), + ), + ), + ), + ), + ); + } + + Widget _buildCard({ + required String label, + required IconData icon, + required String info, + VoidCallback? onTap, + }) { + return Card( + color: Color(0xFFD9D9D9), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), + child: InkWell( + onTap: onTap ?? () { + print('$label card tapped'); + }, + borderRadius: BorderRadius.circular(12), + child: Padding( + padding: const EdgeInsets.all(14), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Icon(icon, size: 28), + SizedBox(height: 6), + Text(label, style: TextStyle(fontSize: 14)), + SizedBox(height: 18), + Text( + info, + style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600), + ), + ], + ), + ), + ), + ); } } diff --git a/cancerlinc/linux/flutter/generated_plugin_registrant.cc b/cancerlinc/linux/flutter/generated_plugin_registrant.cc index e71a16d..f6f23bf 100644 --- a/cancerlinc/linux/flutter/generated_plugin_registrant.cc +++ b/cancerlinc/linux/flutter/generated_plugin_registrant.cc @@ -6,6 +6,10 @@ #include "generated_plugin_registrant.h" +#include void fl_register_plugins(FlPluginRegistry* registry) { + g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin"); + url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar); } diff --git a/cancerlinc/linux/flutter/generated_plugins.cmake b/cancerlinc/linux/flutter/generated_plugins.cmake index 2e1de87..f16b4c3 100644 --- a/cancerlinc/linux/flutter/generated_plugins.cmake +++ b/cancerlinc/linux/flutter/generated_plugins.cmake @@ -3,6 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST + url_launcher_linux ) list(APPEND FLUTTER_FFI_PLUGIN_LIST diff --git a/cancerlinc/macos/Flutter/Flutter-Debug.xcconfig b/cancerlinc/macos/Flutter/Flutter-Debug.xcconfig index c2efd0b..4b81f9b 100644 --- a/cancerlinc/macos/Flutter/Flutter-Debug.xcconfig +++ b/cancerlinc/macos/Flutter/Flutter-Debug.xcconfig @@ -1 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" #include "ephemeral/Flutter-Generated.xcconfig" diff --git a/cancerlinc/macos/Flutter/Flutter-Release.xcconfig b/cancerlinc/macos/Flutter/Flutter-Release.xcconfig index c2efd0b..5caa9d1 100644 --- a/cancerlinc/macos/Flutter/Flutter-Release.xcconfig +++ b/cancerlinc/macos/Flutter/Flutter-Release.xcconfig @@ -1 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" #include "ephemeral/Flutter-Generated.xcconfig" diff --git a/cancerlinc/macos/Flutter/GeneratedPluginRegistrant.swift b/cancerlinc/macos/Flutter/GeneratedPluginRegistrant.swift index cccf817..8236f57 100644 --- a/cancerlinc/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/cancerlinc/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,6 +5,8 @@ import FlutterMacOS import Foundation +import url_launcher_macos func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) } diff --git a/cancerlinc/macos/Podfile b/cancerlinc/macos/Podfile new file mode 100644 index 0000000..ff5ddb3 --- /dev/null +++ b/cancerlinc/macos/Podfile @@ -0,0 +1,42 @@ +platform :osx, '10.15' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\"" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_macos_podfile_setup + +target 'Runner' do + use_frameworks! + + flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__)) + target 'RunnerTests' do + inherit! :search_paths + end +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_macos_build_settings(target) + end +end diff --git a/cancerlinc/pubspec.lock b/cancerlinc/pubspec.lock index eaa659f..4271163 100644 --- a/cancerlinc/pubspec.lock +++ b/cancerlinc/pubspec.lock @@ -75,30 +75,35 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" leak_tracker: dependency: transitive description: name: leak_tracker - sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0" + sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de" url: "https://pub.dev" source: hosted - version: "10.0.9" + version: "11.0.2" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 + sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1" url: "https://pub.dev" source: hosted - version: "3.0.9" + version: "3.0.10" leak_tracker_testing: dependency: transitive description: name: leak_tracker_testing - sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1" url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.2" lints: dependency: transitive description: @@ -139,6 +144,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.9.1" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" + url: "https://pub.dev" + source: hosted + version: "2.1.8" sky_engine: dependency: transitive description: flutter @@ -188,18 +201,82 @@ packages: dependency: transitive description: name: test_api - sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd + sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00" + url: "https://pub.dev" + source: hosted + version: "0.7.6" + url_launcher: + dependency: "direct main" + description: + name: url_launcher + sha256: f6a7e5c4835bb4e3026a04793a4199ca2d14c739ec378fdfe23fc8075d0439f8 url: "https://pub.dev" source: hosted - version: "0.7.4" + version: "6.3.2" + url_launcher_android: + dependency: transitive + description: + name: url_launcher_android + sha256: "5c8b6c2d89a78f5a1cca70a73d9d5f86c701b36b42f9c9dac7bad592113c28e9" + url: "https://pub.dev" + source: hosted + version: "6.3.24" + url_launcher_ios: + dependency: transitive + description: + name: url_launcher_ios + sha256: "6b63f1441e4f653ae799166a72b50b1767321ecc263a57aadf825a7a2a5477d9" + url: "https://pub.dev" + source: hosted + version: "6.3.5" + url_launcher_linux: + dependency: transitive + description: + name: url_launcher_linux + sha256: "4e9ba368772369e3e08f231d2301b4ef72b9ff87c31192ef471b380ef29a4935" + url: "https://pub.dev" + source: hosted + version: "3.2.1" + url_launcher_macos: + dependency: transitive + description: + name: url_launcher_macos + sha256: "8262208506252a3ed4ff5c0dc1e973d2c0e0ef337d0a074d35634da5d44397c9" + url: "https://pub.dev" + source: hosted + version: "3.2.4" + url_launcher_platform_interface: + dependency: transitive + description: + name: url_launcher_platform_interface + sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029" + url: "https://pub.dev" + source: hosted + version: "2.3.2" + url_launcher_web: + dependency: transitive + description: + name: url_launcher_web + sha256: "4bd2b7b4dc4d4d0b94e5babfffbca8eac1a126c7f3d6ecbc1a11013faa3abba2" + url: "https://pub.dev" + source: hosted + version: "2.4.1" + url_launcher_windows: + dependency: transitive + description: + name: url_launcher_windows + sha256: "3284b6d2ac454cf34f114e1d3319866fdd1e19cdc329999057e44ffe936cfa77" + url: "https://pub.dev" + source: hosted + version: "3.1.4" vector_math: dependency: transitive description: name: vector_math - sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.2.0" vm_service: dependency: transitive description: @@ -208,6 +285,14 @@ packages: url: "https://pub.dev" source: hosted version: "15.0.0" + web: + dependency: transitive + description: + name: web + sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a" + url: "https://pub.dev" + source: hosted + version: "1.1.1" sdks: - dart: ">=3.8.1 <4.0.0" - flutter: ">=3.18.0-18.0.pre.54" + dart: ">=3.9.0 <4.0.0" + flutter: ">=3.35.0" diff --git a/cancerlinc/pubspec.yaml b/cancerlinc/pubspec.yaml index 67dbddf..52f5dd8 100644 --- a/cancerlinc/pubspec.yaml +++ b/cancerlinc/pubspec.yaml @@ -34,6 +34,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 + url_launcher: ^6.3.2 dev_dependencies: flutter_test: @@ -58,9 +59,8 @@ flutter: uses-material-design: true # To add assets to your application, add an assets section, like this: - # assets: - # - images/a_dot_burr.jpeg - # - images/a_dot_ham.jpeg + assets: + - assets/images/ # An image asset can refer to one or more resolution-specific "variants", see # https://flutter.dev/to/resolution-aware-images diff --git a/cancerlinc/windows/flutter/generated_plugin_registrant.cc b/cancerlinc/windows/flutter/generated_plugin_registrant.cc index 8b6d468..4f78848 100644 --- a/cancerlinc/windows/flutter/generated_plugin_registrant.cc +++ b/cancerlinc/windows/flutter/generated_plugin_registrant.cc @@ -6,6 +6,9 @@ #include "generated_plugin_registrant.h" +#include void RegisterPlugins(flutter::PluginRegistry* registry) { + UrlLauncherWindowsRegisterWithRegistrar( + registry->GetRegistrarForPlugin("UrlLauncherWindows")); } diff --git a/cancerlinc/windows/flutter/generated_plugins.cmake b/cancerlinc/windows/flutter/generated_plugins.cmake index b93c4c3..88b22e5 100644 --- a/cancerlinc/windows/flutter/generated_plugins.cmake +++ b/cancerlinc/windows/flutter/generated_plugins.cmake @@ -3,6 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST + url_launcher_windows ) list(APPEND FLUTTER_FFI_PLUGIN_LIST