From 96f657b95aa1e0d49239304247d0b49f2f08c544 Mon Sep 17 00:00:00 2001 From: yaramt Date: Thu, 25 Jul 2024 11:14:33 +0200 Subject: [PATCH] vis --- app/ios/Runner.xcodeproj/project.pbxproj | 8 +- .../sections/average_section_widget.dart | 17 ++ .../results_descriptive_statistics.dart | 101 +++++++++ .../study/report/sections/results_gauge.dart | 125 +++++++++++ .../sections/results_textual_summary.dart | 82 ++++++++ app/macos/Runner.xcodeproj/project.pbxproj | 106 +++++++++- .../xcshareddata/xcschemes/Runner.xcscheme | 2 +- .../contents.xcworkspacedata | 3 + app/pubspec.lock | 196 +++++++++++------- app/pubspec.yaml | 2 + pubspec.lock | 50 +++-- 11 files changed, 591 insertions(+), 101 deletions(-) create mode 100644 app/lib/screens/study/report/sections/results_descriptive_statistics.dart create mode 100644 app/lib/screens/study/report/sections/results_gauge.dart create mode 100644 app/lib/screens/study/report/sections/results_textual_summary.dart diff --git a/app/ios/Runner.xcodeproj/project.pbxproj b/app/ios/Runner.xcodeproj/project.pbxproj index 277b82799..d0e4eeb8b 100644 --- a/app/ios/Runner.xcodeproj/project.pbxproj +++ b/app/ios/Runner.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 54; + objectVersion = 60; objects = { /* Begin PBXBuildFile section */ @@ -491,7 +491,7 @@ "DEVELOPMENT_TEAM[sdk=iphoneos*]" = PG566C9XUK; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 10.14; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -676,7 +676,7 @@ DEVELOPMENT_TEAM = PG566C9XUK; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 10.14; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -704,7 +704,7 @@ DEVELOPMENT_TEAM = PG566C9XUK; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 10.14; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/app/lib/screens/study/report/sections/average_section_widget.dart b/app/lib/screens/study/report/sections/average_section_widget.dart index bf949f7d7..9ed0f2cc2 100644 --- a/app/lib/screens/study/report/sections/average_section_widget.dart +++ b/app/lib/screens/study/report/sections/average_section_widget.dart @@ -7,6 +7,9 @@ import 'package:studyu_app/screens/study/report/util/plot_utilities.dart'; import 'package:studyu_app/theme.dart'; import 'package:studyu_app/util/data_processing.dart'; import 'package:studyu_core/core.dart'; +import 'results_descriptive_statistics.dart'; +import 'results_gauge.dart'; +import 'results_textual_summary.dart'; class AverageSectionWidget extends ReportSectionWidget { final AverageSection section; @@ -15,6 +18,8 @@ class AverageSectionWidget extends ReportSectionWidget { @override Widget build(BuildContext context) { + ValueNotifier showDescriptionNotifier = ValueNotifier(false); + final data = getAggregatedData().toList(); final taskTitle = subject.study.observations .firstWhereOrNull( @@ -32,8 +37,20 @@ class AverageSectionWidget extends ReportSectionWidget { .copyWith(fontWeight: FontWeight.bold), ), const SizedBox(height: 8), + const TextualSummaryWidget(), //Row 2 + const SizedBox(height: 8), + const GaugeTitleWidget(), //Row 3 + const SizedBox(height: 8), + const GaugesWidget(), //Row 4 + const SizedBox(height: 8), getLegend(context, data), const SizedBox(height: 8), + ExpansionTile( + title: Text('Descriptive Statistics'), + children: [ + DescriptiveStatisticsWidget(), + ], + ), AspectRatio(aspectRatio: 1.5, child: getDiagram(context, data)), ], ); diff --git a/app/lib/screens/study/report/sections/results_descriptive_statistics.dart b/app/lib/screens/study/report/sections/results_descriptive_statistics.dart new file mode 100644 index 000000000..f72716e9f --- /dev/null +++ b/app/lib/screens/study/report/sections/results_descriptive_statistics.dart @@ -0,0 +1,101 @@ +import 'package:flutter/material.dart'; + +// Row 6: Descriptive Statistics +class DescriptiveStatisticsWidget extends StatelessWidget { + + const DescriptiveStatisticsWidget({super.key}); + + @override + Widget build(BuildContext context) { + return GestureDetector( + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Icon( + true ? Icons.arrow_drop_up : Icons.arrow_drop_down, + ), + ], + ), + if (true) + Padding( + padding: const EdgeInsets.only(top: 8.0), + child: Column( + children: [ + _buildStatisticsTable(), + const Padding( + padding: EdgeInsets.only(top: 8.0), + child: Text( + 'p-value: 0.01\nLevel of significance: α = 0.05', + style: TextStyle(fontSize: 8, color: Colors.black), + textAlign: TextAlign.center, + ), + ), + ], + ), + ), + ], + ), + ); + } + + Widget _buildStatisticsTable() { + return Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8.0), + color: Colors.grey[200], + boxShadow: [ + BoxShadow( + color: Colors.grey.withOpacity(0.5), + spreadRadius: 2, + blurRadius: 5, + offset: Offset(0, 3), + ), + ], + ), + child: Table( + border: TableBorder.all(color: Colors.grey), + columnWidths: const { + 0: FixedColumnWidth(65), + 1: FixedColumnWidth(65), + 2: FixedColumnWidth(50), + 3: FixedColumnWidth(50), + 4: FixedColumnWidth(50), + 5: FixedColumnWidth(65), + }, + children: [ + _buildTableRow( + ['Intervention', 'Observations', 'Average', 'Min', 'Max', 'Variance'], + isHeader: true, + ), + _buildTableRow(['Tea', '14', '5.0', '4', '3', '1.2']), + _buildTableRow(['No Tea', '14', '7.5', '8', '6', '2']), + ], + ), + ); + } + + TableRow _buildTableRow(List cells, {bool isHeader = false}) { + return TableRow( + children: cells.map((cell) { + return _buildTableCell(cell, isHeader: isHeader); + }).toList(), + ); + } + + Widget _buildTableCell(String text, {bool isHeader = false}) { + return Padding( + padding: const EdgeInsets.all(6.0), + child: Text( + text, + style: TextStyle( + fontSize: isHeader ? 8 : 8, + fontWeight: isHeader ? FontWeight.bold : FontWeight.normal, + color: isHeader ? Colors.black : Colors.grey[800], + ), + textAlign: TextAlign.center, + ), + ); + } +} diff --git a/app/lib/screens/study/report/sections/results_gauge.dart b/app/lib/screens/study/report/sections/results_gauge.dart new file mode 100644 index 000000000..132c38146 --- /dev/null +++ b/app/lib/screens/study/report/sections/results_gauge.dart @@ -0,0 +1,125 @@ +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_gauges/gauges.dart'; + +// Row 3: Gauge title +class GaugeTitleWidget extends StatelessWidget { + const GaugeTitleWidget({super.key}); + + @override + Widget build(BuildContext context) { + return const Center( + child: Text( + 'Average Sleep Quality', + style: TextStyle(fontSize: 16, color: Colors.blueAccent), + ), + ); + } +} + +// Row 4: Two gauges +class GaugesWidget extends StatelessWidget { + const GaugesWidget({super.key}); + + @override + Widget build(BuildContext context) { + return Row( + children: [ + Expanded( + child: Column( + children: [ + Container( + width: 140, // Set the desired width + height: 140, // Set the desired height + child: createGauge(0, 10, 10, 5), // min, max, steps, value + ), + Text('With Tea', style: TextStyle(fontSize: 14)), + ], + ), + ), + Expanded( + child: Column( + children: [ + Container( + width: 140, // Set the desired width + height: 140, // Set the desired height + child: createGauge(0, 10, 10, 7.5), // min, max, steps, value + ), + Text('Without Tea', style: TextStyle(fontSize: 14)), + ], + ), + ), + ], + ); + } + + // Create gauge with min and max values, steps to switch colors, value to point at + Widget createGauge(double min, double max, int steps, double value) { + // List of colors + List colors = [ + Colors.red[900]!, + Colors.red[700]!, + Colors.red[500]!, + Colors.orange[900]!, + Colors.orange[700]!, + Colors.yellow[700]!, + Colors.yellow[500]!, + Colors.green[300]!, + Colors.green[500]!, + Colors.green[700]! + ]; + + // Create gauge ranges based on steps and the color list + List createRanges() { + double stepValue = (max - min) / steps; + return List.generate(steps, (index) { + double start = min + (index * stepValue); + double end = start + stepValue; + return GaugeRange( + startValue: start, + endValue: end, + color: colors[index], + ); + }); + } + + return SfRadialGauge( + axes: [ + RadialAxis( + minimum: min, + maximum: max, + pointers: [ + NeedlePointer( + value: value, + needleColor: Colors.blue, + needleEndWidth: 7, + ), + ], + ranges: createRanges(), + annotations: [ + GaugeAnnotation( + widget: RichText( + text: TextSpan( + children: [ + TextSpan( + text: '$value', + style: const TextStyle( + fontSize: 24, + fontWeight: FontWeight.bold, + color: Colors.blue), + ), + TextSpan( + text: '/$max', + style: const TextStyle(fontSize: 10, color: Colors.blue), + ), + ], + ), + ), + angle: 90, + positionFactor: 0.8, + ), + ], + ), + ], + ); + } +} diff --git a/app/lib/screens/study/report/sections/results_textual_summary.dart b/app/lib/screens/study/report/sections/results_textual_summary.dart new file mode 100644 index 000000000..083cc47ff --- /dev/null +++ b/app/lib/screens/study/report/sections/results_textual_summary.dart @@ -0,0 +1,82 @@ +import 'package:flutter/material.dart'; +// Row 2: Textual Summary + +class TextualSummaryWidget extends StatelessWidget { + const TextualSummaryWidget({super.key}); + + @override + Widget build(BuildContext context) { + return Row( + children: [ + Expanded( + child: Column( + children: [ + Container( + padding: const EdgeInsets.all(8.0), + decoration: BoxDecoration( + color: Colors.white, + border: Border.all(color: Colors.grey), + borderRadius: BorderRadius.circular(12.0), + ), + child: const Column( + children: [ + Text( + 'With tea', + style: TextStyle( + fontSize: 16, + color: Colors.green, + fontWeight: FontWeight.bold, + ), + ), + SizedBox(height: 4), // SizedBox for spacing + Text( + 'Your sleep quality was slightly better', // Text 1 for box 1 + style: TextStyle( + fontSize: 12, + color: Colors.black, + ), + ), + ], + ), + ), + ], + ), + ), + Expanded( + child: Column( + children: [ + Container( + padding: const EdgeInsets.all(8.0), + decoration: BoxDecoration( + color: Colors.white, + border: Border.all(color: Colors.grey), + borderRadius: BorderRadius.circular(12.0), + ), + child: const Column( + children: [ + Text( + 'Without tea', + style: TextStyle( + fontSize: 16, + color: Colors.red, + fontWeight: FontWeight.bold, + ), + ), + SizedBox(height: 4), // SizedBox for spacing + Text( + 'Your sleep quality was slightly worse', // Text 2 for box 2 + style: TextStyle( + fontSize: 12, + color: Colors.black, + ), + ), + ], + ), + ), + ], + ), + ), + ], + ); + } +} diff --git a/app/macos/Runner.xcodeproj/project.pbxproj b/app/macos/Runner.xcodeproj/project.pbxproj index ee29eca55..a231e66d8 100644 --- a/app/macos/Runner.xcodeproj/project.pbxproj +++ b/app/macos/Runner.xcodeproj/project.pbxproj @@ -27,6 +27,8 @@ 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; + D644E6B7EBBED3BAF94FA771 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0BF8168A4DE68D05D94A790 /* Pods_Runner.framework */; }; + FEA59BD2EE0C974091548ECE /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 294D8CD22FAC99F14FE45005 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -60,11 +62,14 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 27E8DA17FAACB5629F025386 /* 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 = ""; }; + 294D8CD22FAC99F14FE45005 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 3034E4B3E2512DEC018D6E6F /* 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 = ""; }; 331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; - 33CC10ED2044A3C60003C045 /* studyu_app.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "studyu_app.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 33CC10ED2044A3C60003C045 /* studyu_app.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = studyu_app.app; sourceTree = BUILT_PRODUCTS_DIR; }; 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; @@ -76,8 +81,13 @@ 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; + 4A74D963F13A1C5C26D8EDEA /* 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 = ""; }; + 7A195DB8E1C5B905288B5F48 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 90561E97DA8FF7235E2BDB1D /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; + B4DD1C645AE4B59611197ADC /* 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 = ""; }; + D0BF8168A4DE68D05D94A790 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -85,6 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + FEA59BD2EE0C974091548ECE /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -92,12 +103,27 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + D644E6B7EBBED3BAF94FA771 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 1F6A4A30F6C244CB3A064FB6 /* Pods */ = { + isa = PBXGroup; + children = ( + 27E8DA17FAACB5629F025386 /* Pods-Runner.debug.xcconfig */, + 90561E97DA8FF7235E2BDB1D /* Pods-Runner.release.xcconfig */, + 4A74D963F13A1C5C26D8EDEA /* Pods-Runner.profile.xcconfig */, + 3034E4B3E2512DEC018D6E6F /* Pods-RunnerTests.debug.xcconfig */, + B4DD1C645AE4B59611197ADC /* Pods-RunnerTests.release.xcconfig */, + 7A195DB8E1C5B905288B5F48 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; 331C80D6294CF71000263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -125,6 +151,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, + 1F6A4A30F6C244CB3A064FB6 /* Pods */, ); sourceTree = ""; }; @@ -175,6 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( + D0BF8168A4DE68D05D94A790 /* Pods_Runner.framework */, + 294D8CD22FAC99F14FE45005 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -186,6 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( + 52AE4782D823D1CB99FF211E /* [CP] Check Pods Manifest.lock */, 331C80D1294CF70F00263BE5 /* Sources */, 331C80D2294CF70F00263BE5 /* Frameworks */, 331C80D3294CF70F00263BE5 /* Resources */, @@ -204,11 +234,13 @@ isa = PBXNativeTarget; buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( + 1164A60323AB5DCF2B7CB2EF /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, + D41B70EA573E2A21123529DC /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -227,7 +259,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 1430; + LastUpgradeCheck = 1510; ORGANIZATIONNAME = ""; TargetAttributes = { 331C80D4294CF70F00263BE5 = { @@ -290,6 +322,28 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 1164A60323AB5DCF2B7CB2EF /* [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; + }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -328,6 +382,45 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; + 52AE4782D823D1CB99FF211E /* [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; + }; + D41B70EA573E2A21123529DC /* [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; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -379,6 +472,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 3034E4B3E2512DEC018D6E6F /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -393,6 +487,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B4DD1C645AE4B59611197ADC /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -407,6 +502,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 7A195DB8E1C5B905288B5F48 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -457,7 +553,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -536,7 +632,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -583,7 +679,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/app/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/app/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 41023e16c..c7cffbae8 100644 --- a/app/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/app/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ + + diff --git a/app/pubspec.lock b/app/pubspec.lock index 1beac440d..c96759fea 100644 --- a/app/pubspec.lock +++ b/app/pubspec.lock @@ -5,10 +5,34 @@ packages: dependency: transitive description: name: app_links - sha256: "96e677810b83707ff5e10fac11e4839daa0ea4e0123c35864c092699165eb3db" + sha256: ae5f9a1b7d40d26178f605414be81ed4260350b4fae8259fe5ca4f89fe70c4af url: "https://pub.dev" source: hosted - version: "6.1.1" + version: "6.1.4" + app_links_linux: + dependency: transitive + description: + name: app_links_linux + sha256: f5f7173a78609f3dfd4c2ff2c95bd559ab43c80a87dc6a095921d96c05688c81 + url: "https://pub.dev" + source: hosted + version: "1.0.3" + app_links_platform_interface: + dependency: transitive + description: + name: app_links_platform_interface + sha256: "05f5379577c513b534a29ddea68176a4d4802c46180ee8e2e966257158772a3f" + url: "https://pub.dev" + source: hosted + version: "2.0.2" + app_links_web: + dependency: transitive + description: + name: app_links_web + sha256: "74586ed5f3c4786341e82a0fa43c39ec3f13108a550f74e80d8bf68aa11349d1" + url: "https://pub.dev" + source: hosted + version: "1.0.3" archive: dependency: transitive description: @@ -37,10 +61,10 @@ packages: dependency: transitive description: name: audio_session - sha256: a49af9981eec5d7cd73b37bacb6ee73f8143a6a9f9bd5b6021e6c346b9b6cf4e + sha256: "343e83bc7809fbda2591a49e525d6b63213ade10c76f15813be9aed6657b3261" url: "https://pub.dev" source: hosted - version: "0.1.19" + version: "0.1.21" barcode: dependency: transitive description: @@ -101,34 +125,34 @@ packages: dependency: transitive description: name: camera_android_camerax - sha256: "7d84815edbb8304b51c10deba3c20f44eef80aa46ff156ec45428ed16600b49a" + sha256: "7c03940cb8c92eb5b184952674a07cc4a73c6ba2b3568aad70255ad4cb913660" url: "https://pub.dev" source: hosted - version: "0.6.5+5" + version: "0.6.7+1" camera_avfoundation: dependency: transitive description: name: camera_avfoundation - sha256: "7d021e8cd30d9b71b8b92b4ad669e80af432d722d18d6aac338572754a786c15" + sha256: b5093a82537b64bb88d4244f8e00b5ba69e822a5994f47b31d11400e1db975e5 url: "https://pub.dev" source: hosted - version: "0.9.16" + version: "0.9.17+1" camera_platform_interface: dependency: transitive description: name: camera_platform_interface - sha256: a250314a48ea337b35909a4c9d5416a208d736dcb01d0b02c6af122be66660b0 + sha256: b3ede1f171532e0d83111fe0980b46d17f1aa9788a07a2fbed07366bbdbb9061 url: "https://pub.dev" source: hosted - version: "2.7.4" + version: "2.8.0" camera_web: dependency: transitive description: name: camera_web - sha256: "9e9aba2fbab77ce2472924196ff8ac4dd8f9126c4f9a3096171cd1d870d6b26c" + sha256: b9235ec0a2ce949daec546f1f3d86f05c3921ed31c7d9ab6b7c03214d152fc2d url: "https://pub.dev" source: hosted - version: "0.3.3" + version: "0.3.4" characters: dependency: transitive description: @@ -290,10 +314,10 @@ packages: dependency: transitive description: name: flutter_cache_manager - sha256: "395d6b7831f21f3b989ebedbb785545932adb9afe2622c1ffacf7f4b53a7e544" + sha256: ceff65d74d907b1b772e22cf04daad60fb472461638977d9fae8b00a63e01e3d url: "https://pub.dev" source: hosted - version: "3.3.2" + version: "3.3.3" flutter_dotenv: dependency: transitive description: @@ -330,26 +354,26 @@ packages: dependency: "direct main" description: name: flutter_local_notifications - sha256: "40e6fbd2da7dcc7ed78432c5cdab1559674b4af035fddbfb2f9a8f9c2112fcef" + sha256: dd6676d8c2926537eccdf9f72128bbb2a9d0814689527b17f92c248ff192eaf3 url: "https://pub.dev" source: hosted - version: "17.1.2" + version: "17.2.1+2" flutter_local_notifications_linux: dependency: transitive description: name: flutter_local_notifications_linux - sha256: "33f741ef47b5f63cc7f78fe75eeeac7e19f171ff3c3df054d84c1e38bedb6a03" + sha256: c49bd06165cad9beeb79090b18cd1eb0296f4bf4b23b84426e37dd7c027fc3af url: "https://pub.dev" source: hosted - version: "4.0.0+1" + version: "4.0.1" flutter_local_notifications_platform_interface: dependency: transitive description: name: flutter_local_notifications_platform_interface - sha256: "340abf67df238f7f0ef58f4a26d2a83e1ab74c77ab03cd2b2d5018ac64db30b7" + sha256: "85f8d07fe708c1bdcf45037f2c0109753b26ae077e9d9e899d55971711a4ea66" url: "https://pub.dev" source: hosted - version: "7.1.0" + version: "7.2.0" flutter_localizations: dependency: "direct main" description: flutter @@ -513,10 +537,10 @@ packages: dependency: transitive description: name: gotrue - sha256: b7324a9113bb21c354fd52531d9a9dba6570a9c37b2fc6b424865feb19974476 + sha256: a8784341bcc08f88ba7a4b04a40a37059c7e71c315f058d45c31d09e8a951194 url: "https://pub.dev" source: hosted - version: "2.8.0" + version: "2.8.3" gtk: dependency: transitive description: @@ -537,10 +561,10 @@ packages: dependency: transitive description: name: http - sha256: "761a297c042deedc1ffbb156d6e2af13886bb305c2a343a4d972504cd67dd938" + sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010 url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.2.2" http_parser: dependency: transitive description: @@ -593,10 +617,10 @@ packages: dependency: transitive description: name: just_audio - sha256: "5abfab1d199e01ab5beffa61b3e782350df5dad036cb8c83b79fa45fc656614e" + sha256: ee50602364ba83fa6308f5512dd560c713ec3e1f2bc75f0db43618f0d82ef71a url: "https://pub.dev" source: hosted - version: "0.9.38" + version: "0.9.39" just_audio_platform_interface: dependency: transitive description: @@ -665,10 +689,10 @@ packages: dependency: transitive description: name: logger - sha256: af05cc8714f356fd1f3888fb6741cbe9fbe25cdb6eedbab80e1a6db21047d4a4 + sha256: "697d067c60c20999686a0add96cf6aba723b3aa1f83ecf806a8097231529ec32" url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.4.0" logging: dependency: transitive description: @@ -777,10 +801,10 @@ packages: dependency: transitive description: name: path_provider_android - sha256: "9c96da072b421e98183f9ea7464898428e764bc0ce5567f27ec8693442e72514" + sha256: "30c5aa827a6ae95ce2853cdc5fe3971daaac00f6f081c419c013f7f57bff2f5e" url: "https://pub.dev" source: hosted - version: "2.2.5" + version: "2.2.7" path_provider_foundation: dependency: transitive description: @@ -809,18 +833,18 @@ packages: dependency: transitive description: name: path_provider_windows - sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170" + sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7 url: "https://pub.dev" source: hosted - version: "2.2.1" + version: "2.3.0" pdf: dependency: "direct main" description: name: pdf - sha256: "243f05342fc0bdf140eba5b069398985cdbdd3dbb1d776cf43d5ea29cc570ba6" + sha256: "81d5522bddc1ef5c28e8f0ee40b71708761753c163e0c93a40df56fd515ea0f0" url: "https://pub.dev" source: hosted - version: "3.10.8" + version: "3.11.0" permission_handler: dependency: "direct main" description: @@ -913,10 +937,10 @@ packages: dependency: transitive description: name: qr - sha256: "64957a3930367bf97cc211a5af99551d630f2f4625e38af10edd6b19131b64b3" + sha256: "5a1d2586170e172b8a8c8470bbbffd5eb0cd38a66c0d77155ea138d3af3a4445" url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.2" quiver: dependency: "direct main" description: @@ -945,42 +969,42 @@ packages: dependency: transitive description: name: realtime_client - sha256: cd44fa21407a2e217d674f1c1a33b36c49ad0d8aea0349bf5b66594db06c80fb + sha256: a99b7817e203c57ada746e9fe113820410cf84d9029f4310c57737aae890b0f7 url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.2.0" record: dependency: "direct main" description: name: record - sha256: "78353d3d55fa145ffe1db1f63232ad0a0cd4c773e9f7d161210ce796ba1c94f9" + sha256: "4a5cf4d083d1ee49e0878823c4397d073f8eb0a775f31215d388e2bc47a9e867" url: "https://pub.dev" source: hosted - version: "5.1.1" + version: "5.1.2" record_android: dependency: transitive description: name: record_android - sha256: fe83beefc8ac81b9dd02ca9365e8685755e3f12be1d442964082f1d5b618183d + sha256: "9ccf6a206dc72b486cf37893690e70c17610e8f05dba8da1a808e73dc2f49a04" url: "https://pub.dev" source: hosted - version: "1.2.2" + version: "1.2.4" record_darwin: dependency: transitive description: name: record_darwin - sha256: "2210da0fde7c86b4048cccfe2cd19b25fc7adf1ada7d50ec4a5ab4af2a863739" + sha256: b038c26d1066eb81f4e7433bfb85f0d450ca3fac0002a7216b83a21b775ecf21 url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" record_linux: dependency: transitive description: name: record_linux - sha256: "7d0e70cd51635128fe9d37d89bafd6011d7cbba9af8dc323079ae60f23546aef" + sha256: "74d41a9ebb1eb498a38e9a813dd524e8f0b4fdd627270bda9756f437b110a3e3" url: "https://pub.dev" source: hosted - version: "0.7.1" + version: "0.7.2" record_platform_interface: dependency: transitive description: @@ -1025,26 +1049,26 @@ packages: dependency: transitive description: name: sentry - sha256: fd1fbfe860c05f5c52820ec4dbf2b6473789e83ead26cfc18bca4fe80bf3f008 + sha256: "60756499f09c3ed944640d7993ac527a89f7c3033f13ec12ae145706b269b5c8" url: "https://pub.dev" source: hosted - version: "8.2.0" + version: "8.5.0" sentry_flutter: dependency: "direct main" description: name: sentry_flutter - sha256: c64f0aec5332bec87083b61514d1b6b29e435b9045d03ce1575861192b9a5680 + sha256: "26cfe89cb08a60d9bc0c4e748a0508e223ae378265aec8ed2a2b48f0d2c936b9" url: "https://pub.dev" source: hosted - version: "8.2.0" + version: "8.5.0" sentry_logging: dependency: "direct main" description: name: sentry_logging - sha256: edfc054d65f0257303540f9fe76820005a710440eee062052efdff5252ecc121 + sha256: "5dc8d19c4dd82723b5f8ce9469416effe337a6efb8c4c9cb4584f5b1bf467cb7" url: "https://pub.dev" source: hosted - version: "8.2.0" + version: "8.5.0" shared_preferences: dependency: "direct main" description: @@ -1081,10 +1105,10 @@ packages: dependency: transitive description: name: shared_preferences_platform_interface - sha256: "22e2ecac9419b4246d7c22bfbbda589e3acf5c0351137d87dd2939d984d37c3b" + sha256: "034650b71e73629ca08a0bd789fd1d83cc63c2d1e405946f7cef7bc37432f93a" url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.4.0" shared_preferences_web: dependency: transitive description: @@ -1196,18 +1220,42 @@ packages: dependency: "direct main" description: name: supabase - sha256: "1133466d2ec9441e7cff6bf73943f0a6e17cbb5044f6327ca93e3dddc567c882" + sha256: "91196ce9137e726ba137419318e4cd8c5266922729c991b40bd9a592b2867002" url: "https://pub.dev" source: hosted - version: "2.2.1" + version: "2.2.5" supabase_flutter: dependency: "direct main" description: name: supabase_flutter - sha256: "521de6a72fefc0447bd052b0a33be30ed429ac8c39d9028dfbf0f9af2c4c93b2" + sha256: "4ce9a251448a8d03d5bdcbd8700d480b378ad451dab9ce637e41a01ee58ec1b9" + url: "https://pub.dev" + source: hosted + version: "2.5.9" + syncfusion_flutter_charts: + dependency: "direct main" + description: + name: syncfusion_flutter_charts + sha256: "0222ac9d8cb6c671f014effe9bd5c0aef35eadb16471355345ba87cc0ac007b3" url: "https://pub.dev" source: hosted - version: "2.5.5" + version: "20.4.54" + syncfusion_flutter_core: + dependency: transitive + description: + name: syncfusion_flutter_core + sha256: "3979f0b1c5a97422cadae52d476c21fa3e0fb671ef51de6cae1d646d8b99fe1f" + url: "https://pub.dev" + source: hosted + version: "20.4.54" + syncfusion_flutter_gauges: + dependency: "direct main" + description: + name: syncfusion_flutter_gauges + sha256: "6b7a901a33345511080d74770dfcdc37d30a15667c73819932786b95b3ec2dfb" + url: "https://pub.dev" + source: hosted + version: "20.4.54" synchronized: dependency: transitive description: @@ -1244,10 +1292,10 @@ packages: dependency: "direct main" description: name: timezone - sha256: a6ccda4a69a442098b602c44e61a1e2b4bf6f5516e875bbf0f427d5df14745d5 + sha256: "2236ec079a174ce07434e89fcd3fcda430025eb7692244139a9cf54fdcf1fc7d" url: "https://pub.dev" source: hosted - version: "0.9.3" + version: "0.9.4" typed_data: dependency: transitive description: @@ -1284,18 +1332,18 @@ packages: dependency: transitive description: name: url_launcher_android - sha256: ceb2625f0c24ade6ef6778d1de0b2e44f2db71fded235eb52295247feba8c5cf + sha256: "95d8027db36a0e52caf55680f91e33ea6aa12a3ce608c90b06f4e429a21067ac" url: "https://pub.dev" source: hosted - version: "6.3.3" + version: "6.3.5" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - sha256: "7068716403343f6ba4969b4173cbf3b84fc768042124bc2c011e5d782b24fe89" + sha256: e43b677296fadce447e987a2f519dcf5f6d1e527dc35d01ffab4fff5b8a7063e url: "https://pub.dev" source: hosted - version: "6.3.0" + version: "6.3.1" url_launcher_linux: dependency: transitive description: @@ -1332,18 +1380,18 @@ packages: dependency: transitive description: name: url_launcher_windows - sha256: ecf9725510600aa2bb6d7ddabe16357691b6d2805f66216a97d1b881e21beff7 + sha256: "49c10f879746271804767cb45551ec5592cdab00ee105c06dddde1a98f73b185" url: "https://pub.dev" source: hosted - version: "3.1.1" + version: "3.1.2" uuid: dependency: "direct main" description: name: uuid - sha256: "814e9e88f21a176ae1359149021870e87f7cddaf633ab678a5d2b0bff7fd1ba8" + sha256: "83d37c7ad7aaf9aa8e275490669535c8080377cfa7a7004c24dfac53afffaa90" url: "https://pub.dev" source: hosted - version: "4.4.0" + version: "4.4.2" vector_graphics: dependency: transitive description: @@ -1380,18 +1428,18 @@ packages: dependency: transitive description: name: video_player - sha256: aced48e701e24c02b0b7f881a8819e4937794e46b5a5821005e2bf3b40a324cc + sha256: e30df0d226c4ef82e2c150ebf6834b3522cf3f654d8e2f9419d376cdc071425d url: "https://pub.dev" source: hosted - version: "2.8.7" + version: "2.9.1" video_player_android: dependency: transitive description: name: video_player_android - sha256: "9529001630e42988f755772972d5014d30121610700e8e502278a245939f8fc8" + sha256: fdc0331ce9f808cc2714014cb8126bd6369943affefd54f8fdab0ea0bb617b7f url: "https://pub.dev" source: hosted - version: "2.5.0" + version: "2.5.2" video_player_avfoundation: dependency: transitive description: @@ -1484,10 +1532,10 @@ packages: dependency: transitive description: name: webview_flutter_wkwebview - sha256: "7affdf9d680c015b11587181171d3cad8093e449db1f7d9f0f08f4f33d24f9a0" + sha256: "9c62cc46fa4f2d41e10ab81014c1de470a6c6f26051a2de32111b2ee55287feb" url: "https://pub.dev" source: hosted - version: "3.13.1" + version: "3.14.0" win32: dependency: transitive description: diff --git a/app/pubspec.yaml b/app/pubspec.yaml index 9e253d580..8f2d15464 100644 --- a/app/pubspec.yaml +++ b/app/pubspec.yaml @@ -43,6 +43,8 @@ dependencies: studyu_flutter_common: ^1.8.4-dev.1 supabase: ^2.2.1 supabase_flutter: ^2.5.5 + syncfusion_flutter_charts: ^20.1.47 + syncfusion_flutter_gauges: ^20.1.59 timeline_tile: ^2.0.0 timezone: ^0.9.3 universal_html: ^2.2.4 diff --git a/pubspec.lock b/pubspec.lock index 1763e538e..1100f981c 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -57,14 +57,22 @@ packages: url: "https://pub.dev" source: hosted version: "0.4.1" + clock: + dependency: transitive + description: + name: clock + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" + source: hosted + version: "1.1.1" collection: dependency: transitive description: name: collection - sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a + sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf url: "https://pub.dev" source: hosted - version: "1.18.0" + version: "1.19.0" conventional_commit: dependency: transitive description: @@ -93,26 +101,34 @@ packages: dependency: transitive description: name: graphs - sha256: aedc5a15e78fc65a6e23bcd927f24c64dd995062bcd1ca6eda65a3cff92a4d19 + sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.2" http: dependency: transitive description: name: http - sha256: "761a297c042deedc1ffbb156d6e2af13886bb305c2a343a4d972504cd67dd938" + sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010 url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.2.2" http_parser: dependency: transitive description: name: http_parser - sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" + sha256: "40f592dd352890c3b60fec1b68e786cefb9603e05ff303dbc4dda49b304ecdf4" url: "https://pub.dev" source: hosted - version: "4.0.2" + version: "4.1.0" + intl: + dependency: transitive + description: + name: intl + sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf + url: "https://pub.dev" + source: hosted + version: "0.19.0" io: dependency: transitive description: @@ -149,10 +165,10 @@ packages: dependency: "direct dev" description: name: melos - sha256: f9a6fc4f4842b7edfca2e00ab3b5b06928584f24bdc3d776ab0b30be7d599450 + sha256: a3f06ed871e0348cb99909ad5ddf5f8b53cc61d894c302b5417d2db1ee7ec381 url: "https://pub.dev" source: hosted - version: "6.0.0" + version: "6.1.0" meta: dependency: transitive description: @@ -269,10 +285,10 @@ packages: dependency: transitive description: name: string_scanner - sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.3.0" term_glyph: dependency: transitive description: @@ -285,10 +301,10 @@ packages: dependency: transitive description: name: test_api - sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb" + sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" url: "https://pub.dev" source: hosted - version: "0.7.2" + version: "0.7.3" typed_data: dependency: transitive description: @@ -309,10 +325,10 @@ packages: dependency: transitive description: name: web - sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27" + sha256: d43c1d6b787bf0afad444700ae7f4db8827f701bc61c255ac8d328c6f4d52062 url: "https://pub.dev" source: hosted - version: "0.5.1" + version: "1.0.0" yaml: dependency: transitive description: @@ -330,4 +346,4 @@ packages: source: hosted version: "2.2.1" sdks: - dart: ">=3.3.0 <4.0.0" + dart: ">=3.4.0 <4.0.0"