fix retransmission of media files + update dependencies

This commit is contained in:
otsmr 2026-02-12 23:04:17 +01:00
parent e6160990fe
commit b59687c5ca
46 changed files with 455 additions and 363 deletions

View file

@ -18,7 +18,7 @@ pluginManagement {
plugins { plugins {
id "dev.flutter.flutter-plugin-loader" version "1.0.0" id "dev.flutter.flutter-plugin-loader" version "1.0.0"
id "com.android.application" version '8.9.0' apply false id "com.android.application" version '8.9.1' apply false
// START: FlutterFire Configuration // START: FlutterFire Configuration
id "com.google.gms.google-services" version "4.3.15" apply false id "com.google.gms.google-services" version "4.3.15" apply false
// END: FlutterFire Configuration // END: FlutterFire Configuration

@ -1 +1 @@
Subproject commit 3a3a7e5a6323da5413e3dd8c21abfa7cbe1c3a6f Subproject commit 33111edeb285db34edeb9fd21762825babe71ab0

View file

@ -54,55 +54,55 @@ PODS:
- file_picker (0.0.1): - file_picker (0.0.1):
- DKImagePickerController/PhotoGallery - DKImagePickerController/PhotoGallery
- Flutter - Flutter
- Firebase (12.6.0): - Firebase (12.8.0):
- Firebase/Core (= 12.6.0) - Firebase/Core (= 12.8.0)
- Firebase/Core (12.6.0): - Firebase/Core (12.8.0):
- Firebase/CoreOnly - Firebase/CoreOnly
- FirebaseAnalytics (~> 12.6.0) - FirebaseAnalytics (~> 12.8.0)
- Firebase/CoreOnly (12.6.0): - Firebase/CoreOnly (12.8.0):
- FirebaseCore (~> 12.6.0) - FirebaseCore (~> 12.8.0)
- Firebase/Messaging (12.6.0): - Firebase/Messaging (12.8.0):
- Firebase/CoreOnly - Firebase/CoreOnly
- FirebaseMessaging (~> 12.6.0) - FirebaseMessaging (~> 12.8.0)
- firebase_core (4.3.0): - firebase_core (4.4.0):
- Firebase/CoreOnly (= 12.6.0) - Firebase/CoreOnly (= 12.8.0)
- Flutter - Flutter
- firebase_messaging (16.1.0): - firebase_messaging (16.1.1):
- Firebase/Messaging (= 12.6.0) - Firebase/Messaging (= 12.8.0)
- firebase_core - firebase_core
- Flutter - Flutter
- FirebaseAnalytics (12.6.0): - FirebaseAnalytics (12.8.0):
- FirebaseAnalytics/Default (= 12.6.0) - FirebaseAnalytics/Default (= 12.8.0)
- FirebaseCore (~> 12.6.0) - FirebaseCore (~> 12.8.0)
- FirebaseInstallations (~> 12.6.0) - FirebaseInstallations (~> 12.8.0)
- GoogleUtilities/AppDelegateSwizzler (~> 8.1) - GoogleUtilities/AppDelegateSwizzler (~> 8.1)
- GoogleUtilities/MethodSwizzler (~> 8.1) - GoogleUtilities/MethodSwizzler (~> 8.1)
- GoogleUtilities/Network (~> 8.1) - GoogleUtilities/Network (~> 8.1)
- "GoogleUtilities/NSData+zlib (~> 8.1)" - "GoogleUtilities/NSData+zlib (~> 8.1)"
- nanopb (~> 3.30910.0) - nanopb (~> 3.30910.0)
- FirebaseAnalytics/Default (12.6.0): - FirebaseAnalytics/Default (12.8.0):
- FirebaseCore (~> 12.6.0) - FirebaseCore (~> 12.8.0)
- FirebaseInstallations (~> 12.6.0) - FirebaseInstallations (~> 12.8.0)
- GoogleAppMeasurement/Default (= 12.6.0) - GoogleAppMeasurement/Default (= 12.8.0)
- GoogleUtilities/AppDelegateSwizzler (~> 8.1) - GoogleUtilities/AppDelegateSwizzler (~> 8.1)
- GoogleUtilities/MethodSwizzler (~> 8.1) - GoogleUtilities/MethodSwizzler (~> 8.1)
- GoogleUtilities/Network (~> 8.1) - GoogleUtilities/Network (~> 8.1)
- "GoogleUtilities/NSData+zlib (~> 8.1)" - "GoogleUtilities/NSData+zlib (~> 8.1)"
- nanopb (~> 3.30910.0) - nanopb (~> 3.30910.0)
- FirebaseCore (12.6.0): - FirebaseCore (12.8.0):
- FirebaseCoreInternal (~> 12.6.0) - FirebaseCoreInternal (~> 12.8.0)
- GoogleUtilities/Environment (~> 8.1) - GoogleUtilities/Environment (~> 8.1)
- GoogleUtilities/Logger (~> 8.1) - GoogleUtilities/Logger (~> 8.1)
- FirebaseCoreInternal (12.6.0): - FirebaseCoreInternal (12.8.0):
- "GoogleUtilities/NSData+zlib (~> 8.1)" - "GoogleUtilities/NSData+zlib (~> 8.1)"
- FirebaseInstallations (12.6.0): - FirebaseInstallations (12.8.0):
- FirebaseCore (~> 12.6.0) - FirebaseCore (~> 12.8.0)
- GoogleUtilities/Environment (~> 8.1) - GoogleUtilities/Environment (~> 8.1)
- GoogleUtilities/UserDefaults (~> 8.1) - GoogleUtilities/UserDefaults (~> 8.1)
- PromisesObjC (~> 2.4) - PromisesObjC (~> 2.4)
- FirebaseMessaging (12.6.0): - FirebaseMessaging (12.8.0):
- FirebaseCore (~> 12.6.0) - FirebaseCore (~> 12.8.0)
- FirebaseInstallations (~> 12.6.0) - FirebaseInstallations (~> 12.8.0)
- GoogleDataTransport (~> 10.1) - GoogleDataTransport (~> 10.1)
- GoogleUtilities/AppDelegateSwizzler (~> 8.1) - GoogleUtilities/AppDelegateSwizzler (~> 8.1)
- GoogleUtilities/Environment (~> 8.1) - GoogleUtilities/Environment (~> 8.1)
@ -129,39 +129,39 @@ PODS:
- gal (1.0.0): - gal (1.0.0):
- Flutter - Flutter
- FlutterMacOS - FlutterMacOS
- google_mlkit_barcode_scanning (0.14.1): - google_mlkit_barcode_scanning (0.14.2):
- Flutter - Flutter
- google_mlkit_commons - google_mlkit_commons
- GoogleMLKit/BarcodeScanning (~> 7.0.0) - GoogleMLKit/BarcodeScanning (~> 9.0.0)
- google_mlkit_commons (0.11.0): - google_mlkit_commons (0.11.1):
- Flutter - Flutter
- MLKitVision - MLKitVision (~> 10.0.0)
- google_mlkit_face_detection (0.13.1): - google_mlkit_face_detection (0.13.2):
- Flutter - Flutter
- google_mlkit_commons - google_mlkit_commons
- GoogleMLKit/FaceDetection (~> 7.0.0) - GoogleMLKit/FaceDetection (~> 9.0.0)
- GoogleAdsOnDeviceConversion (3.2.0): - GoogleAdsOnDeviceConversion (3.2.0):
- GoogleUtilities/Environment (~> 8.1) - GoogleUtilities/Environment (~> 8.1)
- GoogleUtilities/Logger (~> 8.1) - GoogleUtilities/Logger (~> 8.1)
- GoogleUtilities/Network (~> 8.1) - GoogleUtilities/Network (~> 8.1)
- nanopb (~> 3.30910.0) - nanopb (~> 3.30910.0)
- GoogleAppMeasurement/Core (12.6.0): - GoogleAppMeasurement/Core (12.8.0):
- GoogleUtilities/AppDelegateSwizzler (~> 8.1) - GoogleUtilities/AppDelegateSwizzler (~> 8.1)
- GoogleUtilities/MethodSwizzler (~> 8.1) - GoogleUtilities/MethodSwizzler (~> 8.1)
- GoogleUtilities/Network (~> 8.1) - GoogleUtilities/Network (~> 8.1)
- "GoogleUtilities/NSData+zlib (~> 8.1)" - "GoogleUtilities/NSData+zlib (~> 8.1)"
- nanopb (~> 3.30910.0) - nanopb (~> 3.30910.0)
- GoogleAppMeasurement/Default (12.6.0): - GoogleAppMeasurement/Default (12.8.0):
- GoogleAdsOnDeviceConversion (~> 3.2.0) - GoogleAdsOnDeviceConversion (~> 3.2.0)
- GoogleAppMeasurement/Core (= 12.6.0) - GoogleAppMeasurement/Core (= 12.8.0)
- GoogleAppMeasurement/IdentitySupport (= 12.6.0) - GoogleAppMeasurement/IdentitySupport (= 12.8.0)
- GoogleUtilities/AppDelegateSwizzler (~> 8.1) - GoogleUtilities/AppDelegateSwizzler (~> 8.1)
- GoogleUtilities/MethodSwizzler (~> 8.1) - GoogleUtilities/MethodSwizzler (~> 8.1)
- GoogleUtilities/Network (~> 8.1) - GoogleUtilities/Network (~> 8.1)
- "GoogleUtilities/NSData+zlib (~> 8.1)" - "GoogleUtilities/NSData+zlib (~> 8.1)"
- nanopb (~> 3.30910.0) - nanopb (~> 3.30910.0)
- GoogleAppMeasurement/IdentitySupport (12.6.0): - GoogleAppMeasurement/IdentitySupport (12.8.0):
- GoogleAppMeasurement/Core (= 12.6.0) - GoogleAppMeasurement/Core (= 12.8.0)
- GoogleUtilities/AppDelegateSwizzler (~> 8.1) - GoogleUtilities/AppDelegateSwizzler (~> 8.1)
- GoogleUtilities/MethodSwizzler (~> 8.1) - GoogleUtilities/MethodSwizzler (~> 8.1)
- GoogleUtilities/Network (~> 8.1) - GoogleUtilities/Network (~> 8.1)
@ -170,14 +170,14 @@ PODS:
- GoogleDataTransport (10.1.0): - GoogleDataTransport (10.1.0):
- nanopb (~> 3.30910.0) - nanopb (~> 3.30910.0)
- PromisesObjC (~> 2.4) - PromisesObjC (~> 2.4)
- GoogleMLKit/BarcodeScanning (7.0.0): - GoogleMLKit/BarcodeScanning (9.0.0):
- GoogleMLKit/MLKitCore - GoogleMLKit/MLKitCore
- MLKitBarcodeScanning (~> 6.0.0) - MLKitBarcodeScanning (~> 8.0.0)
- GoogleMLKit/FaceDetection (7.0.0): - GoogleMLKit/FaceDetection (9.0.0):
- GoogleMLKit/MLKitCore - GoogleMLKit/MLKitCore
- MLKitFaceDetection (~> 6.0.0) - MLKitFaceDetection (~> 8.0.0)
- GoogleMLKit/MLKitCore (7.0.0): - GoogleMLKit/MLKitCore (9.0.0):
- MLKitCommon (~> 12.0.0) - MLKitCommon (~> 14.0.0)
- GoogleToolboxForMac/Defines (4.2.1) - GoogleToolboxForMac/Defines (4.2.1)
- GoogleToolboxForMac/Logger (4.2.1): - GoogleToolboxForMac/Logger (4.2.1):
- GoogleToolboxForMac/Defines (= 4.2.1) - GoogleToolboxForMac/Defines (= 4.2.1)
@ -247,26 +247,26 @@ PODS:
- Mantle (2.2.0): - Mantle (2.2.0):
- Mantle/extobjc (= 2.2.0) - Mantle/extobjc (= 2.2.0)
- Mantle/extobjc (2.2.0) - Mantle/extobjc (2.2.0)
- MLImage (1.0.0-beta6) - MLImage (1.0.0-beta8)
- MLKitBarcodeScanning (6.0.0): - MLKitBarcodeScanning (8.0.0):
- MLKitCommon (~> 12.0) - MLKitCommon (~> 14.0)
- MLKitVision (~> 8.0) - MLKitVision (~> 10.0)
- MLKitCommon (12.0.0): - MLKitCommon (14.0.0):
- GoogleDataTransport (~> 10.0) - GoogleDataTransport (~> 10.0)
- GoogleToolboxForMac/Logger (< 5.0, >= 4.2.1) - GoogleToolboxForMac/Logger (< 5.0, >= 4.2.1)
- "GoogleToolboxForMac/NSData+zlib (< 5.0, >= 4.2.1)" - "GoogleToolboxForMac/NSData+zlib (< 5.0, >= 4.2.1)"
- GoogleUtilities/Logger (~> 8.0) - GoogleUtilities/Logger (~> 8.0)
- GoogleUtilities/UserDefaults (~> 8.0) - GoogleUtilities/UserDefaults (~> 8.0)
- GTMSessionFetcher/Core (< 4.0, >= 3.3.2) - GTMSessionFetcher/Core (< 4.0, >= 3.3.2)
- MLKitFaceDetection (6.0.0): - MLKitFaceDetection (8.0.0):
- MLKitCommon (~> 12.0) - MLKitCommon (~> 14.0)
- MLKitVision (~> 8.0) - MLKitVision (~> 10.0)
- MLKitVision (8.0.0): - MLKitVision (10.0.0):
- GoogleToolboxForMac/Logger (< 5.0, >= 4.2.1) - GoogleToolboxForMac/Logger (< 5.0, >= 4.2.1)
- "GoogleToolboxForMac/NSData+zlib (< 5.0, >= 4.2.1)" - "GoogleToolboxForMac/NSData+zlib (< 5.0, >= 4.2.1)"
- GTMSessionFetcher/Core (< 4.0, >= 3.3.2) - GTMSessionFetcher/Core (< 4.0, >= 3.3.2)
- MLImage (= 1.0.0-beta6) - MLImage (= 1.0.0-beta8)
- MLKitCommon (~> 12.0) - MLKitCommon (~> 14.0)
- nanopb (3.30910.0): - nanopb (3.30910.0):
- nanopb/decode (= 3.30910.0) - nanopb/decode (= 3.30910.0)
- nanopb/encode (= 3.30910.0) - nanopb/encode (= 3.30910.0)
@ -274,28 +274,21 @@ PODS:
- nanopb/encode (3.30910.0) - nanopb/encode (3.30910.0)
- no_screenshot (0.3.2-beta.3): - no_screenshot (0.3.2-beta.3):
- Flutter - Flutter
- ScreenProtectorKit (~> 1.3.1)
- objective_c (0.0.1):
- Flutter
- package_info_plus (0.4.5): - package_info_plus (0.4.5):
- Flutter - Flutter
- path_provider_foundation (0.0.1):
- Flutter
- FlutterMacOS
- permission_handler_apple (9.3.0): - permission_handler_apple (9.3.0):
- Flutter - Flutter
- PromisesObjC (2.4.0) - PromisesObjC (2.4.0)
- restart_app (0.0.1): - restart_app (0.0.1):
- Flutter - Flutter
- ScreenProtectorKit (1.3.1) - SDWebImage (5.21.6):
- SDWebImage (5.21.5): - SDWebImage/Core (= 5.21.6)
- SDWebImage/Core (= 5.21.5) - SDWebImage/Core (5.21.6)
- SDWebImage/Core (5.21.5)
- SDWebImageWebPCoder (0.15.0): - SDWebImageWebPCoder (0.15.0):
- libwebp (~> 1.0) - libwebp (~> 1.0)
- SDWebImage/Core (~> 5.17) - SDWebImage/Core (~> 5.17)
- Sentry/HybridSDK (8.56.2) - Sentry/HybridSDK (8.56.2)
- sentry_flutter (9.8.0): - sentry_flutter (9.13.0):
- Flutter - Flutter
- FlutterMacOS - FlutterMacOS
- Sentry/HybridSDK (= 8.56.2) - Sentry/HybridSDK (= 8.56.2)
@ -307,32 +300,32 @@ PODS:
- sqflite_darwin (0.0.4): - sqflite_darwin (0.0.4):
- Flutter - Flutter
- FlutterMacOS - FlutterMacOS
- sqlite3 (3.50.4): - sqlite3 (3.51.1):
- sqlite3/common (= 3.50.4) - sqlite3/common (= 3.51.1)
- sqlite3/common (3.50.4) - sqlite3/common (3.51.1)
- sqlite3/dbstatvtab (3.50.4): - sqlite3/dbstatvtab (3.51.1):
- sqlite3/common - sqlite3/common
- sqlite3/fts5 (3.50.4): - sqlite3/fts5 (3.51.1):
- sqlite3/common - sqlite3/common
- sqlite3/math (3.50.4): - sqlite3/math (3.51.1):
- sqlite3/common - sqlite3/common
- sqlite3/perf-threadsafe (3.50.4): - sqlite3/perf-threadsafe (3.51.1):
- sqlite3/common - sqlite3/common
- sqlite3/rtree (3.50.4): - sqlite3/rtree (3.51.1):
- sqlite3/common - sqlite3/common
- sqlite3/session (3.50.4): - sqlite3/session (3.51.1):
- sqlite3/common - sqlite3/common
- sqlite3_flutter_libs (0.0.1): - sqlite3_flutter_libs (0.0.1):
- Flutter - Flutter
- FlutterMacOS - FlutterMacOS
- sqlite3 (~> 3.50.4) - sqlite3 (~> 3.51.1)
- sqlite3/dbstatvtab - sqlite3/dbstatvtab
- sqlite3/fts5 - sqlite3/fts5
- sqlite3/math - sqlite3/math
- sqlite3/perf-threadsafe - sqlite3/perf-threadsafe
- sqlite3/rtree - sqlite3/rtree
- sqlite3/session - sqlite3/session
- SwiftProtobuf (1.33.3) - SwiftProtobuf (1.34.1)
- SwiftyGif (5.4.5) - SwiftyGif (5.4.5)
- url_launcher_ios (0.0.1): - url_launcher_ios (0.0.1):
- Flutter - Flutter
@ -373,9 +366,7 @@ DEPENDENCIES:
- in_app_purchase_storekit (from `.symlinks/plugins/in_app_purchase_storekit/darwin`) - in_app_purchase_storekit (from `.symlinks/plugins/in_app_purchase_storekit/darwin`)
- local_auth_darwin (from `.symlinks/plugins/local_auth_darwin/darwin`) - local_auth_darwin (from `.symlinks/plugins/local_auth_darwin/darwin`)
- no_screenshot (from `.symlinks/plugins/no_screenshot/ios`) - no_screenshot (from `.symlinks/plugins/no_screenshot/ios`)
- objective_c (from `.symlinks/plugins/objective_c/ios`)
- package_info_plus (from `.symlinks/plugins/package_info_plus/ios`) - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
- path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
- permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`) - permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`)
- restart_app (from `.symlinks/plugins/restart_app/ios`) - restart_app (from `.symlinks/plugins/restart_app/ios`)
- sentry_flutter (from `.symlinks/plugins/sentry_flutter/ios`) - sentry_flutter (from `.symlinks/plugins/sentry_flutter/ios`)
@ -413,7 +404,6 @@ SPEC REPOS:
- MLKitVision - MLKitVision
- nanopb - nanopb
- PromisesObjC - PromisesObjC
- ScreenProtectorKit
- SDWebImage - SDWebImage
- SDWebImageWebPCoder - SDWebImageWebPCoder
- Sentry - Sentry
@ -476,12 +466,8 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/local_auth_darwin/darwin" :path: ".symlinks/plugins/local_auth_darwin/darwin"
no_screenshot: no_screenshot:
:path: ".symlinks/plugins/no_screenshot/ios" :path: ".symlinks/plugins/no_screenshot/ios"
objective_c:
:path: ".symlinks/plugins/objective_c/ios"
package_info_plus: package_info_plus:
:path: ".symlinks/plugins/package_info_plus/ios" :path: ".symlinks/plugins/package_info_plus/ios"
path_provider_foundation:
:path: ".symlinks/plugins/path_provider_foundation/darwin"
permission_handler_apple: permission_handler_apple:
:path: ".symlinks/plugins/permission_handler_apple/ios" :path: ".symlinks/plugins/permission_handler_apple/ios"
restart_app: restart_app:
@ -514,14 +500,14 @@ SPEC CHECKSUMS:
emoji_picker_flutter: ece213fc274bdddefb77d502d33080dc54e616cc emoji_picker_flutter: ece213fc274bdddefb77d502d33080dc54e616cc
ffmpeg_kit_flutter_new: 12426a19f10ac81186c67c6ebc4717f8f4364b7f ffmpeg_kit_flutter_new: 12426a19f10ac81186c67c6ebc4717f8f4364b7f
file_picker: a0560bc09d61de87f12d246fc47d2119e6ef37be file_picker: a0560bc09d61de87f12d246fc47d2119e6ef37be
Firebase: a451a7b61536298fd5cbfe3a746fd40443a50679 Firebase: 9a58fdbc9d8655ed7b79a19cf9690bb007d3d46d
firebase_core: ba00a168e719694f38960502ceb560285603d073 firebase_core: ee30637e6744af8e0c12a6a1e8a9718506ec2398
firebase_messaging: bf0e29321927edc02a563c984dbfa5b063864b15 firebase_messaging: 343de01a8d3e18b60df0c6d37f7174c44ae38e02
FirebaseAnalytics: d0a97a0db6425e5a5d966340b87f92ca7b13a557 FirebaseAnalytics: f20bbad8cb7f65d8a5eaefeb424ae8800a31bdfc
FirebaseCore: 0e38ad5d62d980a47a64b8e9301ffa311457be04 FirebaseCore: 0dbad74bda10b8fb9ca34ad8f375fb9dd3ebef7c
FirebaseCoreInternal: 69bf1306a05b8ac43004f6cc1f804bb7b05b229e FirebaseCoreInternal: fe5fa466aeb314787093a7dce9f0beeaad5a2a21
FirebaseInstallations: 631b38da2e11a83daa4bfb482f79d286a5dfa7ad FirebaseInstallations: 6a14ab3d694ebd9f839c48d330da5547e9ca9dc0
FirebaseMessaging: a61bc42dcab3f7a346d94bbb54dab2c9435b18b2 FirebaseMessaging: 7f42cfd10ec64181db4e01b305a613791c8e782c
Flutter: cabc95a1d2626b1b06e7179b784ebcf0c0cde467 Flutter: cabc95a1d2626b1b06e7179b784ebcf0c0cde467
flutter_image_compress_common: 1697a328fd72bfb335507c6bca1a65fa5ad87df1 flutter_image_compress_common: 1697a328fd72bfb335507c6bca1a65fa5ad87df1
flutter_keyboard_visibility_temp_fork: 95b2d534bacf6ac62e7fcbe5c2a9e2c2a17ce06f flutter_keyboard_visibility_temp_fork: 95b2d534bacf6ac62e7fcbe5c2a9e2c2a17ce06f
@ -530,13 +516,13 @@ SPEC CHECKSUMS:
flutter_sharing_intent: 0c1e53949f09fa8df8ac2268505687bde8ff264c flutter_sharing_intent: 0c1e53949f09fa8df8ac2268505687bde8ff264c
flutter_volume_controller: c2be490cb0487e8b88d0d9fc2b7e1c139a4ebccb flutter_volume_controller: c2be490cb0487e8b88d0d9fc2b7e1c139a4ebccb
gal: baecd024ebfd13c441269ca7404792a7152fde89 gal: baecd024ebfd13c441269ca7404792a7152fde89
google_mlkit_barcode_scanning: 8f5987f244a43fe1167689c548342a5174108159 google_mlkit_barcode_scanning: 12d8422d8f7b00726dedf9cac00188a2b98750c2
google_mlkit_commons: 2abe6a70e1824e431d16a51085cb475b672c8aab google_mlkit_commons: a5e4ffae5bc59ea4c7b9025dc72cb6cb79dc1166
google_mlkit_face_detection: 754da2113a1952f063c7c5dc347ac6ae8934fb77 google_mlkit_face_detection: ee4b72cfae062b4c972204be955d83055a4bfd36
GoogleAdsOnDeviceConversion: d68c69dd9581a0f5da02617b6f377e5be483970f GoogleAdsOnDeviceConversion: d68c69dd9581a0f5da02617b6f377e5be483970f
GoogleAppMeasurement: 3bf40aff49a601af5da1c3345702fcb4991d35ee GoogleAppMeasurement: 72c9a682fec6290327ea5e3c4b829b247fcb2c17
GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7 GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7
GoogleMLKit: eff9e23ec1d90ea4157a1ee2e32a4f610c5b3318 GoogleMLKit: b1eee21a41c57704fe72483b15c85cb2c0cd7444
GoogleToolboxForMac: d1a2cbf009c453f4d6ded37c105e2f67a32206d8 GoogleToolboxForMac: d1a2cbf009c453f4d6ded37c105e2f67a32206d8
GoogleUtilities: 00c88b9a86066ef77f0da2fab05f65d7768ed8e1 GoogleUtilities: 00c88b9a86066ef77f0da2fab05f65d7768ed8e1
GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6 GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6
@ -545,30 +531,27 @@ SPEC CHECKSUMS:
libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8 libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8
local_auth_darwin: c3ee6cce0a8d56be34c8ccb66ba31f7f180aaebb local_auth_darwin: c3ee6cce0a8d56be34c8ccb66ba31f7f180aaebb
Mantle: c5aa8794a29a022dfbbfc9799af95f477a69b62d Mantle: c5aa8794a29a022dfbbfc9799af95f477a69b62d
MLImage: 0ad1c5f50edd027672d8b26b0fee78a8b4a0fc56 MLImage: 0de5c6c2bf9e93b80ef752e2797f0836f03b58c0
MLKitBarcodeScanning: 0a3064da0a7f49ac24ceb3cb46a5bc67496facd2 MLKitBarcodeScanning: 39de223e7b1b8a8fbf10816a536dd292d8a39343
MLKitCommon: 07c2c33ae5640e5380beaaa6e4b9c249a205542d MLKitCommon: 47d47b50a031d00db62f1b0efe5a1d8b09a3b2e6
MLKitFaceDetection: 2a593db4837db503ad3426b565e7aab045cefea5 MLKitFaceDetection: 32549f1e70e6e7731261bf9cea2b74095e2531cb
MLKitVision: 45e79d68845a2de77e2dd4d7f07947f0ed157b0e MLKitVision: 39a5a812db83c4a0794445088e567f3631c11961
nanopb: fad817b59e0457d11a5dfbde799381cd727c1275 nanopb: fad817b59e0457d11a5dfbde799381cd727c1275
no_screenshot: 89e778ede9f1e39cc3fb9404d782a42712f2a0b2 no_screenshot: 5e345998c43ffcad5d6834f249590483fcc037bd
objective_c: 89e720c30d716b036faf9c9684022048eee1eee2
package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499 package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499
path_provider_foundation: bb55f6dbba17d0dccd6737fe6f7f34fbd0376880
permission_handler_apple: 4ed2196e43d0651e8ff7ca3483a069d469701f2d permission_handler_apple: 4ed2196e43d0651e8ff7ca3483a069d469701f2d
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
restart_app: 9cda5378aacc5000e3f66ee76a9201534e7d3ecf restart_app: 9cda5378aacc5000e3f66ee76a9201534e7d3ecf
ScreenProtectorKit: 83a6281b02c7a5902ee6eac4f5045f674e902ae4 SDWebImage: 1bb6a1b84b6fe87b972a102bdc77dd589df33477
SDWebImage: e9c98383c7572d713c1a0d7dd2783b10599b9838
SDWebImageWebPCoder: 0e06e365080397465cc73a7a9b472d8a3bd0f377 SDWebImageWebPCoder: 0e06e365080397465cc73a7a9b472d8a3bd0f377
Sentry: b53951377b78e21a734f5dc8318e333dbfc682d7 Sentry: b53951377b78e21a734f5dc8318e333dbfc682d7
sentry_flutter: 4c33648b7e83310aa1fdb1b10c5491027d9643f0 sentry_flutter: dbed9a62ae39716b685a80140705c330d200d941
share_plus: 50da8cb520a8f0f65671c6c6a99b3617ed10a58a share_plus: 50da8cb520a8f0f65671c6c6a99b3617ed10a58a
shared_preferences_foundation: 7036424c3d8ec98dfe75ff1667cb0cd531ec82bb shared_preferences_foundation: 7036424c3d8ec98dfe75ff1667cb0cd531ec82bb
sqflite_darwin: 20b2a3a3b70e43edae938624ce550a3cbf66a3d0 sqflite_darwin: 20b2a3a3b70e43edae938624ce550a3cbf66a3d0
sqlite3: 73513155ec6979715d3904ef53a8d68892d4032b sqlite3: 8d708bc63e9f4ce48f0ad9d6269e478c5ced1d9b
sqlite3_flutter_libs: 83f8e9f5b6554077f1d93119fe20ebaa5f3a9ef1 sqlite3_flutter_libs: d13b8b3003f18f596e542bcb9482d105577eff41
SwiftProtobuf: e1b437c8e31a4c5577b643249a0bb62ed4f02153 SwiftProtobuf: c901f00a3e125dc33cac9b16824da85682ee47da
SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4 SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4
url_launcher_ios: 7a95fa5b60cc718a708b8f2966718e93db0cef1b url_launcher_ios: 7a95fa5b60cc718a708b8f2966718e93db0cef1b
video_player_avfoundation: dd410b52df6d2466a42d28550e33e4146928280a video_player_avfoundation: dd410b52df6d2466a42d28550e33e4146928280a

View file

@ -37,14 +37,14 @@ class _AppState extends State<App> with WidgetsBindingObserver {
globalIsAppInBackground = false; globalIsAppInBackground = false;
WidgetsBinding.instance.addObserver(this); WidgetsBinding.instance.addObserver(this);
globalCallbackConnectionState = ({required bool isConnected}) async { globalCallbackConnectionState = ({required isConnected}) async {
await context await context
.read<CustomChangeProvider>() .read<CustomChangeProvider>()
.updateConnectionState(isConnected); .updateConnectionState(isConnected);
await setUserPlan(); await setUserPlan();
}; };
globalCallbackUpdatePlan = (SubscriptionPlan plan) { globalCallbackUpdatePlan = (plan) {
context.read<PurchasesProvider>().updatePlan(plan); context.read<PurchasesProvider>().updatePlan(plan);
}; };
@ -86,8 +86,8 @@ class _AppState extends State<App> with WidgetsBindingObserver {
@override @override
void dispose() { void dispose() {
WidgetsBinding.instance.removeObserver(this); WidgetsBinding.instance.removeObserver(this);
globalCallbackConnectionState = ({required bool isConnected}) {}; globalCallbackConnectionState = ({required isConnected}) {};
globalCallbackUpdatePlan = (SubscriptionPlan planId) {}; globalCallbackUpdatePlan = (planId) {};
super.dispose(); super.dispose();
} }
@ -95,7 +95,7 @@ class _AppState extends State<App> with WidgetsBindingObserver {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return ListenableBuilder( return ListenableBuilder(
listenable: context.watch<SettingsChangeProvider>(), listenable: context.watch<SettingsChangeProvider>(),
builder: (BuildContext context, Widget? child) { builder: (context, child) {
return MaterialApp.router( return MaterialApp.router(
routerConfig: routerProvider, routerConfig: routerProvider,
scaffoldMessengerKey: globalRootScaffoldMessengerKey, scaffoldMessengerKey: globalRootScaffoldMessengerKey,

View file

@ -22,12 +22,11 @@ late UserData gUser;
// This callback called by the apiProvider // This callback called by the apiProvider
void Function({required bool isConnected}) globalCallbackConnectionState = ({ void Function({required bool isConnected}) globalCallbackConnectionState = ({
required bool isConnected, required isConnected,
}) {}; }) {};
void Function() globalCallbackAppIsOutdated = () {}; void Function() globalCallbackAppIsOutdated = () {};
void Function() globalCallbackNewDeviceRegistered = () {}; void Function() globalCallbackNewDeviceRegistered = () {};
void Function(SubscriptionPlan plan) globalCallbackUpdatePlan = void Function(SubscriptionPlan plan) globalCallbackUpdatePlan = (plan) {};
(SubscriptionPlan plan) {};
Map<String, VoidCallback> globalUserDataChangedCallBack = {}; Map<String, VoidCallback> globalUserDataChangedCallBack = {};

View file

@ -13,6 +13,7 @@ import 'package:twonly/src/providers/image_editor.provider.dart';
import 'package:twonly/src/providers/purchases.provider.dart'; import 'package:twonly/src/providers/purchases.provider.dart';
import 'package:twonly/src/providers/settings.provider.dart'; import 'package:twonly/src/providers/settings.provider.dart';
import 'package:twonly/src/services/api.service.dart'; import 'package:twonly/src/services/api.service.dart';
import 'package:twonly/src/services/api/mediafiles/download.service.dart';
import 'package:twonly/src/services/api/mediafiles/media_background.service.dart'; import 'package:twonly/src/services/api/mediafiles/media_background.service.dart';
import 'package:twonly/src/services/api/mediafiles/upload.service.dart'; import 'package:twonly/src/services/api/mediafiles/upload.service.dart';
import 'package:twonly/src/services/fcm.service.dart'; import 'package:twonly/src/services/fcm.service.dart';
@ -73,6 +74,14 @@ void main() async {
return u; return u;
}); });
} }
if (gUser.appVersion < 91) {
// BUG: Requested media files for reupload where not reuploaded because the wrong state...
await makeMigrationToVersion91();
await updateUserdata((u) {
u.appVersion = 91;
return u;
});
}
} }
await twonlyDB.messagesDao.purgeMessageTable(); await twonlyDB.messagesDao.purgeMessageTable();

View file

@ -100,6 +100,14 @@ class MediaFilesDao extends DatabaseAccessor<TwonlyDB>
.get(); .get();
} }
Future<List<MediaFile>> getAllMediaFilesReuploadRequested() async {
return (select(mediaFiles)
..where(
(t) => t.downloadState.equals(DownloadState.reuploadRequested.name),
))
.get();
}
Future<List<MediaFile>> getAllNonHashedStoredMediaFiles() async { Future<List<MediaFile>> getAllNonHashedStoredMediaFiles() async {
return (select(mediaFiles) return (select(mediaFiles)
..where( ..where(

View file

@ -93,17 +93,15 @@ class SignalDao extends DatabaseAccessor<TwonlyDB> with _$SignalDaoMixin {
await into(signalContactSignedPreKeys).insert(signedPreKey); await into(signalContactSignedPreKeys).insert(signedPreKey);
} }
Future<void> purgeOutDatedPreKeys() async { Future<void> purgePreKeysFromContact(int contactId) async {
// Deletion is a workaround for the issue, that own pre keys where deleted after 40 days, while they could be 30days
// on the server + 25 days on the others device old, resulting in the issue that the receiver could not decrypt the
// messages...
await (delete(signalContactPreKeys) await (delete(signalContactPreKeys)
..where( ..where(
(t) => (t.createdAt.isSmallerThanValue( (t) => (t.contactId.equals(contactId)),
DateTime(2025, 10, 10),
)),
)) ))
.go(); .go();
}
Future<void> purgeOutDatedPreKeys() async {
// other pre keys are valid 100 days // other pre keys are valid 100 days
await (delete(signalContactPreKeys) await (delete(signalContactPreKeys)
..where( ..where(

View file

@ -143,7 +143,7 @@ final routerProvider = GoRouter(
GoRoute( GoRoute(
path: 'modify_avatar', path: 'modify_avatar',
builder: (context, state) => const ModifyAvatarView(), builder: (context, state) => const ModifyAvatarView(),
) ),
], ],
), ),
GoRoute( GoRoute(
@ -199,7 +199,7 @@ final routerProvider = GoRouter(
GoRoute( GoRoute(
path: 'block_users', path: 'block_users',
builder: (context, state) => const PrivacyViewBlockUsersView(), builder: (context, state) => const PrivacyViewBlockUsersView(),
) ),
], ],
), ),
GoRoute( GoRoute(

View file

@ -153,9 +153,8 @@ class ApiService {
if (connectivitySubscription != null) { if (connectivitySubscription != null) {
return; return;
} }
connectivitySubscription = Connectivity() connectivitySubscription =
.onConnectivityChanged Connectivity().onConnectivityChanged.listen((result) async {
.listen((List<ConnectivityResult> result) async {
if (!result.contains(ConnectivityResult.none)) { if (!result.contains(ConnectivityResult.none)) {
await connect(); await connect();
} }

View file

@ -30,12 +30,15 @@ Future<void> handleMedia(
if (message == null || if (message == null ||
message.senderId != fromUserId || message.senderId != fromUserId ||
message.mediaId == null) { message.mediaId == null) {
Log.warn(
'Got reupload for a message that either does not exists or sender != fromUserId or not a media file',
);
return; return;
} }
// in case there was already a downloaded file delete it... // in case there was already a downloaded file delete it...
final mediaService = await MediaFileService.fromMediaId(message.mediaId!); final mediaService = await MediaFileService.fromMediaId(message.mediaId!);
if (mediaService != null) { if (mediaService != null && mediaService.tempPath.existsSync()) {
mediaService.tempPath.deleteSync(); mediaService.tempPath.deleteSync();
} }
@ -68,6 +71,14 @@ Future<void> handleMedia(
mediaType = MediaType.audio; mediaType = MediaType.audio;
} }
final messageTmp = await twonlyDB.messagesDao
.getMessageById(media.senderMessageId)
.getSingleOrNull();
if (messageTmp != null) {
Log.warn('This message already exit. Message is dropped.');
return;
}
int? displayLimitInMilliseconds; int? displayLimitInMilliseconds;
if (media.hasDisplayLimitInMilliseconds()) { if (media.hasDisplayLimitInMilliseconds()) {
if (media.displayLimitInMilliseconds.toInt() < 1000) { if (media.displayLimitInMilliseconds.toInt() < 1000) {
@ -192,6 +203,13 @@ Future<void> handleMediaUpdate(
reuploadRequestedBy: Value(reuploadRequestedBy), reuploadRequestedBy: Value(reuploadRequestedBy),
), ),
); );
unawaited(startBackgroundMediaUpload(MediaFileService(mediaFile))); final mediaFileUpdated =
await MediaFileService.fromMediaId(mediaFile.mediaId);
if (mediaFileUpdated != null) {
if (mediaFileUpdated.uploadRequestPath.existsSync()) {
mediaFileUpdated.uploadRequestPath.deleteSync();
}
unawaited(startBackgroundMediaUpload(mediaFileUpdated));
}
} }
} }

View file

@ -5,6 +5,7 @@ import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:cryptography_flutter_plus/cryptography_flutter_plus.dart'; import 'package:cryptography_flutter_plus/cryptography_flutter_plus.dart';
import 'package:cryptography_plus/cryptography_plus.dart'; import 'package:cryptography_plus/cryptography_plus.dart';
import 'package:drift/drift.dart'; import 'package:drift/drift.dart';
import 'package:flutter/foundation.dart';
import 'package:http/http.dart' as http; import 'package:http/http.dart' as http;
import 'package:mutex/mutex.dart'; import 'package:mutex/mutex.dart';
import 'package:path/path.dart'; import 'package:path/path.dart';
@ -217,11 +218,20 @@ Future<void> startDownloadMedia(MediaFile media, bool force) async {
} }
} }
int failCounter = 0;
Future<void> downloadFileFast( Future<void> downloadFileFast(
MediaFile media, MediaFile media,
String apiUrl, String apiUrl,
File filePath, File filePath,
) async { ) async {
if (failCounter < 2) {
failCounter += 1;
await requestMediaReupload(media.mediaId);
return;
}
failCounter = 0;
final response = final response =
await http.get(Uri.parse(apiUrl)).timeout(const Duration(seconds: 10)); await http.get(Uri.parse(apiUrl)).timeout(const Duration(seconds: 10));
@ -327,3 +337,11 @@ Future<void> handleEncryptedFile(String mediaId) async {
unawaited(apiService.downloadDone(mediaService.mediaFile.downloadToken!)); unawaited(apiService.downloadDone(mediaService.mediaFile.downloadToken!));
} }
Future<void> makeMigrationToVersion91() async {
final messages =
await twonlyDB.mediaFilesDao.getAllMediaFilesReuploadRequested();
for (final message in messages) {
await requestMediaReupload(message.mediaId);
}
}

View file

@ -160,7 +160,9 @@ Future<void> startBackgroundMediaUpload(MediaFileService mediaService) async {
if (mediaService.uploadRequestPath.existsSync()) { if (mediaService.uploadRequestPath.existsSync()) {
await mediaService.setUploadState(UploadState.uploading); await mediaService.setUploadState(UploadState.uploading);
// at this point the original file is not used any more, so it can be deleted // at this point the original file is not used any more, so it can be deleted
mediaService.originalPath.deleteSync(); if (mediaService.originalPath.existsSync()) {
mediaService.originalPath.deleteSync();
}
} }
} }
@ -238,6 +240,10 @@ Future<void> _createUploadRequest(MediaFileService media) async {
type = EncryptedContent_Media_Type.VIDEO; type = EncryptedContent_Media_Type.VIDEO;
} }
if (media.mediaFile.reuploadRequestedBy != null) {
type = EncryptedContent_Media_Type.REUPLOAD;
}
final notEncryptedContent = EncryptedContent( final notEncryptedContent = EncryptedContent(
groupId: message.groupId, groupId: message.groupId,
media: EncryptedContent_Media( media: EncryptedContent_Media(

View file

@ -90,6 +90,11 @@ Future<void> handleClient2ClientMessage(NewMessage newMessage) async {
var retry = false; var retry = false;
if (message.hasPlaintextContent()) { if (message.hasPlaintextContent()) {
if (message.plaintextContent.hasDecryptionErrorMessage()) { if (message.plaintextContent.hasDecryptionErrorMessage()) {
if (message.plaintextContent.decryptionErrorMessage.type ==
PlaintextContent_DecryptionErrorMessage_Type.PREKEY_UNKNOWN) {
// in case there was a pre key error remove all downloaded pre keys. New pre keys will be fetched automatically.
await twonlyDB.signalDao.purgePreKeysFromContact(fromUserId);
}
Log.info( Log.info(
'Got decryption error: ${message.plaintextContent.decryptionErrorMessage.type} for $receiptId', 'Got decryption error: ${message.plaintextContent.decryptionErrorMessage.type} for $receiptId',
); );

View file

@ -1,5 +1,3 @@
// ignore_for_file: strict_raw_type
import 'dart:async'; import 'dart:async';
import 'dart:collection'; import 'dart:collection';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -208,7 +206,7 @@ class _ShareImageView extends State<ShareImageView> {
child: Checkbox( child: Checkbox(
value: !hideArchivedUsers, value: !hideArchivedUsers,
side: WidgetStateBorderSide.resolveWith( side: WidgetStateBorderSide.resolveWith(
(Set states) { (states) {
if (states.contains(WidgetState.selected)) { if (states.contains(WidgetState.selected)) {
return const BorderSide(width: 0); return const BorderSide(width: 0);
} }
@ -344,7 +342,7 @@ class UserList extends StatelessWidget {
return ListView.builder( return ListView.builder(
restorationId: 'new_message_users_list', restorationId: 'new_message_users_list',
itemCount: groups.length, itemCount: groups.length,
itemBuilder: (BuildContext context, int i) { itemBuilder: (context, i) {
final group = groups[i]; final group = groups[i];
return ListTile( return ListTile(
key: ValueKey(group.groupId), key: ValueKey(group.groupId),
@ -364,14 +362,14 @@ class UserList extends StatelessWidget {
trailing: Checkbox( trailing: Checkbox(
value: selectedGroupIds.contains(group.groupId), value: selectedGroupIds.contains(group.groupId),
side: WidgetStateBorderSide.resolveWith( side: WidgetStateBorderSide.resolveWith(
(Set states) { (states) {
if (states.contains(WidgetState.selected)) { if (states.contains(WidgetState.selected)) {
return const BorderSide(width: 0); return const BorderSide(width: 0);
} }
return BorderSide(color: Theme.of(context).colorScheme.outline); return BorderSide(color: Theme.of(context).colorScheme.outline);
}, },
), ),
onChanged: (bool? value) { onChanged: (value) {
if (value == null) return; if (value == null) return;
updateSelectedGroupIds(group.groupId, value); updateSelectedGroupIds(group.groupId, value);
}, },

View file

@ -163,8 +163,7 @@ class UserCheckbox extends StatelessWidget {
Checkbox( Checkbox(
value: isChecked, value: isChecked,
side: WidgetStateBorderSide.resolveWith( side: WidgetStateBorderSide.resolveWith(
// ignore: strict_raw_type (states) {
(Set states) {
if (states.contains(WidgetState.selected)) { if (states.contains(WidgetState.selected)) {
return const BorderSide(width: 0); return const BorderSide(width: 0);
} }
@ -173,7 +172,7 @@ class UserCheckbox extends StatelessWidget {
); );
}, },
), ),
onChanged: (bool? value) { onChanged: (value) {
onChanged(group.groupId, value ?? false); onChanged(group.groupId, value ?? false);
}, },
), ),

View file

@ -51,7 +51,7 @@ class _SelectShowTimeState extends State<SelectShowTime> {
scrollController: FixedExtentScrollController( scrollController: FixedExtentScrollController(
initialItem: widget.initialItem, initialItem: widget.initialItem,
), ),
onSelectedItemChanged: (int selectedItem) { onSelectedItemChanged: (selectedItem) {
_selectedItem = selectedItem; _selectedItem = selectedItem;
widget.setMaxShowTime( widget.setMaxShowTime(
widget.options[selectedItem], widget.options[selectedItem],

View file

@ -193,7 +193,7 @@ class _ShareImageEditorView extends State<ShareImageEditorView> {
await showModalBottomSheet( await showModalBottomSheet(
context: context, context: context,
backgroundColor: Colors.black, backgroundColor: Colors.black,
builder: (BuildContext context) { builder: (context) {
return SelectShowTime( return SelectShowTime(
initialItem: initialItem, initialItem: initialItem,
setMaxShowTime: _setMaxShowTime, setMaxShowTime: _setMaxShowTime,
@ -249,7 +249,7 @@ class _ShareImageEditorView extends State<ShareImageEditorView> {
final layer = await showModalBottomSheet( final layer = await showModalBottomSheet(
context: context, context: context,
backgroundColor: Colors.black, backgroundColor: Colors.black,
builder: (BuildContext context) { builder: (context) {
return const EmojiPickerBottom(); return const EmojiPickerBottom();
}, },
) as Layer?; ) as Layer?;
@ -315,7 +315,7 @@ class _ShareImageEditorView extends State<ShareImageEditorView> {
Future<bool?> _showBackDialog() { Future<bool?> _showBackDialog() {
return showDialog<bool>( return showDialog<bool>(
context: context, context: context,
builder: (BuildContext context) { builder: (context) {
return AlertDialog( return AlertDialog(
title: Text( title: Text(
context.lang.dialogAskDeleteMediaFilePopTitle, context.lang.dialogAskDeleteMediaFilePopTitle,
@ -559,7 +559,6 @@ class _ShareImageEditorView extends State<ShareImageEditorView> {
if (imageLayer.imageLoaded) { if (imageLayer.imageLoaded) {
timer.cancel(); timer.cancel();
Future.delayed(const Duration(milliseconds: 50), () { Future.delayed(const Duration(milliseconds: 50), () {
Log.info(imageLayer.imageLoaded);
if (context.mounted) { if (context.mounted) {
setState(() { setState(() {
sendingOrLoadingImage = false; sendingOrLoadingImage = false;
@ -615,7 +614,7 @@ class _ShareImageEditorView extends State<ShareImageEditorView> {
return PopScope<bool?>( return PopScope<bool?>(
canPop: false, canPop: false,
onPopInvokedWithResult: (bool didPop, bool? result) async { onPopInvokedWithResult: (didPop, result) async {
if (didPop) return; if (didPop) return;
await askToCloseThenClose(); await askToCloseThenClose();
}, },

View file

@ -23,7 +23,7 @@ class ReactionRow extends StatelessWidget {
await showModalBottomSheet( await showModalBottomSheet(
context: context, context: context,
backgroundColor: Colors.black, backgroundColor: Colors.black,
builder: (BuildContext context) { builder: (context) {
return AllReactionsView( return AllReactionsView(
message: message, message: message,
); );

View file

@ -86,7 +86,7 @@ class MessageContextMenu extends StatelessWidget {
final layer = await showModalBottomSheet( final layer = await showModalBottomSheet(
context: context, context: context,
backgroundColor: Colors.black, backgroundColor: Colors.black,
builder: (BuildContext context) { builder: (context) {
return const EmojiPickerBottom(); return const EmojiPickerBottom();
}, },
) as EmojiLayerData?; ) as EmojiLayerData?;
@ -210,10 +210,10 @@ Future<void> editTextMessage(BuildContext context, Message message) async {
final controller = TextEditingController(text: message.content); final controller = TextEditingController(text: message.content);
await showDialog( await showDialog(
context: context, context: context,
builder: (BuildContext context) { builder: (context) {
return AlertDialog( return AlertDialog(
content: StatefulBuilder( content: StatefulBuilder(
builder: (BuildContext context, StateSetter setState) { builder: (context, setState) {
return SingleChildScrollView( return SingleChildScrollView(
child: Column( child: Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,

View file

@ -119,7 +119,7 @@ class _ReactionButtonsState extends State<ReactionButtons> {
final layer = await showModalBottomSheet( final layer = await showModalBottomSheet(
context: context, context: context,
backgroundColor: context.color.surface, backgroundColor: context.color.surface,
builder: (BuildContext context) { builder: (context) {
return const EmojiPickerBottom(); return const EmojiPickerBottom();
}, },
) as EmojiLayerData?; ) as EmojiLayerData?;

View file

@ -211,7 +211,7 @@ class _MessageInfoViewState extends State<MessageInfoView> {
await showModalBottomSheet( await showModalBottomSheet(
context: context, context: context,
backgroundColor: Colors.black, backgroundColor: Colors.black,
builder: (BuildContext context) { builder: (context) {
return MessageHistoryView( return MessageHistoryView(
message: widget.message, message: widget.message,
changes: messageHistory, changes: messageHistory,

View file

@ -154,7 +154,7 @@ class _StartNewChatView extends State<StartNewChatView> {
restorationId: 'new_message_users_list', restorationId: 'new_message_users_list',
itemCount: itemCount:
filteredContacts.length + 3 + filteredGroups.length, filteredContacts.length + 3 + filteredGroups.length,
itemBuilder: (BuildContext context, int i) { itemBuilder: (context, i) {
if (searchUserName.text.isEmpty) { if (searchUserName.text.isEmpty) {
if (i == 0) { if (i == 0) {
return ListTile( return ListTile(

View file

@ -42,7 +42,7 @@ Future<bool> showAlertDialog(
// ignore: inference_failure_on_function_invocation // ignore: inference_failure_on_function_invocation
await showDialog( await showDialog(
context: context, context: context,
builder: (BuildContext context) { builder: (context) {
return alert; return alert;
}, },
); );

View file

@ -79,7 +79,7 @@ class _ContextMenuState extends State<ContextMenu> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return GestureDetector( return GestureDetector(
onLongPress: _showCustomMenu, onLongPress: _showCustomMenu,
onTapDown: (TapDownDetails details) { onTapDown: (details) {
_tapPosition = details.globalPosition; _tapPosition = details.globalPosition;
}, },
child: widget.child, child: widget.child,

View file

@ -61,7 +61,7 @@ class _SelectChatDeletionTimeListTitleState
Future<void> _showDialog(Widget child) async { Future<void> _showDialog(Widget child) async {
await showCupertinoModalPopup<void>( await showCupertinoModalPopup<void>(
context: context, context: context,
builder: (BuildContext context) => Container( builder: (context) => Container(
height: 216, height: 216,
padding: const EdgeInsets.only(top: 6), padding: const EdgeInsets.only(top: 6),
// The Bottom margin is provided to align the popup above the system navigation bar. // The Bottom margin is provided to align the popup above the system navigation bar.
@ -138,13 +138,13 @@ class _SelectChatDeletionTimeListTitleState
initialItem: _selectedDeletionTime, initialItem: _selectedDeletionTime,
), ),
// This is called when selected item is changed. // This is called when selected item is changed.
onSelectedItemChanged: (int selectedItem) { onSelectedItemChanged: (selectedItem) {
setState(() { setState(() {
_selectedDeletionTime = selectedItem; _selectedDeletionTime = selectedItem;
}); });
}, },
children: children:
List<Widget>.generate(_getOptions().length, (int index) { List<Widget>.generate(_getOptions().length, (index) {
return Center( return Center(
child: Text(_getOptions()[index].$2), child: Text(_getOptions()[index].$2),
); );

View file

@ -250,7 +250,7 @@ Future<String?> showNicknameChangeDialog(
return showDialog<String>( return showDialog<String>(
context: context, context: context,
builder: (BuildContext context) { builder: (context) {
return AlertDialog( return AlertDialog(
title: Text(context.lang.contactNickname), title: Text(context.lang.contactNickname),
content: TextField( content: TextField(
@ -287,7 +287,7 @@ Future<String?> showReportDialog(
return showDialog<String>( return showDialog<String>(
context: context, context: context,
builder: (BuildContext context) { builder: (context) {
return AlertDialog( return AlertDialog(
title: title:
Text(context.lang.reportUserTitle(getContactDisplayName(contact))), Text(context.lang.reportUserTitle(getContactDisplayName(contact))),

View file

@ -293,7 +293,7 @@ Future<String?> showGroupNameChangeDialog(
return showDialog<String>( return showDialog<String>(
context: context, context: context,
builder: (BuildContext context) { builder: (context) {
return AlertDialog( return AlertDialog(
title: Text(context.lang.groupNameInput), title: Text(context.lang.groupNameInput),
content: TextField( content: TextField(

View file

@ -98,7 +98,7 @@ class _GroupCreateSelectGroupNameViewState
child: ListView.builder( child: ListView.builder(
restorationId: 'new_message_users_list', restorationId: 'new_message_users_list',
itemCount: widget.selectedUsers.length, itemCount: widget.selectedUsers.length,
itemBuilder: (BuildContext context, int i) { itemBuilder: (context, i) {
final user = widget.selectedUsers[i]; final user = widget.selectedUsers[i];
return UserContextMenu( return UserContextMenu(
key: ValueKey(user.userId), key: ValueKey(user.userId),

View file

@ -163,7 +163,7 @@ class _StartNewChatView extends State<GroupCreateSelectMembersView> {
restorationId: 'new_message_users_list', restorationId: 'new_message_users_list',
itemCount: itemCount:
contacts.length + (selectedUsers.isEmpty ? 0 : 2), contacts.length + (selectedUsers.isEmpty ? 0 : 2),
itemBuilder: (BuildContext context, int i) { itemBuilder: (context, i) {
if (selectedUsers.isNotEmpty) { if (selectedUsers.isNotEmpty) {
final selected = selectedUsers.toList(); final selected = selectedUsers.toList();
if (i == 0) { if (i == 0) {
@ -230,7 +230,7 @@ class _StartNewChatView extends State<GroupCreateSelectMembersView> {
); );
}, },
), ),
onChanged: (bool? value) { onChanged: (value) {
toggleSelectedUser(user.userId); toggleSelectedUser(user.userId);
}, },
), ),

View file

@ -1,7 +1,6 @@
import 'dart:async'; import 'dart:async';
import 'package:app_links/app_links.dart'; import 'package:app_links/app_links.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:flutter_sharing_intent/model/sharing_file.dart'; import 'package:flutter_sharing_intent/model/sharing_file.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:twonly/globals.dart'; import 'package:twonly/globals.dart';
@ -106,8 +105,7 @@ class HomeViewState extends State<HomeView> {
activePageIdx = index; activePageIdx = index;
}); });
}; };
selectNotificationStream.stream selectNotificationStream.stream.listen((response) async {
.listen((NotificationResponse? response) async {
globalUpdateOfHomeViewPageIndex(0); globalUpdateOfHomeViewPageIndex(0);
}); });
unawaited(_mainCameraController.selectCamera(0, true)); unawaited(_mainCameraController.selectCamera(0, true));
@ -239,7 +237,7 @@ class HomeViewState extends State<HomeView> {
label: '', label: '',
), ),
], ],
onTap: (int index) async { onTap: (index) async {
activePageIdx = index; activePageIdx = index;
await homeViewPageController.animateToPage( await homeViewPageController.animateToPage(
index, index,

View file

@ -195,7 +195,7 @@ class _MemoriesPhotoSliderViewState extends State<MemoriesPhotoSliderView> {
Positioned( Positioned(
right: 5, right: 5,
child: PopupMenuButton<String>( child: PopupMenuButton<String>(
onSelected: (String result) async { onSelected: (result) async {
if (result == 'delete') { if (result == 'delete') {
await deleteFile(); await deleteFile();
} }
@ -203,8 +203,7 @@ class _MemoriesPhotoSliderViewState extends State<MemoriesPhotoSliderView> {
await exportFile(); await exportFile();
} }
}, },
itemBuilder: (BuildContext context) => itemBuilder: (context) => <PopupMenuEntry<String>>[
<PopupMenuEntry<String>>[
PopupMenuItem<String>( PopupMenuItem<String>(
value: 'delete', value: 'delete',
child: Text(context.lang.galleryDelete), child: Text(context.lang.galleryDelete),

View file

@ -27,7 +27,7 @@ class _AppearanceViewState extends State<AppearanceView> {
// ignore: inference_failure_on_function_invocation // ignore: inference_failure_on_function_invocation
await showDialog( await showDialog(
context: context, context: context,
builder: (BuildContext context) { builder: (context) {
return AlertDialog( return AlertDialog(
title: Text(context.lang.settingsAppearanceTheme), title: Text(context.lang.settingsAppearanceTheme),
content: Column( content: Column(
@ -37,7 +37,7 @@ class _AppearanceViewState extends State<AppearanceView> {
value: ThemeMode.system, value: ThemeMode.system,
groupValue: selectedValue, groupValue: selectedValue,
label: 'System default', label: 'System default',
onChanged: (ThemeMode? value) { onChanged: (value) {
selectedValue = value; selectedValue = value;
Navigator.of(context).pop(); Navigator.of(context).pop();
}, },
@ -46,7 +46,7 @@ class _AppearanceViewState extends State<AppearanceView> {
value: ThemeMode.light, value: ThemeMode.light,
groupValue: selectedValue, groupValue: selectedValue,
label: 'Light', label: 'Light',
onChanged: (ThemeMode? value) { onChanged: (value) {
selectedValue = value; selectedValue = value;
Navigator.of(context).pop(); Navigator.of(context).pop();
}, },
@ -55,7 +55,7 @@ class _AppearanceViewState extends State<AppearanceView> {
value: ThemeMode.dark, value: ThemeMode.dark,
groupValue: selectedValue, groupValue: selectedValue,
label: 'Dark', label: 'Dark',
onChanged: (ThemeMode? value) { onChanged: (value) {
selectedValue = value; selectedValue = value;
Navigator.of(context).pop(); Navigator.of(context).pop();
}, },

View file

@ -197,7 +197,7 @@ class _BackupViewState extends State<BackupView> {
label: context.lang.backupData, label: context.lang.backupData,
), ),
], ],
onTap: (int index) async { onTap: (index) async {
activePageIdx = index; activePageIdx = index;
await pageController.animateToPage( await pageController.animateToPage(
index, index,

View file

@ -24,7 +24,7 @@ class _DataAndStorageViewState extends State<DataAndStorageView> {
// ignore: inference_failure_on_function_invocation // ignore: inference_failure_on_function_invocation
await showDialog( await showDialog(
context: context, context: context,
builder: (BuildContext context) { builder: (context) {
return AutoDownloadOptionsDialog( return AutoDownloadOptionsDialog(
autoDownloadOptions: autoDownloadOptions:
gUser.autoDownloadOptions ?? defaultAutoDownloadOptions, gUser.autoDownloadOptions ?? defaultAutoDownloadOptions,
@ -172,7 +172,7 @@ class _AutoDownloadOptionsDialogState extends State<AutoDownloadOptionsDialog> {
title: const Text('Image'), title: const Text('Image'),
value: autoDownloadOptions[widget.connectionMode.name]! value: autoDownloadOptions[widget.connectionMode.name]!
.contains(DownloadMediaTypes.image.name), .contains(DownloadMediaTypes.image.name),
onChanged: (bool? value) async { onChanged: (value) async {
await _updateAutoDownloadSetting(DownloadMediaTypes.image, value); await _updateAutoDownloadSetting(DownloadMediaTypes.image, value);
}, },
), ),
@ -180,7 +180,7 @@ class _AutoDownloadOptionsDialogState extends State<AutoDownloadOptionsDialog> {
title: const Text('Video'), title: const Text('Video'),
value: autoDownloadOptions[widget.connectionMode.name]! value: autoDownloadOptions[widget.connectionMode.name]!
.contains(DownloadMediaTypes.video.name), .contains(DownloadMediaTypes.video.name),
onChanged: (bool? value) async { onChanged: (value) async {
await _updateAutoDownloadSetting(DownloadMediaTypes.video, value); await _updateAutoDownloadSetting(DownloadMediaTypes.video, value);
}, },
), ),

View file

@ -75,7 +75,7 @@ Future<String?> showUserNameDialog(
await showDialog<String>( await showDialog<String>(
context: context, context: context,
builder: (BuildContext context) { builder: (context) {
return AlertDialog( return AlertDialog(
title: const Text('Username'), title: const Text('Username'),
content: TextField( content: TextField(

View file

@ -194,12 +194,12 @@ $debugLogToken
hint: Text(context.lang.contactUsSelectOption), hint: Text(context.lang.contactUsSelectOption),
underline: const SizedBox.shrink(), underline: const SizedBox.shrink(),
value: _selectedReason, value: _selectedReason,
onChanged: (String? newValue) { onChanged: (newValue) {
setState(() { setState(() {
_selectedReason = newValue; _selectedReason = newValue;
}); });
}, },
items: reasons.map<DropdownMenuItem<String>>((String reason) { items: reasons.map<DropdownMenuItem<String>>((reason) {
return DropdownMenuItem<String>( return DropdownMenuItem<String>(
value: reason, value: reason,
child: Text(reason), child: Text(reason),
@ -211,7 +211,7 @@ $debugLogToken
const SizedBox(height: 5), const SizedBox(height: 5),
FeedbackEmojiRow( FeedbackEmojiRow(
selectedFeedback: _selectedFeedback, selectedFeedback: _selectedFeedback,
onFeedbackChanged: (int? newValue) { onFeedbackChanged: (newValue) {
setState(() { setState(() {
_selectedFeedback = newValue; _selectedFeedback = newValue;
}); });
@ -317,7 +317,7 @@ class _IncludeDebugLogState extends State<IncludeDebugLog> {
Checkbox( Checkbox(
value: widget.isChecked, value: widget.isChecked,
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
onChanged: (bool? value) { onChanged: (value) {
if (value != null) { if (value != null) {
widget.onChanged(value); widget.onChanged(value);
} }

View file

@ -102,7 +102,7 @@ class UserList extends StatelessWidget {
return ListView.builder( return ListView.builder(
restorationId: 'new_message_users_list', restorationId: 'new_message_users_list',
itemCount: users.length, itemCount: users.length,
itemBuilder: (BuildContext context, int i) { itemBuilder: (context, i) {
final user = users[i]; final user = users[i];
return UserContextMenu( return UserContextMenu(
key: ValueKey(user.userId), key: ValueKey(user.userId),
@ -116,7 +116,7 @@ class UserList extends StatelessWidget {
leading: AvatarIcon(contactId: user.userId, fontSize: 15), leading: AvatarIcon(contactId: user.userId, fontSize: 15),
trailing: Checkbox( trailing: Checkbox(
value: user.blocked, value: user.blocked,
onChanged: (bool? value) async { onChanged: (value) async {
await block(context, user.userId, value); await block(context, user.userId, value);
}, },
), ),

View file

@ -79,7 +79,7 @@ class _ModifyAvatarViewState extends State<ModifyAvatarView> {
Future<bool?> _showBackDialog() { Future<bool?> _showBackDialog() {
return showDialog<bool>( return showDialog<bool>(
context: context, context: context,
builder: (BuildContext context) { builder: (context) {
return AlertDialog( return AlertDialog(
title: Text( title: Text(
context.lang.avatarSaveChanges, context.lang.avatarSaveChanges,
@ -117,7 +117,7 @@ class _ModifyAvatarViewState extends State<ModifyAvatarView> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return PopScope<bool?>( return PopScope<bool?>(
canPop: false, canPop: false,
onPopInvokedWithResult: (bool didPop, bool? result) async { onPopInvokedWithResult: (didPop, result) async {
if (didPop) return; if (didPop) return;
if (_avatarMakerController.getJsonOptionsSync() != gUser.avatarJson) { if (_avatarMakerController.getJsonOptionsSync() != gUser.avatarJson) {
// there where changes // there where changes

View file

@ -193,7 +193,7 @@ Future<String?> showDisplayNameChangeDialog(
return showDialog<String>( return showDialog<String>(
context: context, context: context,
builder: (BuildContext context) { builder: (context) {
return AlertDialog( return AlertDialog(
title: Text(title), title: Text(title),
content: TextField( content: TextField(

View file

@ -132,7 +132,7 @@ class _SelectAdditionalUsers extends State<SelectAdditionalUsers> {
restorationId: 'new_message_users_list', restorationId: 'new_message_users_list',
itemCount: itemCount:
contacts.length + (selectedUsers.isEmpty ? 0 : 2), contacts.length + (selectedUsers.isEmpty ? 0 : 2),
itemBuilder: (BuildContext context, int i) { itemBuilder: (context, i) {
if (selectedUsers.isNotEmpty) { if (selectedUsers.isNotEmpty) {
final selected = selectedUsers.toList(); final selected = selectedUsers.toList();
if (i == 0) { if (i == 0) {
@ -198,7 +198,7 @@ class _SelectAdditionalUsers extends State<SelectAdditionalUsers> {
); );
}, },
), ),
onChanged: (bool? value) { onChanged: (value) {
toggleSelectedUser(user.userId); toggleSelectedUser(user.userId);
}, },
), ),

View file

@ -129,7 +129,7 @@ class _SelectPaymentViewState extends State<SelectPaymentView> {
Checkbox( Checkbox(
value: value:
paymentMethods == PaymentMethods.twonlyCredit, paymentMethods == PaymentMethods.twonlyCredit,
onChanged: (bool? value) { onChanged: (value) {
setState(() { setState(() {
paymentMethods = PaymentMethods.twonlyCredit; paymentMethods = PaymentMethods.twonlyCredit;
}); });

View file

@ -153,11 +153,11 @@ Future<void> redeemVoucher(BuildContext context) async {
// ignore: inference_failure_on_function_invocation // ignore: inference_failure_on_function_invocation
await showDialog( await showDialog(
context: context, context: context,
builder: (BuildContext context) { builder: (context) {
return AlertDialog( return AlertDialog(
title: Text(context.lang.redeemVoucher), title: Text(context.lang.redeemVoucher),
content: StatefulBuilder( content: StatefulBuilder(
builder: (BuildContext context, StateSetter setState) { builder: (context, setState) {
return SingleChildScrollView( return SingleChildScrollView(
child: Column( child: Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
@ -227,11 +227,11 @@ Future<void> showBuyVoucher(BuildContext context) async {
// ignore: inference_failure_on_function_invocation // ignore: inference_failure_on_function_invocation
await showDialog( await showDialog(
context: context, context: context,
builder: (BuildContext context) { builder: (context) {
return AlertDialog( return AlertDialog(
title: Text(context.lang.createVoucher), title: Text(context.lang.createVoucher),
content: StatefulBuilder( content: StatefulBuilder(
builder: (BuildContext context, StateSetter setState) { builder: (context, setState) {
return SingleChildScrollView( return SingleChildScrollView(
child: Column( child: Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,

View file

@ -179,7 +179,7 @@ class _UserStudyQuestionnaireViewState
title: Text(m), title: Text(m),
visualDensity: const VisualDensity(vertical: -4), visualDensity: const VisualDensity(vertical: -4),
value: (_responses['messengers'] as List<dynamic>).contains(m), value: (_responses['messengers'] as List<dynamic>).contains(m),
onChanged: (bool? value) { onChanged: (value) {
setState(() { setState(() {
value! value!
? _responses['messengers'].add(m) ? _responses['messengers'].add(m)
@ -236,7 +236,7 @@ class _UserStudyQuestionnaireViewState
labelText: 'Bitte wählen...', labelText: 'Bitte wählen...',
), ),
initialValue: _responses[key] as String?, initialValue: _responses[key] as String?,
items: options.map((String value) { items: options.map((value) {
return DropdownMenuItem<String>( return DropdownMenuItem<String>(
value: value, value: value,
child: Text(value), child: Text(value),

View file

@ -5,18 +5,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: _fe_analyzer_shared name: _fe_analyzer_shared
sha256: c209688d9f5a5f26b2fb47a188131a6fb9e876ae9e47af3737c0b4f58a93470d sha256: "8d7ff3948166b8ec5da0fbb5962000926b8e02f2ed9b3e51d1738905fbd4c98d"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "91.0.0" version: "93.0.0"
_flutterfire_internals: _flutterfire_internals:
dependency: transitive dependency: transitive
description: description:
name: _flutterfire_internals name: _flutterfire_internals
sha256: e4a1b612fd2955908e26116075b3a4baf10c353418ca645b4deae231c82bf144 sha256: cd83f7d6bd4e4c0b0b4fef802e8796784032e1cc23d7b0e982cf5d05d9bbe182
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.3.65" version: "1.3.66"
adaptive_number: adaptive_number:
dependency: "direct overridden" dependency: "direct overridden"
description: description:
@ -28,10 +28,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: analyzer name: analyzer
sha256: f51c8499b35f9b26820cfe914828a6a98a94efd5cc78b37bb7d03debae3a1d08 sha256: de7148ed2fcec579b19f122c1800933dfa028f6d9fd38a152b04b1516cec120b
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "8.4.1" version: "10.0.1"
app_links: app_links:
dependency: "direct main" dependency: "direct main"
description: description:
@ -92,10 +92,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: audio_waveforms name: audio_waveforms
sha256: "3a34bdd15dd63a6d1501218449048b28ebe8e1f795bf00ec310acd7b70648f07" sha256: "03b3430ecf430a2e90185518a228c02be3d26653c62dd931e50d671213a6dbc8"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.0.0" version: "2.0.2"
avatar_maker: avatar_maker:
dependency: "direct main" dependency: "direct main"
description: description:
@ -108,10 +108,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: background_downloader name: background_downloader
sha256: a3b340e42bc45598918944e378dc6a05877e587fcd0e1b8d2ea26339de87bdf9 sha256: "2ea5322fe836c0aaf96aefd29ef1936771c71927f687cf18168dcc119666a45f"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "9.4.0" version: "9.5.2"
boolean_selector: boolean_selector:
dependency: transitive dependency: transitive
description: description:
@ -124,10 +124,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: build name: build
sha256: dfb67ccc9a78c642193e0c2d94cb9e48c2c818b3178a86097d644acdcde6a8d9 sha256: "275bf6bb2a00a9852c28d4e0b410da1d833a734d57d39d44f94bfc895a484ec3"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.0.2" version: "4.0.4"
build_config: build_config:
dependency: transitive dependency: transitive
description: description:
@ -140,18 +140,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: build_daemon name: build_daemon
sha256: "409002f1adeea601018715d613115cfaf0e31f512cb80ae4534c79867ae2363d" sha256: bf05f6e12cfea92d3c09308d7bcdab1906cd8a179b023269eed00c071004b957
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.1.0" version: "4.1.1"
build_runner: build_runner:
dependency: "direct dev" dependency: "direct dev"
description: description:
name: build_runner name: build_runner
sha256: a9461b8e586bf018dd4afd2e13b49b08c6a844a4b226c8d1d10f3a723cdd78c3 sha256: "39ad4ca8a2876779737c60e4228b4bcd35d4352ef7e14e47514093edc012c734"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.10.1" version: "2.11.1"
built_collection: built_collection:
dependency: transitive dependency: transitive
description: description:
@ -164,10 +164,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: built_value name: built_value
sha256: a30f0a0e38671e89a492c44d005b5545b830a961575bbd8336d42869ff71066d sha256: "7931c90b84bc573fef103548e354258ae4c9d28d140e41961df6843c5d60d4d8"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "8.12.0" version: "8.12.3"
cached_network_image: cached_network_image:
dependency: "direct main" dependency: "direct main"
description: description:
@ -196,10 +196,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: camera name: camera
sha256: eefad89f262a873f38d21e5eec853461737ea074d7c9ede39f3ceb135d201cab sha256: a005c6b9783d895a3a9808d65d06773d13587e22a186b6fe8ef3801b0d12f8cf
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.11.3" version: "0.11.3+1"
camera_android_camerax: camera_android_camerax:
dependency: "direct overridden" dependency: "direct overridden"
description: description:
@ -213,10 +213,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: camera_avfoundation name: camera_avfoundation
sha256: "34bcd5db30e52414f1f0783c5e3f566909fab14141a21b3b576c78bd35382bf6" sha256: "11b4aee2f5e5e038982e152b4a342c749b414aa27857899d20f4323e94cb5f0b"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.9.22+4" version: "0.9.23+2"
camera_platform_interface: camera_platform_interface:
dependency: transitive dependency: transitive
description: description:
@ -229,18 +229,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: camera_web name: camera_web
sha256: "595f28c89d1fb62d77c73c633193755b781c6d2e0ebcd8dc25b763b514e6ba8f" sha256: "57f49a635c8bf249d07fb95eb693d7e4dda6796dedb3777f9127fb54847beba7"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.3.5" version: "0.3.5+3"
characters: characters:
dependency: transitive dependency: transitive
description: description:
name: characters name: characters
sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 sha256: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.4.0" version: "1.4.1"
charcode: charcode:
dependency: transitive dependency: transitive
description: description:
@ -273,14 +273,22 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.1.2" version: "1.1.2"
code_assets:
dependency: transitive
description:
name: code_assets
sha256: "83ccdaa064c980b5596c35dd64a8d3ecc68620174ab9b90b6343b753aa721687"
url: "https://pub.dev"
source: hosted
version: "1.0.0"
code_builder: code_builder:
dependency: transitive dependency: transitive
description: description:
name: code_builder name: code_builder
sha256: "11654819532ba94c34de52ff5feb52bd81cba1de00ef2ed622fd50295f9d4243" sha256: "6a6cab2ba4680d6423f34a9b972a4c9a94ebe1b62ecec4e1a1f2cba91fd1319d"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.11.0" version: "4.11.1"
collection: collection:
dependency: "direct main" dependency: "direct main"
description: description:
@ -317,10 +325,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: cross_file name: cross_file
sha256: "942a4791cd385a68ccb3b32c71c427aba508a1bb949b86dff2adbe4049f16239" sha256: "28bb3ae56f117b5aec029d702a90f57d285cd975c3c5c281eaca38dbc47c5937"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.3.5" version: "0.3.5+2"
crypto: crypto:
dependency: "direct main" dependency: "direct main"
description: description:
@ -357,26 +365,26 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: dart_style name: dart_style
sha256: c87dfe3d56f183ffe9106a18aebc6db431fc7c98c31a54b952a77f3d54a85697 sha256: "15a7db352c8fc6a4d2bc475ba901c25b39fe7157541da4c16eacce6f8be83e49"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.1.2" version: "3.1.5"
dbus: dbus:
dependency: transitive dependency: transitive
description: description:
name: dbus name: dbus
sha256: "79e0c23480ff85dc68de79e2cd6334add97e48f7f4865d17686dd6ea81a47e8c" sha256: d0c98dcd4f5169878b6cf8f6e0a52403a9dff371a3e2f019697accbf6f44a270
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.7.11" version: "0.7.12"
device_info_plus: device_info_plus:
dependency: "direct main" dependency: "direct main"
description: description:
name: device_info_plus name: device_info_plus
sha256: dd0e8e02186b2196c7848c9d394a5fd6e5b57a43a546082c5820b1ec72317e33 sha256: "4df8babf73058181227e18b08e6ea3520cf5fc5d796888d33b7cb0f33f984b7c"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "12.2.0" version: "12.3.0"
device_info_plus_platform_interface: device_info_plus_platform_interface:
dependency: transitive dependency: transitive
description: description:
@ -396,26 +404,26 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: drift name: drift
sha256: "83290a32ae006a7535c5ecf300722cb77177250d9df4ee2becc5fa8a36095114" sha256: "970cd188fddb111b26ea6a9b07a62bf5c2432d74147b8122c67044ae3b97e99e"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.29.0" version: "2.31.0"
drift_dev: drift_dev:
dependency: "direct dev" dependency: "direct dev"
description: description:
name: drift_dev name: drift_dev
sha256: "6019f827544e77524ffd5134ae0cb75dfd92ef5ef3e269872af92840c929cd43" sha256: "917184b2fb867b70a548a83bf0d36268423b38d39968c06cce4905683da49587"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.29.0" version: "2.31.0"
drift_flutter: drift_flutter:
dependency: "direct main" dependency: "direct main"
description: description:
name: drift_flutter name: drift_flutter
sha256: b7534bf320aac5213259aac120670ba67b63a1fd010505babc436ff86083818f sha256: c07120854742a0cae2f7501a0da02493addde550db6641d284983c08762e60a7
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.2.7" version: "0.2.8"
ed25519_edwards: ed25519_edwards:
dependency: "direct overridden" dependency: "direct overridden"
description: description:
@ -444,10 +452,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: ffi name: ffi
sha256: "289279317b4b16eb2bb7e271abccd4bf84ec9bdcbe999e278a94b804f5630418" sha256: "6d7fd89431262d8f3125e81b50d3847a091d846eafcd4fdb88dd06f36d705a45"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.1.4" version: "2.2.0"
ffmpeg_kit_flutter_new: ffmpeg_kit_flutter_new:
dependency: "direct main" dependency: "direct main"
description: description:
@ -476,50 +484,50 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: file_picker name: file_picker
sha256: f8f4ea435f791ab1f817b4e338ed958cb3d04ba43d6736ffc39958d950754967 sha256: "57d9a1dd5063f85fa3107fb42d1faffda52fdc948cefd5fe5ea85267a5fc7343"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "10.3.6" version: "10.3.10"
file_selector_linux: file_selector_linux:
dependency: transitive dependency: transitive
description: description:
name: file_selector_linux name: file_selector_linux
sha256: "54cbbd957e1156d29548c7d9b9ec0c0ebb6de0a90452198683a7d23aed617a33" sha256: "2567f398e06ac72dcf2e98a0c95df2a9edd03c2c2e0cacd4780f20cdf56263a0"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.9.3+2" version: "0.9.4"
file_selector_macos: file_selector_macos:
dependency: transitive dependency: transitive
description: description:
name: file_selector_macos name: file_selector_macos
sha256: "88707a3bec4b988aaed3b4df5d7441ee4e987f20b286cddca5d6a8270cab23f2" sha256: "5e0bbe9c312416f1787a68259ea1505b52f258c587f12920422671807c4d618a"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.9.4+5" version: "0.9.5"
file_selector_platform_interface: file_selector_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: file_selector_platform_interface name: file_selector_platform_interface
sha256: a3994c26f10378a039faa11de174d7b78eb8f79e4dd0af2a451410c1a5c3f66b sha256: "35e0bd61ebcdb91a3505813b055b09b79dfdc7d0aee9c09a7ba59ae4bb13dc85"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.6.2" version: "2.7.0"
file_selector_windows: file_selector_windows:
dependency: transitive dependency: transitive
description: description:
name: file_selector_windows name: file_selector_windows
sha256: "320fcfb6f33caa90f0b58380489fc5ac05d99ee94b61aa96ec2bff0ba81d3c2b" sha256: "62197474ae75893a62df75939c777763d39c2bc5f73ce5b88497208bc269abfd"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.9.3+4" version: "0.9.3+5"
firebase_core: firebase_core:
dependency: "direct main" dependency: "direct main"
description: description:
name: firebase_core name: firebase_core
sha256: "29cfa93c771d8105484acac340b5ea0835be371672c91405a300303986f4eba9" sha256: "923085c881663ef685269b013e241b428e1fb03cdd0ebde265d9b40ff18abf80"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.3.0" version: "4.4.0"
firebase_core_platform_interface: firebase_core_platform_interface:
dependency: transitive dependency: transitive
description: description:
@ -532,34 +540,34 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: firebase_core_web name: firebase_core_web
sha256: a631bbfbfa26963d68046aed949df80b228964020e9155b086eff94f462bbf1f sha256: "83e7356c704131ca4d8d8dd57e360d8acecbca38b1a3705c7ae46cc34c708084"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.3.1" version: "3.4.0"
firebase_messaging: firebase_messaging:
dependency: "direct main" dependency: "direct main"
description: description:
name: firebase_messaging name: firebase_messaging
sha256: "1ad663fbb6758acec09d7e84a2e6478265f0a517f40ef77c573efd5e0089f400" sha256: "06fad40ea14771e969a8f2bbce1944aa20ee2f4f57f4eca5b3ba346b65f3f644"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "16.1.0" version: "16.1.1"
firebase_messaging_platform_interface: firebase_messaging_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: firebase_messaging_platform_interface name: firebase_messaging_platform_interface
sha256: ea620e841fbcec62a96984295fc628f53ef5a8da4f53238159719ed0af7db834 sha256: "6c49e901c77e6e10e86d98e32056a087eb1ca1b93acdf58524f1961e617657b7"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.7.5" version: "4.7.6"
firebase_messaging_web: firebase_messaging_web:
dependency: transitive dependency: transitive
description: description:
name: firebase_messaging_web name: firebase_messaging_web
sha256: "7d0fb6256202515bba8489a3d69c6bc9d52d69a4999bad789053b486c8e7323e" sha256: "2756f8fea583ffb9d294d15ddecb3a9ad429b023b70c9990c151fc92c54a32b3"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.1.1" version: "4.1.2"
fixnum: fixnum:
dependency: "direct main" dependency: "direct main"
description: description:
@ -735,10 +743,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: flutter_plugin_android_lifecycle name: flutter_plugin_android_lifecycle
sha256: "306f0596590e077338312f38837f595c04f28d6cdeeac392d3d74df2f0003687" sha256: ee8068e0e1cd16c4a82714119918efdeed33b3ba7772c54b5d094ab53f9b7fd1
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.0.32" version: "2.0.33"
flutter_secure_storage: flutter_secure_storage:
dependency: "direct main" dependency: "direct main"
description: description:
@ -798,10 +806,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: flutter_svg name: flutter_svg
sha256: "055de8921be7b8e8b98a233c7a5ef84b3a6fcc32f46f1ebf5b9bb3576d108355" sha256: "87fbd7c534435b6c5d9d98b01e1fd527812b82e68ddd8bd35fc45ed0fa8f0a95"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.2.2" version: "2.2.3"
flutter_test: flutter_test:
dependency: "direct dev" dependency: "direct dev"
description: flutter description: flutter
@ -840,10 +848,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: get name: get
sha256: c79eeb4339f1f3deffd9ec912f8a923834bec55f7b49c9e882b8fef2c139d425 sha256: "5ed34a7925b85336e15d472cc4cfe7d9ebf4ab8e8b9f688585bf6b50f4c3d79a"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.7.2" version: "4.7.3"
glob: glob:
dependency: transitive dependency: transitive
description: description:
@ -864,26 +872,26 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: google_mlkit_barcode_scanning name: google_mlkit_barcode_scanning
sha256: b38505df2d3fdf7830979d60fee55039c2f442d189b2e06fcb2fe494ba65d0db sha256: dbf4df99cb490b12e95dcedde3e6741ce711942904f7049da601dfede91c1e0f
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.14.1" version: "0.14.2"
google_mlkit_commons: google_mlkit_commons:
dependency: transitive dependency: transitive
description: description:
name: google_mlkit_commons name: google_mlkit_commons
sha256: "8f40fbac10685cad4715d11e6a0d86837d9ad7168684dfcad29610282a88e67a" sha256: "3e69fea4211727732cc385104e675ad1e40b29f12edd492ee52fa108423a6124"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.11.0" version: "0.11.1"
google_mlkit_face_detection: google_mlkit_face_detection:
dependency: "direct main" dependency: "direct main"
description: description:
name: google_mlkit_face_detection name: google_mlkit_face_detection
sha256: f336737d5b8a86797fd4368f42a5c26aeaa9c6dcc5243f0a16b5f6f663cfb70a sha256: "7b6ddcc69dbd6fbfa313fb2d974ad0f0c3a0d1657560f0da6be465baf1889687"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.13.1" version: "0.13.2"
graphs: graphs:
dependency: transitive dependency: transitive
description: description:
@ -921,6 +929,14 @@ packages:
relative: true relative: true
source: path source: path
version: "3.0.1" version: "3.0.1"
hooks:
dependency: transitive
description:
name: hooks
sha256: "7a08a0d684cb3b8fb604b78455d5d352f502b68079f7b80b831c62220ab0a4f6"
url: "https://pub.dev"
source: hosted
version: "1.0.1"
html: html:
dependency: "direct main" dependency: "direct main"
description: description:
@ -933,10 +949,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: http name: http
sha256: bb2ce4590bc2667c96f318d68cac1b5a7987ec819351d32b1c987239a815e007 sha256: "87721a4a50b19c7f1d49001e51409bddc46303966ce89a65af4f4e6004896412"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.5.0" version: "1.6.0"
http_multi_server: http_multi_server:
dependency: transitive dependency: transitive
description: description:
@ -957,42 +973,42 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: image name: image
sha256: "4e973fcf4caae1a4be2fa0a13157aa38a8f9cb049db6529aa00b4d71abc4d928" sha256: "492bd52f6c4fbb6ee41f781ff27765ce5f627910e1e0cbecfa3d9add5562604c"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.5.4" version: "4.7.2"
image_picker: image_picker:
dependency: "direct main" dependency: "direct main"
description: description:
name: image_picker name: image_picker
sha256: "736eb56a911cf24d1859315ad09ddec0b66104bc41a7f8c5b96b4e2620cf5041" sha256: "784210112be18ea55f69d7076e2c656a4e24949fa9e76429fe53af0c0f4fa320"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.2.0" version: "1.2.1"
image_picker_android: image_picker_android:
dependency: transitive dependency: transitive
description: description:
name: image_picker_android name: image_picker_android
sha256: ca2a3b04d34e76157e9ae680ef16014fb4c2d20484e78417eaed6139330056f6 sha256: "518a16108529fc18657a3e6dde4a043dc465d16596d20ab2abd49a4cac2e703d"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.8.13+7" version: "0.8.13+13"
image_picker_for_web: image_picker_for_web:
dependency: transitive dependency: transitive
description: description:
name: image_picker_for_web name: image_picker_for_web
sha256: "40c2a6a0da15556dc0f8e38a3246064a971a9f512386c3339b89f76db87269b6" sha256: "66257a3191ab360d23a55c8241c91a6e329d31e94efa7be9cf7a212e65850214"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.1.0" version: "3.1.1"
image_picker_ios: image_picker_ios:
dependency: transitive dependency: transitive
description: description:
name: image_picker_ios name: image_picker_ios
sha256: e675c22790bcc24e9abd455deead2b7a88de4b79f7327a281812f14de1a56f58 sha256: b9c4a438a9ff4f60808c9cf0039b93a42bb6c2211ef6ebb647394b2b3fa84588
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.8.13+1" version: "0.8.13+6"
image_picker_linux: image_picker_linux:
dependency: transitive dependency: transitive
description: description:
@ -1100,18 +1116,26 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: json_annotation name: json_annotation
sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1" sha256: "805fa86df56383000f640384b282ce0cb8431f1a7a2396de92fb66186d8c57df"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.9.0" version: "4.10.0"
json_schema:
dependency: transitive
description:
name: json_schema
sha256: f37d9c3fdfe8c9aae55fdfd5af815d24ce63c3a0f6a2c1f0982c30f43643fa1a
url: "https://pub.dev"
source: hosted
version: "5.2.2"
json_serializable: json_serializable:
dependency: "direct dev" dependency: "direct dev"
description: description:
name: json_serializable name: json_serializable
sha256: "33a040668b31b320aafa4822b7b1e177e163fc3c1e835c6750319d4ab23aa6fe" sha256: "93fba3ad139dab2b1ce59ecc6fdce6da46a42cdb6c4399ecda30f1e7e725760d"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "6.11.1" version: "6.12.0"
leak_tracker: leak_tracker:
dependency: transitive dependency: transitive
description: description:
@ -1147,10 +1171,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: lints name: lints
sha256: a5e2b223cb7c9c8efdc663ef484fdd95bb243bff242ef5b13e26883547fce9a0 sha256: "12f842a479589fea194fe5c5a3095abc7be0c1f2ddfa9a0e76aed1dbd26a87df"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "6.0.0" version: "6.1.0"
local_auth: local_auth:
dependency: "direct main" dependency: "direct main"
description: description:
@ -1163,18 +1187,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: local_auth_android name: local_auth_android
sha256: d836715ed95b16b2de3a8c47a88ba5e607976bb1e27c9446d193152ea1429fae sha256: "162b8e177fd9978c4620da2a8002a5c6bed4d20f0c6daf5137e72e9a8b767d2e"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.0.0" version: "2.0.4"
local_auth_darwin: local_auth_darwin:
dependency: transitive dependency: transitive
description: description:
name: local_auth_darwin name: local_auth_darwin
sha256: "15d9db4ad4d58a11d7269e55d46ff8d49ed5e856226c8a5a91280f0d7c37b3a6" sha256: "176480aa855ebedeed195e26ac7d6601a45e6b255dfc7433f353e0c1aeafa9a2"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.0.0" version: "2.0.2"
local_auth_platform_interface: local_auth_platform_interface:
dependency: transitive dependency: transitive
description: description:
@ -1187,10 +1211,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: local_auth_windows name: local_auth_windows
sha256: d95535a73eddf57ce5930d5e78a0fa4f294c31981fdeeee83325b797302be454 sha256: be12c5b8ba5e64896983123655c5f67d2484ecfcc95e367952ad6e3bff94cb16
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.0.0" version: "2.0.1"
logging: logging:
dependency: "direct main" dependency: "direct main"
description: description:
@ -1210,18 +1234,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: matcher name: matcher
sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 sha256: "12956d0ad8390bbcc63ca2e1469c0619946ccb52809807067a7020d57e647aa6"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.12.17" version: "0.12.18"
material_color_utilities: material_color_utilities:
dependency: transitive dependency: transitive
description: description:
name: material_color_utilities name: material_color_utilities
sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec sha256: "9c337007e82b1889149c82ed242ed1cb24a66044e30979c44912381e9be4c48b"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.11.1" version: "0.13.0"
meta: meta:
dependency: "direct main" dependency: "direct main"
description: description:
@ -1245,6 +1269,14 @@ packages:
relative: true relative: true
source: path source: path
version: "3.1.0" version: "3.1.0"
native_toolchain_c:
dependency: transitive
description:
name: native_toolchain_c
sha256: "89e83885ba09da5fdf2cdacc8002a712ca238c28b7f717910b34bcd27b0d03ac"
url: "https://pub.dev"
source: hosted
version: "0.17.4"
nested: nested:
dependency: transitive dependency: transitive
description: description:
@ -1267,15 +1299,15 @@ packages:
path: "dependencies/no_screenshot" path: "dependencies/no_screenshot"
relative: true relative: true
source: path source: path
version: "0.3.2" version: "0.4.0"
objective_c: objective_c:
dependency: transitive dependency: transitive
description: description:
name: objective_c name: objective_c
sha256: "64e35e1e2e79da4e83f2ace3bf4e5437cef523f46c7db2eba9a1419c49573790" sha256: "100a1c87616ab6ed41ec263b083c0ef3261ee6cd1dc3b0f35f8ddfa4f996fe52"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "8.0.0" version: "9.3.0"
octo_image: octo_image:
dependency: transitive dependency: transitive
description: description:
@ -1343,18 +1375,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: path_provider_android name: path_provider_android
sha256: e122c5ea805bb6773bb12ce667611265980940145be920cd09a4b0ec0285cb16 sha256: f2c65e21139ce2c3dad46922be8272bb5963516045659e71bb16e151c93b580e
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.2.20" version: "2.2.22"
path_provider_foundation: path_provider_foundation:
dependency: transitive dependency: transitive
description: description:
name: path_provider_foundation name: path_provider_foundation
sha256: efaec349ddfc181528345c56f8eda9d6cccd71c177511b132c6a0ddaefaa2738 sha256: "2a376b7d6392d80cd3705782d2caa734ca4727776db0b6ec36ef3f1855197699"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.4.3" version: "2.6.0"
path_provider_linux: path_provider_linux:
dependency: transitive dependency: transitive
description: description:
@ -1527,6 +1559,14 @@ packages:
relative: true relative: true
source: path source: path
version: "4.1.0" version: "4.1.0"
quiver:
dependency: transitive
description:
name: quiver
sha256: ea0b925899e64ecdfbf9c7becb60d5b50e706ade44a85b2363be2a22d88117d2
url: "https://pub.dev"
source: hosted
version: "3.2.2"
recase: recase:
dependency: transitive dependency: transitive
description: description:
@ -1543,6 +1583,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.3.2" version: "1.3.2"
rfc_6901:
dependency: transitive
description:
name: rfc_6901
sha256: "6a43b1858dca2febaf93e15639aa6b0c49ccdfd7647775f15a499f872b018154"
url: "https://pub.dev"
source: hosted
version: "0.2.1"
rxdart: rxdart:
dependency: transitive dependency: transitive
description: description:
@ -1563,18 +1611,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: sentry name: sentry
sha256: "10a0bc25f5f21468e3beeae44e561825aaa02cdc6829438e73b9b64658ff88d9" sha256: e57e57123968b673c8ca19892eecf93113b4811b8e5cd5d165749ca7f7319fdb
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "9.8.0" version: "9.13.0"
sentry_flutter: sentry_flutter:
dependency: "direct main" dependency: "direct main"
description: description:
name: sentry_flutter name: sentry_flutter
sha256: aafbf41c63c98a30b17bdbf3313424d5102db62b08735c44bff810f277e786a5 sha256: c8f5b805c0346cd0c93b09e584675af7ed8c3ef36c3589181ad19b4adce35954
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "9.8.0" version: "9.13.0"
share_plus: share_plus:
dependency: "direct main" dependency: "direct main"
description: description:
@ -1595,26 +1643,26 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: shared_preferences name: shared_preferences
sha256: "6e8bf70b7fef813df4e9a36f658ac46d107db4b4cfe1048b477d4e453a8159f5" sha256: "2939ae520c9024cb197fc20dee269cd8cdbf564c8b5746374ec6cacdc5169e64"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.5.3" version: "2.5.4"
shared_preferences_android: shared_preferences_android:
dependency: transitive dependency: transitive
description: description:
name: shared_preferences_android name: shared_preferences_android
sha256: "34266009473bf71d748912da4bf62d439185226c03e01e2d9687bc65bbfcb713" sha256: cbc40be9be1c5af4dab4d6e0de4d5d3729e6f3d65b89d21e1815d57705644a6f
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.4.15" version: "2.4.20"
shared_preferences_foundation: shared_preferences_foundation:
dependency: transitive dependency: transitive
description: description:
name: shared_preferences_foundation name: shared_preferences_foundation
sha256: "1c33a907142607c40a7542768ec9badfd16293bac51da3a4482623d15845f88b" sha256: "4e7eaffc2b17ba398759f1151415869a34771ba11ebbccd1b0145472a619a64f"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.5.5" version: "2.5.6"
shared_preferences_linux: shared_preferences_linux:
dependency: transitive dependency: transitive
description: description:
@ -1672,26 +1720,26 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: source_gen name: source_gen
sha256: "9098ab86015c4f1d8af6486b547b11100e73b193e1899015033cb3e14ad20243" sha256: "1d562a3c1f713904ebbed50d2760217fd8a51ca170ac4b05b0db490699dbac17"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.0.2" version: "4.2.0"
source_helper: source_helper:
dependency: transitive dependency: transitive
description: description:
name: source_helper name: source_helper
sha256: "6a3c6cc82073a8797f8c4dc4572146114a39652851c157db37e964d9c7038723" sha256: "4a85e90b50694e652075cbe4575665539d253e6ec10e46e76b45368ab5e3caae"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.3.8" version: "1.3.10"
source_span: source_span:
dependency: transitive dependency: transitive
description: description:
name: source_span name: source_span
sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" sha256: "56a02f1f4cd1a2d96303c0144c93bd6d909eea6bee6bf5a0e0b685edbd4c47ab"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.10.1" version: "1.10.2"
sqflite: sqflite:
dependency: transitive dependency: transitive
description: description:
@ -1744,18 +1792,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: sqlite3_flutter_libs name: sqlite3_flutter_libs
sha256: "69c80d812ef2500202ebd22002cbfc1b6565e9ff56b2f971e757fac5d42294df" sha256: "1e800ebe7f85a80a66adacaa6febe4d5f4d8b75f244e9838a27cb2ffc7aec08d"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.5.40" version: "0.5.41"
sqlparser: sqlparser:
dependency: transitive dependency: transitive
description: description:
name: sqlparser name: sqlparser
sha256: "54eea43e36dd3769274c3108625f9ea1a382f8d2ac8b16f3e4589d9bd9b0e16c" sha256: "337e9997f7141ffdd054259128553c348635fa318f7ca492f07a4ab76f850d19"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.42.0" version: "0.43.1"
stack_trace: stack_trace:
dependency: transitive dependency: transitive
description: description:
@ -1808,10 +1856,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: test_api name: test_api
sha256: ab2726c1a94d3176a45960b6234466ec367179b87dd74f1611adb1f3b5fb9d55 sha256: "19a78f63e83d3a61f00826d09bc2f60e191bf3504183c001262be6ac75589fb8"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.7.7" version: "0.7.8"
timezone: timezone:
dependency: transitive dependency: transitive
description: description:
@ -1828,6 +1876,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.4.0" version: "1.4.0"
uri:
dependency: transitive
description:
name: uri
sha256: "889eea21e953187c6099802b7b4cf5219ba8f3518f604a1033064d45b1b8268a"
url: "https://pub.dev"
source: hosted
version: "1.0.0"
url_launcher: url_launcher:
dependency: "direct main" dependency: "direct main"
description: description:
@ -1840,34 +1896,34 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_android name: url_launcher_android
sha256: "5c8b6c2d89a78f5a1cca70a73d9d5f86c701b36b42f9c9dac7bad592113c28e9" sha256: "767344bf3063897b5cf0db830e94f904528e6dd50a6dfaf839f0abf509009611"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "6.3.24" version: "6.3.28"
url_launcher_ios: url_launcher_ios:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_ios name: url_launcher_ios
sha256: "6b63f1441e4f653ae799166a72b50b1767321ecc263a57aadf825a7a2a5477d9" sha256: b1aca26728b7cc7a3af971bb6f601554a8ae9df2e0a006de8450ba06a17ad36a
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "6.3.5" version: "6.4.0"
url_launcher_linux: url_launcher_linux:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_linux name: url_launcher_linux
sha256: "4e9ba368772369e3e08f231d2301b4ef72b9ff87c31192ef471b380ef29a4935" sha256: d5e14138b3bc193a0f63c10a53c94b91d399df0512b1f29b94a043db7482384a
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.2.1" version: "3.2.2"
url_launcher_macos: url_launcher_macos:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_macos name: url_launcher_macos
sha256: "8262208506252a3ed4ff5c0dc1e973d2c0e0ef337d0a074d35634da5d44397c9" sha256: "368adf46f71ad3c21b8f06614adb38346f193f3a59ba8fe9a2fd74133070ba18"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.2.4" version: "3.2.5"
url_launcher_platform_interface: url_launcher_platform_interface:
dependency: transitive dependency: transitive
description: description:
@ -1880,18 +1936,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_web name: url_launcher_web
sha256: "4bd2b7b4dc4d4d0b94e5babfffbca8eac1a126c7f3d6ecbc1a11013faa3abba2" sha256: d0412fcf4c6b31ecfdb7762359b7206ffba3bbffd396c6d9f9c4616ece476c1f
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.4.1" version: "2.4.2"
url_launcher_windows: url_launcher_windows:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_windows name: url_launcher_windows
sha256: "3284b6d2ac454cf34f114e1d3319866fdd1e19cdc329999057e44ffe936cfa77" sha256: "712c70ab1b99744ff066053cbe3e80c73332b38d46e5e945c98689b2e66fc15f"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.1.4" version: "3.1.5"
uuid: uuid:
dependency: transitive dependency: transitive
description: description:
@ -1920,10 +1976,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: vector_graphics_compiler name: vector_graphics_compiler
sha256: d354a7ec6931e6047785f4db12a1f61ec3d43b207fc0790f863818543f8ff0dc sha256: "201e876b5d52753626af64b6359cd13ac6011b80728731428fd34bc840f71c9b"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.1.19" version: "1.1.20"
vector_math: vector_math:
dependency: transitive dependency: transitive
description: description:
@ -1936,10 +1992,10 @@ packages:
dependency: "direct dev" dependency: "direct dev"
description: description:
name: very_good_analysis name: very_good_analysis
sha256: "96245839dbcc45dfab1af5fa551603b5c7a282028a64746c19c547d21a7f1e3a" sha256: "27927d1140ce1b140f998b6340f730a626faa5b95110b3e34a238ff254d731d0"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "10.0.0" version: "10.1.0"
video_player: video_player:
dependency: "direct main" dependency: "direct main"
description: description:
@ -1952,18 +2008,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: video_player_android name: video_player_android
sha256: cf768d02924b91e333e2bc1ff928528f57d686445874f383bafab12d0bdfc340 sha256: ee4fd520b0cafa02e4a867a0f882092e727cdaa1a2d24762171e787f8a502b0a
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.8.17" version: "2.9.1"
video_player_avfoundation: video_player_avfoundation:
dependency: transitive dependency: transitive
description: description:
name: video_player_avfoundation name: video_player_avfoundation
sha256: "19ed1162a7a5520e7d7791e0b7b73ba03161b6a69428b82e4689e435b325432d" sha256: f93b93a3baa12ca0ff7d00ca8bc60c1ecd96865568a01ff0c18a99853ee201a5
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.8.5" version: "2.9.3"
video_player_platform_interface: video_player_platform_interface:
dependency: transitive dependency: transitive
description: description:
@ -1992,10 +2048,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: watcher name: watcher
sha256: "592ab6e2892f67760543fb712ff0177f4ec76c031f02f5b4ff8d3fc5eb9fb61a" sha256: "1398c9f081a753f9226febe8900fce8f7d0a67163334e1c94a2438339d79d635"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.1.4" version: "1.2.1"
web: web:
dependency: transitive dependency: transitive
description: description:
@ -2068,5 +2124,5 @@ packages:
source: hosted source: hosted
version: "3.1.3" version: "3.1.3"
sdks: sdks:
dart: ">=3.10.0 <4.0.0" dart: ">=3.10.3 <4.0.0"
flutter: ">=3.38.1" flutter: ">=3.38.4"

View file

@ -13,7 +13,7 @@ import 'package:flutter_test/flutter_test.dart';
void main() { void main() {
group('MyWidget', () { group('MyWidget', () {
testWidgets('should display a string of text', (WidgetTester tester) async { testWidgets('should display a string of text', (tester) async {
// Define a Widget // Define a Widget
const myWidget = MaterialApp( const myWidget = MaterialApp(
home: Scaffold( home: Scaffold(