diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 092908bc..038b10ba 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -14,12 +14,13 @@ PODS: - camera_avfoundation (0.0.1): - Flutter - Flutter (1.0.0) - - flutter_secure_storage (6.0.0): + - flutter_secure_storage_darwin (10.0.0): - Flutter - - fvp (0.35.1): + - FlutterMacOS + - fvp (0.35.2): - Flutter - FlutterMacOS - - mdk (~> 0.35.0) + - mdk (~> 0.35.1) - GCDWebServer (3.5.4): - GCDWebServer/Core (= 3.5.4) - GCDWebServer/Core (3.5.4) @@ -28,7 +29,7 @@ PODS: - PINCache (>= 3.0.1-beta.3) - image_picker_ios (0.0.1): - Flutter - - mdk (0.35.0) + - mdk (0.35.1) - package_info_plus (0.4.5): - Flutter - path_provider_foundation (0.0.1): @@ -42,7 +43,7 @@ PODS: - PINCache/Core (3.0.4): - PINOperation (~> 1.2.3) - PINOperation (1.2.3) - - PostHog (3.35.0) + - PostHog (3.37.1) - posthog_flutter (0.0.1): - Flutter - FlutterMacOS @@ -69,7 +70,7 @@ DEPENDENCIES: - better_player_plus (from `.symlinks/plugins/better_player_plus/ios`) - camera_avfoundation (from `.symlinks/plugins/camera_avfoundation/ios`) - Flutter (from `Flutter`) - - flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`) + - flutter_secure_storage_darwin (from `.symlinks/plugins/flutter_secure_storage_darwin/darwin`) - fvp (from `.symlinks/plugins/fvp/darwin`) - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`) - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`) @@ -103,8 +104,8 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/camera_avfoundation/ios" Flutter: :path: Flutter - flutter_secure_storage: - :path: ".symlinks/plugins/flutter_secure_storage/ios" + flutter_secure_storage_darwin: + :path: ".symlinks/plugins/flutter_secure_storage_darwin/darwin" fvp: :path: ".symlinks/plugins/fvp/darwin" image_picker_ios: @@ -135,17 +136,17 @@ SPEC CHECKSUMS: Cache: 4ca7e00363fca5455f26534e5607634c820ffc2d camera_avfoundation: 5675ca25298b6f81fa0a325188e7df62cc217741 Flutter: cabc95a1d2626b1b06e7179b784ebcf0c0cde467 - flutter_secure_storage: 1ed9476fba7e7a782b22888f956cce43e2c62f13 - fvp: 5a47a325ffa8d63e70a276a6436416ae703206a5 + flutter_secure_storage_darwin: acdb3f316ed05a3e68f856e0353b133eec373a23 + fvp: 4fe77c2b30122233a57f425dafd219ed35565809 GCDWebServer: 2c156a56c8226e2d5c0c3f208a3621ccffbe3ce4 HLSCachingReverseProxyServer: 59935e1e0244ad7f3375d75b5ef46e8eb26ab181 image_picker_ios: e0ece4aa2a75771a7de3fa735d26d90817041326 - mdk: baa616b93f696c7066df0e5ebe057badfa9c462b + mdk: 59bbe9e2ac2a052455ab1b076c245680d66cf6c0 package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499 path_provider_foundation: bb55f6dbba17d0dccd6737fe6f7f34fbd0376880 PINCache: d9a87a0ff397acffe9e2f0db972ac14680441158 PINOperation: fb563bcc9c32c26d6c78aaff967d405aa2ee74a7 - PostHog: da83ef8bee8c21ccb2b3680054e22c85d352f142 + PostHog: cf23456d5de1c19efe5823437069440a12198c91 posthog_flutter: 9535ac2d4ab65ccb9ace3886dcc0b3105198bad5 pro_video_editor: 44ef9a6d48dbd757ed428cf35396dd05f35c7830 shared_preferences_foundation: 7036424c3d8ec98dfe75ff1667cb0cd531ec82bb diff --git a/lib/src/core/design_system/components/atoms/toggles/follow_button.dart b/lib/src/core/design_system/components/atoms/toggles/follow_button.dart index 5e42e212..a719b866 100644 --- a/lib/src/core/design_system/components/atoms/toggles/follow_button.dart +++ b/lib/src/core/design_system/components/atoms/toggles/follow_button.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:sparksocial/src/core/design_system/components/atoms/buttons/interactive_pressable.dart'; import 'package:sparksocial/src/core/design_system/tokens/colors.dart'; import 'package:sparksocial/src/core/design_system/tokens/typography.dart'; @@ -33,7 +34,10 @@ class FollowButton extends StatelessWidget { if (isBlocking && onUnblock != null) { return InteractivePressable( - onTap: onUnblock, + onTap: () { + HapticFeedback.mediumImpact(); + onUnblock!(); + }, borderRadius: const BorderRadius.all(Radius.circular(8)), child: Container( width: width ?? 109.47, @@ -61,7 +65,14 @@ class FollowButton extends StatelessWidget { } return InteractivePressable( - onTap: isFollowing ? onUnfollow : onFollow, + onTap: () { + HapticFeedback.mediumImpact(); + if (isFollowing) { + onUnfollow(); + } else { + onFollow(); + } + }, borderRadius: const BorderRadius.all(Radius.circular(8)), child: Container( width: width ?? 109.47, diff --git a/lib/src/core/design_system/components/atoms/toggles/glass_follow_button.dart b/lib/src/core/design_system/components/atoms/toggles/glass_follow_button.dart index 30cc852e..9d071287 100644 --- a/lib/src/core/design_system/components/atoms/toggles/glass_follow_button.dart +++ b/lib/src/core/design_system/components/atoms/toggles/glass_follow_button.dart @@ -1,5 +1,6 @@ import 'dart:ui'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:sparksocial/src/core/design_system/tokens/typography.dart'; class GlassFollowButton extends StatelessWidget { @@ -21,7 +22,14 @@ class GlassFollowButton extends StatelessWidget { @override Widget build(BuildContext context) { return GestureDetector( - onTap: isFollowing ? onUnfollow : onFollow, + onTap: () { + HapticFeedback.mediumImpact(); + if (isFollowing) { + onUnfollow(); + } else { + onFollow(); + } + }, child: ClipRRect( borderRadius: BorderRadius.circular(100), child: BackdropFilter( diff --git a/lib/src/core/network/atproto/data/models/feed_models.dart b/lib/src/core/network/atproto/data/models/feed_models.dart index 1f64f41d..838d3f82 100644 --- a/lib/src/core/network/atproto/data/models/feed_models.dart +++ b/lib/src/core/network/atproto/data/models/feed_models.dart @@ -591,16 +591,31 @@ sealed class EmbedViewRecord with _$EmbedViewRecord { }) = EmbedViewRecord_Blocked; factory EmbedViewRecord.fromJson(Map json) { - // Handle unsupported record embed types by returning notFound (uses adapter's list) final type = json[r'$type'] as String?; + // Handle unsupported record embed types by returning notFound (uses adapter's list) if (BskyFeedAdapter.isUnsupportedEmbedType(type)) { return EmbedViewRecord.notFound( uri: AtUri.parse(json['uri'] as String? ?? 'at://unknown'), notFound: true, ); } - return _$EmbedViewRecordFromJson(json); + // Route to appropriate subtype based on $type + return switch (type) { + 'app.bsky.embed.record#viewRecord' => _$EmbedViewRecord_RecordFromJson(json), + 'app.bsky.embed.record#viewNotFound' => _$EmbedViewRecord_NotFoundFromJson(json), + 'app.bsky.embed.record#viewBlocked' => _$EmbedViewRecord_BlockedFromJson(json), + _ => EmbedViewRecord.notFound( + uri: AtUri.parse(json['uri'] as String? ?? 'at://unknown'), + notFound: true, + ), + }; } + + Map toJson() => switch (this) { + EmbedViewRecord_Record() => (this as EmbedViewRecord_Record).toJson(), + EmbedViewRecord_NotFound() => (this as EmbedViewRecord_NotFound).toJson(), + EmbedViewRecord_Blocked() => (this as EmbedViewRecord_Blocked).toJson(), + }; } @freezed diff --git a/lib/src/features/comments/ui/widgets/comment_input.dart b/lib/src/features/comments/ui/widgets/comment_input.dart index f47fb5db..b1e00133 100644 --- a/lib/src/features/comments/ui/widgets/comment_input.dart +++ b/lib/src/features/comments/ui/widgets/comment_input.dart @@ -2,6 +2,7 @@ import 'dart:io'; // Import for File import 'package:fluentui_system_icons/fluentui_system_icons.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:image_picker/image_picker.dart'; // Import image_picker import 'package:sparksocial/src/core/ui/widgets/alt_text_editor_dialog.dart'; @@ -168,6 +169,7 @@ class _TextField extends StatelessWidget { ), onPressed: () { if (state.canSubmit) { + HapticFeedback.mediumImpact(); // Use reply info if available, otherwise use main post info final parentCid = widget.postCid; final parentUri = widget.postUri; diff --git a/lib/src/features/feed/ui/widgets/action_buttons/side_action_bar.dart b/lib/src/features/feed/ui/widgets/action_buttons/side_action_bar.dart index 14c8ed18..b4206409 100644 --- a/lib/src/features/feed/ui/widgets/action_buttons/side_action_bar.dart +++ b/lib/src/features/feed/ui/widgets/action_buttons/side_action_bar.dart @@ -1,6 +1,7 @@ import 'package:atproto/core.dart'; import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:get_it/get_it.dart'; import 'package:sparksocial/src/core/design_system/components/organisms/side_action_bar.dart'; @@ -92,6 +93,7 @@ class SideActionBarState extends ConsumerState { } Future _handleLike() async { + HapticFeedback.mediumImpact(); final wasLiked = _isLiked; setState(() { _isLiked = !_isLiked; @@ -149,6 +151,7 @@ class SideActionBarState extends ConsumerState { } Future _handleRepost() async { + HapticFeedback.lightImpact(); final wasReposted = _isReposted; setState(() { _isReposted = !_isReposted; diff --git a/lib/src/features/feed/ui/widgets/post/feed_post_widget.dart b/lib/src/features/feed/ui/widgets/post/feed_post_widget.dart index 3cfd2161..e99a60da 100644 --- a/lib/src/features/feed/ui/widgets/post/feed_post_widget.dart +++ b/lib/src/features/feed/ui/widgets/post/feed_post_widget.dart @@ -2,6 +2,7 @@ import 'package:atproto/com_atproto_label_defs.dart'; import 'package:atproto/core.dart'; import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:sparksocial/src/core/network/atproto/data/models/feed_models.dart'; import 'package:sparksocial/src/core/routing/app_router.dart'; @@ -76,6 +77,9 @@ class _FeedPostWidgetState extends ConsumerState { return; } + // Haptic feedback for the like action + HapticFeedback.mediumImpact(); + // Start heart animation setState(() { _isAnimatingHeart = true; diff --git a/lib/src/features/messages/ui/widgets/message_input.dart b/lib/src/features/messages/ui/widgets/message_input.dart index 197c4de7..30dcf82e 100644 --- a/lib/src/features/messages/ui/widgets/message_input.dart +++ b/lib/src/features/messages/ui/widgets/message_input.dart @@ -1,5 +1,6 @@ import 'package:fluentui_system_icons/fluentui_system_icons.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:image_picker/image_picker.dart'; import 'package:sparksocial/src/core/ui/foundation/colors.dart'; @@ -77,7 +78,12 @@ class MessageInput extends ConsumerWidget { Container( decoration: const BoxDecoration(color: AppColors.primary, shape: BoxShape.circle), child: IconButton( - onPressed: isLoading ? null : onSend, + onPressed: isLoading + ? null + : () { + HapticFeedback.mediumImpact(); + onSend(); + }, icon: isLoading ? const SizedBox( width: 16, diff --git a/pubspec.lock b/pubspec.lock index e002857f..af38ebde 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -93,18 +93,18 @@ packages: dependency: "direct main" description: name: atproto - sha256: "33a8355a7eee37c87ac08242911693a6037ebb0a39cde8f6a7cc52e09324c4f9" + sha256: "160da2b0bc9207336aee4be8bf67a801f4eb2d7e7574550b2ab8e6bbac8728d4" url: "https://pub.dev" source: hosted - version: "1.2.4" + version: "1.3.0" atproto_core: dependency: "direct main" description: name: atproto_core - sha256: "0f060b31745d01bcf73e8a25fc1c24ecf14dc78039d59a526ae9d7653f4f8fe7" + sha256: d8938e1fbde4eb7cea57129b8c2e0ec1e680e0197a5e46bae49f8e3d85aa36f4 url: "https://pub.dev" source: hosted - version: "1.0.7" + version: "1.1.0" atproto_oauth: dependency: transitive description: @@ -213,10 +213,10 @@ packages: dependency: "direct main" description: name: bluesky - sha256: eea4944e15fca6c72838cdfcd1ed440a4da450e3f97d0f420c80c63229bcdddf + sha256: "37b970b31b4b4b7ba0a6416f11133005854ae409f452e0d90266f465e35f33ae" url: "https://pub.dev" source: hosted - version: "1.2.6" + version: "1.3.0" boolean_selector: dependency: transitive description: @@ -325,10 +325,10 @@ packages: dependency: transitive description: name: camera_avfoundation - sha256: "035b90c1e33c2efad7548f402572078f6e514d4f82be0a315cd6c6af7e855aa8" + sha256: "087a9fadef20325cb246b4c13344a3ce8e408acfc3e0c665ebff0ec3144d7163" url: "https://pub.dev" source: hosted - version: "0.9.22+6" + version: "0.9.22+8" camera_platform_interface: dependency: transitive description: @@ -341,10 +341,10 @@ packages: dependency: transitive description: name: camera_web - sha256: "3bc7bb1657a0f29c34116453c5d5e528c23efcf5e75aac0a3387cf108040bf65" + sha256: "57f49a635c8bf249d07fb95eb693d7e4dda6796dedb3777f9127fb54847beba7" url: "https://pub.dev" source: hosted - version: "0.3.5+2" + version: "0.3.5+3" carousel_slider: dependency: "direct main" description: @@ -405,10 +405,10 @@ packages: dependency: transitive description: name: code_builder - sha256: "11654819532ba94c34de52ff5feb52bd81cba1de00ef2ed622fd50295f9d4243" + sha256: "6a6cab2ba4680d6423f34a9b972a4c9a94ebe1b62ecec4e1a1f2cba91fd1319d" url: "https://pub.dev" source: hosted - version: "4.11.0" + version: "4.11.1" collection: dependency: "direct main" description: @@ -525,10 +525,10 @@ packages: dependency: transitive description: name: ffi - sha256: "289279317b4b16eb2bb7e271abccd4bf84ec9bdcbe999e278a94b804f5630418" + sha256: d07d37192dbf97461359c1518788f203b0c9102cfd2c35a716b823741219542c url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.1.5" file: dependency: transitive description: @@ -610,10 +610,10 @@ packages: dependency: "direct main" description: name: flutter_dotenv - sha256: b7c7be5cd9f6ef7a78429cabd2774d3c4af50e79cb2b7593e3d5d763ef95c61b + sha256: d4130c4a43e0b13fefc593bc3961f2cb46e30cb79e253d4a526b1b5d24ae1ce4 url: "https://pub.dev" source: hosted - version: "5.2.1" + version: "6.0.0" flutter_launcher_icons: dependency: "direct dev" description: @@ -655,50 +655,50 @@ packages: dependency: "direct main" description: name: flutter_secure_storage - sha256: "9cad52d75ebc511adfae3d447d5d13da15a55a92c9410e50f67335b6d21d16ea" + sha256: da922f2aab2d733db7e011a6bcc4a825b844892d4edd6df83ff156b09a9b2e40 url: "https://pub.dev" source: hosted - version: "9.2.4" - flutter_secure_storage_linux: + version: "10.0.0" + flutter_secure_storage_darwin: dependency: transitive description: - name: flutter_secure_storage_linux - sha256: be76c1d24a97d0b98f8b54bce6b481a380a6590df992d0098f868ad54dc8f688 + name: flutter_secure_storage_darwin + sha256: "8878c25136a79def1668c75985e8e193d9d7d095453ec28730da0315dc69aee3" url: "https://pub.dev" source: hosted - version: "1.2.3" - flutter_secure_storage_macos: + version: "0.2.0" + flutter_secure_storage_linux: dependency: transitive description: - name: flutter_secure_storage_macos - sha256: "6c0a2795a2d1de26ae202a0d78527d163f4acbb11cde4c75c670f3a0fc064247" + name: flutter_secure_storage_linux + sha256: "2b5c76dce569ab752d55a1cee6a2242bcc11fdba927078fb88c503f150767cda" url: "https://pub.dev" source: hosted - version: "3.1.3" + version: "3.0.0" flutter_secure_storage_platform_interface: dependency: transitive description: name: flutter_secure_storage_platform_interface - sha256: cf91ad32ce5adef6fba4d736a542baca9daf3beac4db2d04be350b87f69ac4a8 + sha256: "8ceea1223bee3c6ac1a22dabd8feefc550e4729b3675de4b5900f55afcb435d6" url: "https://pub.dev" source: hosted - version: "1.1.2" + version: "2.0.1" flutter_secure_storage_web: dependency: transitive description: name: flutter_secure_storage_web - sha256: f4ebff989b4f07b2656fb16b47852c0aab9fed9b4ec1c70103368337bc1886a9 + sha256: "6a1137df62b84b54261dca582c1c09ea72f4f9a4b2fcee21b025964132d5d0c3" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "2.1.0" flutter_secure_storage_windows: dependency: transitive description: name: flutter_secure_storage_windows - sha256: b20b07cb5ed4ed74fc567b78a72936203f587eba460af1df11281c9326cd3709 + sha256: "3b7c8e068875dfd46719ff57c90d8c459c87f2302ed6b00ff006b3c9fcad1613" url: "https://pub.dev" source: hosted - version: "3.1.2" + version: "4.1.0" flutter_svg: dependency: "direct main" description: @@ -753,18 +753,18 @@ packages: dependency: "direct main" description: name: fvp - sha256: b0589714775781cec707daa34fcfe6131dc571690c95be8cd7ebe437df0e9248 + sha256: e03c4ba02c367cde8610c09325d085c9b1efe4f7d98a563950993a1fee17a28b url: "https://pub.dev" source: hosted - version: "0.35.1" + version: "0.35.2" get_it: dependency: "direct main" description: name: get_it - sha256: ae78de7c3f2304b8d81f2bb6e320833e5e81de942188542328f074978cc0efa9 + sha256: "1d648d2dd2047d7f7450d5727ca24ee435f240385753d90b49650e3cdff32e56" url: "https://pub.dev" source: hosted - version: "8.3.0" + version: "9.2.0" glob: dependency: transitive description: @@ -777,10 +777,10 @@ packages: dependency: "direct main" description: name: google_fonts - sha256: ba03d03bcaa2f6cb7bd920e3b5027181db75ab524f8891c8bc3aa603885b8055 + sha256: eefe5ee217f331627d8bbcf01f91b21c730bf66e225d6dc8a148370b0819168d url: "https://pub.dev" source: hosted - version: "6.3.3" + version: "7.0.0" gradient_borders: dependency: "direct main" description: @@ -857,10 +857,10 @@ packages: dependency: "direct main" description: name: image - sha256: "4e973fcf4caae1a4be2fa0a13157aa38a8f9cb049db6529aa00b4d71abc4d928" + sha256: "492bd52f6c4fbb6ee41f781ff27765ce5f627910e1e0cbecfa3d9add5562604c" url: "https://pub.dev" source: hosted - version: "4.5.4" + version: "4.7.2" image_picker: dependency: "direct main" description: @@ -953,10 +953,10 @@ packages: dependency: transitive description: name: js - sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + sha256: "53385261521cc4a0c4658fd0ad07a7d14591cf8fc33abbceae306ddb974888dc" url: "https://pub.dev" source: hosted - version: "0.6.7" + version: "0.7.2" json_annotation: dependency: "direct main" description: @@ -1001,10 +1001,10 @@ packages: dependency: transitive description: name: lean_builder - sha256: f3ddb3b2c29285a726d739f3eaa4877a2478068f975b51231d032711efbc02d8 + sha256: "6af3cfbf34400eb14b89fe20111e5981e7083362f00ea10b9ed2a6e833250d76" url: "https://pub.dev" source: hosted - version: "0.1.4" + version: "0.1.6" lints: dependency: transitive description: @@ -1069,6 +1069,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.2" + nanoid: + dependency: transitive + description: + name: nanoid + sha256: be3f8752d9046c825df2f3914195151eb876f3ad64b9d833dd0b799b77b8759e + url: "https://pub.dev" + source: hosted + version: "1.0.0" nested: dependency: transitive description: @@ -1233,10 +1241,10 @@ packages: dependency: "direct main" description: name: posthog_flutter - sha256: "93d26162898320a21c444732bab21be8f53690e70fd991e4fbbd90ac6f69b753" + sha256: "134457a6fc2b47238750d077449ca40eaede5f9d5008ad4dfc872ffee9e04489" url: "https://pub.dev" source: hosted - version: "5.9.1" + version: "5.11.0" pro_image_editor: dependency: "direct main" description: @@ -1250,7 +1258,7 @@ packages: description: path: "." ref: dev - resolved-ref: c7ad41b13b160e4a8b7a5b9a24efa83a0972fe69 + resolved-ref: f8c4678fe76ad8984fc03eeb0e1a45f6359fdc5b url: "https://github.com/sprksocial/pro_video_editor.git" source: git version: "0.3.0" @@ -1719,18 +1727,18 @@ packages: dependency: transitive description: name: video_player_android - sha256: d74b66f283afff135d5be0ceccca2ca74dff7df1e9b1eaca6bd4699875d3ae60 + sha256: ee4fd520b0cafa02e4a867a0f882092e727cdaa1a2d24762171e787f8a502b0a url: "https://pub.dev" source: hosted - version: "2.8.22" + version: "2.9.1" video_player_avfoundation: dependency: transitive description: name: video_player_avfoundation - sha256: e4d33b79a064498c6eb3a6a492b6a5012573d4943c28d566caf1a6c0840fe78d + sha256: d1eb970495a76abb35e5fa93ee3c58bd76fb6839e2ddf2fbb636674f2b971dd4 url: "https://pub.dev" source: hosted - version: "2.8.8" + version: "2.8.9" video_player_platform_interface: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index be1f1136..739eecfa 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -15,22 +15,22 @@ dependencies: sdk: flutter flutter_localizations: sdk: flutter - flutter_dotenv: ^5.1.0 + flutter_dotenv: ^6.0.0 cupertino_icons: ^1.0.8 cached_network_image: ^3.3.1 camera: ^0.11.1 path_provider: ^2.1.2 flutter_svg: ^2.2.0 - atproto: ^1.2.4 - bluesky: ^1.2.6 + atproto: ^1.3.0 + bluesky: ^1.3.0 http: ^1.2.0 url_launcher: ^6.2.5 shared_preferences: ^2.5.3 - fvp: ^0.35.1 + fvp: ^0.35.2 fluentui_system_icons: ^1.1.273 image_picker: ^1.0.7 path: ^1.9.1 - image: ^4.5.4 + image: ^4.7.2 flutter_cache_manager: ^3.3.1 synchronized: ^3.1.0 flutter_riverpod: ^3.0.3 @@ -38,10 +38,10 @@ dependencies: freezed: ^3.2.3 freezed_annotation: ^3.1.0 json_annotation: ^4.9.0 - get_it: ^8.0.3 + get_it: ^9.2.0 auto_route: ^10.1.0+1 - flutter_secure_storage: ^9.2.4 - atproto_core: ^1.0.7 + flutter_secure_storage: ^10.0.0 + atproto_core: ^1.1.0 sqflite: ^2.4.2 pool: ^1.5.0 collection: ^1.19.1 @@ -56,9 +56,9 @@ dependencies: path: fonts assets: path: assets - posthog_flutter: ^5.6.0 + posthog_flutter: ^5.11.0 pro_image_editor: ^12.0.0-beta.5 - google_fonts: ^6.3.2 + google_fonts: ^7.0.0 flutter_colorpicker: ^1.1.0 pro_video_editor: @@ -74,7 +74,7 @@ dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^6.0.0 - build_runner: ^2.5.4 + build_runner: ^2.10.4 riverpod_generator: ^3.0.3 json_serializable: ^6.7.1 auto_route_generator: ^10.2.3 diff --git a/widgetbook/macos/Flutter/GeneratedPluginRegistrant.swift b/widgetbook/macos/Flutter/GeneratedPluginRegistrant.swift index 60c53fd7..7a0eb616 100644 --- a/widgetbook/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/widgetbook/macos/Flutter/GeneratedPluginRegistrant.swift @@ -7,7 +7,7 @@ import Foundation import audioplayers_darwin import file_selector_macos -import flutter_secure_storage_macos +import flutter_secure_storage_darwin import fvp import package_info_plus import path_provider_foundation @@ -22,7 +22,7 @@ import wakelock_plus func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { AudioplayersDarwinPlugin.register(with: registry.registrar(forPlugin: "AudioplayersDarwinPlugin")) FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) - FlutterSecureStoragePlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStoragePlugin")) + FlutterSecureStorageDarwinPlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStorageDarwinPlugin")) FvpPlugin.register(with: registry.registrar(forPlugin: "FvpPlugin")) FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))