mirror of
https://github.com/cogwheel0/conduit.git
synced 2026-10-19 09:43:36 +00:00
chore: update dependencies and refactor file picker usage
- Bumped versions of several dependencies in pubspec.yaml, including `vad`, `speech_to_text`, `file_picker`, `package_info_plus`, `share_plus`, `flutter_local_notifications`, and `flutter_callkit_incoming`. - Refactored file picker usage in `ServerConnectionPage`, `FileAttachmentService`, and `TerminalTab` to streamline file selection logic and improve code clarity. - Enhanced `CallKitService` to ensure consistent handling of call accept and decline text. - Improved voice input service to utilize updated speech listening options for better performance.
This commit is contained in:
parent
64633207af
commit
9daf13ddc0
8 changed files with 221 additions and 210 deletions
|
|
@ -181,8 +181,6 @@ class CallKitService {
|
|||
handle: handle,
|
||||
type: 0, // 0 = audio call
|
||||
duration: durationMs,
|
||||
textAccept: l10n.acceptCall,
|
||||
textDecline: l10n.declineCall,
|
||||
missedCallNotification: NotificationParams(
|
||||
showNotification: true,
|
||||
isShowCallback: true,
|
||||
|
|
@ -202,6 +200,8 @@ class CallKitService {
|
|||
ringtonePath: 'system_ringtone_default',
|
||||
backgroundColor: '#0D1726',
|
||||
actionColor: '#4CAF50',
|
||||
textAccept: l10n.acceptCall,
|
||||
textDecline: l10n.declineCall,
|
||||
incomingCallNotificationChannelName: l10n.incomingCallChannelName,
|
||||
missedCallNotificationChannelName: l10n.missedCallChannelName,
|
||||
),
|
||||
|
|
|
|||
|
|
@ -648,19 +648,17 @@ class _ServerConnectionPageState extends ConsumerState<ServerConnectionPage> {
|
|||
|
||||
Future<void> _pickMutualTlsFile({required bool isPrivateKey}) async {
|
||||
try {
|
||||
final result = await FilePicker.pickFiles(
|
||||
allowMultiple: false,
|
||||
final file = await FilePicker.pickFile(
|
||||
type: FileType.custom,
|
||||
allowedExtensions: isPrivateKey
|
||||
? const ['pem', 'key']
|
||||
: const ['pem', 'crt', 'cer'],
|
||||
);
|
||||
|
||||
if (result == null || result.files.isEmpty) {
|
||||
if (file == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
final file = result.files.single;
|
||||
final pemContent = await _readPickedPemFile(file);
|
||||
final validationError = _validatePickedPemContent(
|
||||
pemContent,
|
||||
|
|
@ -695,10 +693,10 @@ class _ServerConnectionPageState extends ConsumerState<ServerConnectionPage> {
|
|||
|
||||
Future<String> _readPickedPemFile(PlatformFile file) async {
|
||||
final l10n = AppLocalizations.of(context)!;
|
||||
final bytes =
|
||||
file.bytes ??
|
||||
(file.path != null ? await File(file.path!).readAsBytes() : null);
|
||||
if (bytes == null || bytes.isEmpty) {
|
||||
final bytes = file.path != null
|
||||
? await File(file.path!).readAsBytes()
|
||||
: await file.readAsBytes();
|
||||
if (bytes.isEmpty) {
|
||||
throw Exception(l10n.mutualTlsFileReadFailed);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -72,6 +72,26 @@ String _extractMimeTypeFromDataUrl(String imageDataUrl) {
|
|||
return match?.group(1)?.toLowerCase() ?? 'image/png';
|
||||
}
|
||||
|
||||
Future<List<PlatformFile>> _pickPlatformFiles({
|
||||
required bool allowMultiple,
|
||||
FileType type = FileType.any,
|
||||
List<String>? allowedExtensions,
|
||||
}) async {
|
||||
if (allowMultiple) {
|
||||
final result = await FilePicker.pickFiles(
|
||||
type: type,
|
||||
allowedExtensions: allowedExtensions,
|
||||
);
|
||||
return result?.files ?? const [];
|
||||
}
|
||||
|
||||
final file = await FilePicker.pickFile(
|
||||
type: type,
|
||||
allowedExtensions: allowedExtensions,
|
||||
);
|
||||
return file == null ? const [] : [file];
|
||||
}
|
||||
|
||||
/// Top-level function for base64 encoding in an isolate.
|
||||
String _encodeToDataUrlWorker(Map<String, dynamic> payload) {
|
||||
final bytes = payload['bytes'] as List<int>;
|
||||
|
|
@ -268,17 +288,17 @@ class FileAttachmentService {
|
|||
List<String>? allowedExtensions,
|
||||
}) async {
|
||||
try {
|
||||
final result = await FilePicker.pickFiles(
|
||||
final files = await _pickPlatformFiles(
|
||||
allowMultiple: allowMultiple,
|
||||
type: allowedExtensions != null ? FileType.custom : FileType.any,
|
||||
allowedExtensions: allowedExtensions,
|
||||
);
|
||||
|
||||
if (result == null || result.files.isEmpty) {
|
||||
if (files.isEmpty) {
|
||||
return [];
|
||||
}
|
||||
|
||||
return result.files.where((file) => file.path != null).map((file) {
|
||||
return files.where((file) => file.path != null).map((file) {
|
||||
final displayName = _deriveDisplayName(
|
||||
preferredName: file.name,
|
||||
filePath: file.path!,
|
||||
|
|
@ -328,20 +348,14 @@ class FileAttachmentService {
|
|||
|
||||
Future<LocalAttachment?> _pickImageWithFilePicker() async {
|
||||
try {
|
||||
final result = await FilePicker.pickFiles(
|
||||
allowMultiple: false,
|
||||
type: FileType.image,
|
||||
);
|
||||
final platformFile = await FilePicker.pickFile(type: FileType.image);
|
||||
|
||||
if (result != null && result.files.isNotEmpty) {
|
||||
final platformFile = result.files.first;
|
||||
if (platformFile.path != null) {
|
||||
return _localAttachmentFromPath(
|
||||
filePath: platformFile.path!,
|
||||
preferredName: platformFile.name,
|
||||
fallbackPrefix: 'photo',
|
||||
);
|
||||
}
|
||||
if (platformFile != null && platformFile.path != null) {
|
||||
return _localAttachmentFromPath(
|
||||
filePath: platformFile.path!,
|
||||
preferredName: platformFile.name,
|
||||
fallbackPrefix: 'photo',
|
||||
);
|
||||
}
|
||||
} catch (e) {
|
||||
DebugLogger.log(
|
||||
|
|
@ -356,10 +370,7 @@ class FileAttachmentService {
|
|||
|
||||
Future<List<LocalAttachment>> _pickImagesWithFilePicker() async {
|
||||
try {
|
||||
final result = await FilePicker.pickFiles(
|
||||
allowMultiple: true,
|
||||
type: FileType.image,
|
||||
);
|
||||
final result = await FilePicker.pickFiles(type: FileType.image);
|
||||
|
||||
if (result == null || result.files.isEmpty) {
|
||||
return [];
|
||||
|
|
@ -614,17 +625,17 @@ class MockFileAttachmentService {
|
|||
List<String>? allowedExtensions,
|
||||
}) async {
|
||||
try {
|
||||
final result = await FilePicker.pickFiles(
|
||||
final files = await _pickPlatformFiles(
|
||||
allowMultiple: allowMultiple,
|
||||
type: allowedExtensions != null ? FileType.custom : FileType.any,
|
||||
allowedExtensions: allowedExtensions,
|
||||
);
|
||||
|
||||
if (result == null || result.files.isEmpty) {
|
||||
if (files.isEmpty) {
|
||||
return [];
|
||||
}
|
||||
|
||||
return result.files.where((file) => file.path != null).map((file) {
|
||||
return files.where((file) => file.path != null).map((file) {
|
||||
final displayName = _deriveDisplayName(
|
||||
preferredName: file.name,
|
||||
filePath: file.path!,
|
||||
|
|
|
|||
|
|
@ -334,7 +334,10 @@ class VoiceInputService {
|
|||
}
|
||||
|
||||
// Start and stop quickly to test
|
||||
await _speech.listen(onResult: (_) {}, localeId: _selectedLocaleId);
|
||||
await _speech.listen(
|
||||
onResult: (_) {},
|
||||
listenOptions: SpeechListenOptions(localeId: _selectedLocaleId),
|
||||
);
|
||||
await Future.delayed(const Duration(milliseconds: 100));
|
||||
await _speech.stop();
|
||||
|
||||
|
|
@ -488,11 +491,10 @@ class VoiceInputService {
|
|||
try {
|
||||
await _speech.listen(
|
||||
onResult: _handleSttResult,
|
||||
localeId: _selectedLocaleId,
|
||||
listenFor: _localRecognitionMaxDuration,
|
||||
// Use user's silence duration setting for pause detection
|
||||
pauseFor: pauseDuration,
|
||||
listenOptions: SpeechListenOptions(
|
||||
localeId: _selectedLocaleId,
|
||||
listenFor: _localRecognitionMaxDuration,
|
||||
pauseFor: pauseDuration,
|
||||
listenMode: ListenMode.dictation,
|
||||
cancelOnError: false,
|
||||
partialResults: true,
|
||||
|
|
|
|||
|
|
@ -48,40 +48,39 @@ class NativeCallSurfaceCallkit implements NativeCallSurface {
|
|||
Future<void> endAllCalls() => _service.endAllCalls();
|
||||
|
||||
NativeCallEvent? _mapEvent(CallEvent event) {
|
||||
final body = event.body;
|
||||
final callId = body is Map ? body['id']?.toString() : null;
|
||||
|
||||
switch (event.event) {
|
||||
case Event.actionCallEnded:
|
||||
case Event.actionCallDecline:
|
||||
return NativeCallEvent(type: NativeCallEventType.ended, callId: callId);
|
||||
case Event.actionCallTimeout:
|
||||
return NativeCallEvent(
|
||||
type: NativeCallEventType.timeout,
|
||||
callId: callId,
|
||||
);
|
||||
case Event.actionCallConnected:
|
||||
return NativeCallEvent(
|
||||
type: NativeCallEventType.connected,
|
||||
callId: callId,
|
||||
);
|
||||
case Event.actionCallToggleMute:
|
||||
final isMuted = body is Map ? body['isMuted'] == true : body == true;
|
||||
return NativeCallEvent(
|
||||
type: NativeCallEventType.muteToggled,
|
||||
callId: callId,
|
||||
isMuted: isMuted,
|
||||
);
|
||||
case Event.actionCallToggleHold:
|
||||
final isOnHold = body is Map ? body['isOnHold'] == true : body == true;
|
||||
return NativeCallEvent(
|
||||
type: NativeCallEventType.holdToggled,
|
||||
callId: callId,
|
||||
isOnHold: isOnHold,
|
||||
);
|
||||
default:
|
||||
return null;
|
||||
if (event is CallEventActionCallEnded) {
|
||||
return NativeCallEvent(type: NativeCallEventType.ended, callId: event.id);
|
||||
}
|
||||
if (event is CallEventActionCallDecline) {
|
||||
return NativeCallEvent(type: NativeCallEventType.ended, callId: event.id);
|
||||
}
|
||||
if (event is CallEventActionCallTimeout) {
|
||||
return NativeCallEvent(
|
||||
type: NativeCallEventType.timeout,
|
||||
callId: event.id,
|
||||
);
|
||||
}
|
||||
if (event is CallEventActionCallConnected) {
|
||||
return NativeCallEvent(
|
||||
type: NativeCallEventType.connected,
|
||||
callId: event.id,
|
||||
);
|
||||
}
|
||||
if (event is CallEventActionCallToggleMute) {
|
||||
return NativeCallEvent(
|
||||
type: NativeCallEventType.muteToggled,
|
||||
callId: event.id,
|
||||
isMuted: event.isMuted,
|
||||
);
|
||||
}
|
||||
if (event is CallEventActionCallToggleHold) {
|
||||
return NativeCallEvent(
|
||||
type: NativeCallEventType.holdToggled,
|
||||
callId: event.id,
|
||||
isOnHold: event.isOnHold,
|
||||
);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -557,8 +557,9 @@ class _TerminalTabState extends ConsumerState<TerminalTab>
|
|||
}) async {
|
||||
final sessionScopeId = ref.read(terminalSessionScopeIdProvider);
|
||||
final normalizedPath = ensureTerminalDirectoryPath(path);
|
||||
final failedToLoadFilesMessage =
|
||||
AppLocalizations.of(context)!.terminalFailedToLoadFiles;
|
||||
final failedToLoadFilesMessage = AppLocalizations.of(
|
||||
context,
|
||||
)!.terminalFailedToLoadFiles;
|
||||
|
||||
if (mounted) {
|
||||
setState(() => _loadingFiles = true);
|
||||
|
|
@ -601,8 +602,9 @@ class _TerminalTabState extends ConsumerState<TerminalTab>
|
|||
TerminalServerInfo server,
|
||||
) async {
|
||||
final sessionScopeId = ref.read(terminalSessionScopeIdProvider);
|
||||
final failedToLoadPortsMessage =
|
||||
AppLocalizations.of(context)!.terminalFailedToLoadPorts;
|
||||
final failedToLoadPortsMessage = AppLocalizations.of(
|
||||
context,
|
||||
)!.terminalFailedToLoadPorts;
|
||||
if (mounted) {
|
||||
setState(() => _loadingPorts = true);
|
||||
}
|
||||
|
|
@ -842,8 +844,7 @@ class _TerminalTabState extends ConsumerState<TerminalTab>
|
|||
|
||||
final l10n = AppLocalizations.of(context)!;
|
||||
try {
|
||||
final result = await FilePicker.pickFiles(withData: true);
|
||||
final pickedFile = result?.files.single;
|
||||
final pickedFile = await FilePicker.pickFile();
|
||||
if (pickedFile == null) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -932,12 +933,12 @@ class _TerminalTabState extends ConsumerState<TerminalTab>
|
|||
return File(pickedFile.path!);
|
||||
}
|
||||
|
||||
final bytes = pickedFile.bytes;
|
||||
if (bytes == null) {
|
||||
try {
|
||||
final bytes = await pickedFile.readAsBytes();
|
||||
return _materializeTempFile(pickedFile.name, bytes);
|
||||
} catch (_) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return _materializeTempFile(pickedFile.name, bytes);
|
||||
}
|
||||
|
||||
Future<File> _materializeTempFile(String fileName, List<int> bytes) async {
|
||||
|
|
|
|||
244
pubspec.lock
244
pubspec.lock
|
|
@ -229,10 +229,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: code_assets
|
||||
sha256: "83ccdaa064c980b5596c35dd64a8d3ecc68620174ab9b90b6343b753aa721687"
|
||||
sha256: bf394f466ba9205f1812a0433b392d6af280f155f56651eda7c18cc32ed493b8
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.0"
|
||||
version: "1.2.1"
|
||||
code_builder:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -349,10 +349,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: dbus
|
||||
sha256: d0c98dcd4f5169878b6cf8f6e0a52403a9dff371a3e2f019697accbf6f44a270
|
||||
sha256: "792974a4007974fbc5c1b5433eb2330a9db3e368c3f906253af4c007d0f49a91"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.7.12"
|
||||
version: "0.7.13"
|
||||
dio:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
|
@ -393,6 +393,14 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.0"
|
||||
ffi_leak_tracker:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: ffi_leak_tracker
|
||||
sha256: "4093d4ef9ca06ffe2786e73bfb25e22aa92112b9bb4ec941f11e3e6b61489a97"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.1.2"
|
||||
file:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -405,10 +413,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: file_picker
|
||||
sha256: f13a03000d942e476bc1ff0a736d2e9de711d2f89a95cd4c1d88f861c3348387
|
||||
sha256: fc83774ce5bd7ce08168333b5e53dbe9090ec04eb21e7aa7cd7bac921032c934
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "11.0.2"
|
||||
version: "12.0.0-beta.5"
|
||||
file_selector_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -474,10 +482,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_callkit_incoming
|
||||
sha256: "3589deb8b71e43f2d520a9c8a5240243f611062a8b246cdca4b1fda01fbbf9b8"
|
||||
sha256: "83beeb7b85bcdf9b410c724dba4b54bbc588f5723efe075fd4b53b162b32a014"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.0"
|
||||
version: "3.1.1"
|
||||
flutter_driver:
|
||||
dependency: "direct main"
|
||||
description: flutter
|
||||
|
|
@ -615,34 +623,42 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_local_notifications
|
||||
sha256: "0d9035862236fe38250fe1644d7ed3b8254e34a21b2c837c9f539fbb3bba5ef1"
|
||||
sha256: "3c7aeaded67100c7eecaac46e40097952f1afb8562a3e8b974515ea9cdc5439a"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "21.0.0"
|
||||
version: "22.0.0-dev.3"
|
||||
flutter_local_notifications_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_local_notifications_linux
|
||||
sha256: e0f25e243c6c44c825bbbc6b2b2e76f7d9222362adcfe9fd780bf01923c840bd
|
||||
sha256: ad8c60755a783d632ac17e42f03053dabbddfe5766f48b5340b1dac159f94d46
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "8.0.0"
|
||||
version: "8.0.1-dev.1"
|
||||
flutter_local_notifications_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_local_notifications_platform_interface
|
||||
sha256: e7db3d5b49c2b7ecc68deba4aaaa67a348f92ee0fef34c8e4b4459dbef0d7307
|
||||
sha256: "21d45c421e4069d26fccfdd7934a5a5155f2ff352e1fbec0f9efbab3eb243646"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "11.0.0"
|
||||
version: "12.0.0-dev.1"
|
||||
flutter_local_notifications_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_local_notifications_web
|
||||
sha256: "8868c009ed125ab2990fe7b5cf84c26b9f25132da40303cfa8a0682efb01922c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.0-dev.2"
|
||||
flutter_local_notifications_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_local_notifications_windows
|
||||
sha256: "3a2654ba104fbb52c618ebed9def24ef270228470718c43b3a6afcd5c81bef0c"
|
||||
sha256: "2ec0b816f25b5cd59e7a40f88925dbf0fff30944736b71b6920bdd7a421b145e"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.0"
|
||||
version: "3.1.0-dev.2"
|
||||
flutter_localizations:
|
||||
dependency: "direct main"
|
||||
description: flutter
|
||||
|
|
@ -652,18 +668,18 @@ packages:
|
|||
dependency: "direct dev"
|
||||
description:
|
||||
name: flutter_native_splash
|
||||
sha256: "4fb9f4113350d3a80841ce05ebf1976a36de622af7d19aca0ca9a9911c7ff002"
|
||||
sha256: "9db4b80b044e9af17cc4b1272137fc7ace0054d879ef8210a76adc34aaf4cdff"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.7"
|
||||
version: "2.4.8"
|
||||
flutter_plugin_android_lifecycle:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_plugin_android_lifecycle
|
||||
sha256: "38d1c268de9097ff59cf0e844ac38759fc78f76836d37edad06fa21e182055a0"
|
||||
sha256: "3854fe5e3bff0b113c658f260b90c95dea17c92db0f2addeac2e343dd9969785"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.34"
|
||||
version: "2.0.35"
|
||||
flutter_riverpod:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
|
@ -676,26 +692,26 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_secure_storage
|
||||
sha256: "6848263f9744072d0977347c383fb8b57d9780319a6bf5238b5a2866a029de62"
|
||||
sha256: "7686b1d6a29985dcbb808c59518226e603e3bfa7c0ddfd1a0d00e4cda77c868e"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "10.2.0"
|
||||
version: "10.3.1"
|
||||
flutter_secure_storage_darwin:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_secure_storage_darwin
|
||||
sha256: "67cd1ff671add31dc13e45194398187a04bb63804b37fa47866afae296d73fcb"
|
||||
sha256: "82329fa5cdf343773b1b6897dea959105a29f092454259edff92f9f6637e8149"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.3.1"
|
||||
version: "0.3.2"
|
||||
flutter_secure_storage_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_secure_storage_linux
|
||||
sha256: "2b5c76dce569ab752d55a1cee6a2242bcc11fdba927078fb88c503f150767cda"
|
||||
sha256: a5f35ddab43cf5c8215d2feb4ce1957851f28c5c37e6f04335066a0602087bf5
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.0"
|
||||
version: "3.0.1"
|
||||
flutter_secure_storage_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -716,10 +732,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: flutter_secure_storage_windows
|
||||
sha256: "3b7c8e068875dfd46719ff57c90d8c459c87f2302ed6b00ff006b3c9fcad1613"
|
||||
sha256: "471951813a97006d899db4948acc654a4f28c440083ea08178935ce20b173ec1"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.1.0"
|
||||
version: "4.2.2"
|
||||
flutter_shaders:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -835,10 +851,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: geolocator_linux
|
||||
sha256: d64112a205931926f4363bb6bd48f14cb38e7326833041d170615586cd143797
|
||||
sha256: b02993d59b753bf1967ed28862002841aec5cdd5090c1f495213b32ce488aced
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.2.4"
|
||||
version: "0.2.5"
|
||||
geolocator_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -875,10 +891,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: go_router
|
||||
sha256: "92d8cee7c57dff0a6c409c05597b460002434eccf7424a712283225b3962d03f"
|
||||
sha256: "5922b2861e2235a3504896f0d6fa07d84141b480cf52eecd2f42cd25585a9e8a"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "17.2.3"
|
||||
version: "17.3.0"
|
||||
graphs:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -931,10 +947,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: hooks
|
||||
sha256: "025f060e86d2d4c3c47b56e33caf7f93bf9283340f26d23424ebcfccf34f621e"
|
||||
sha256: "9a62a50b50b769a737bc0a8ff381f333529df3ab746b2f6b02e83760231455ba"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.3"
|
||||
version: "2.0.2"
|
||||
html:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -979,10 +995,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: image
|
||||
sha256: f9881ff4998044947ec38d098bc7c8316ae1186fa786eddffdb867b9bc94dfce
|
||||
sha256: "6300175e00616bbc832e2fc91bfa4d776af5402c81c7151bee6905bb08473c52"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.8.0"
|
||||
version: "4.9.1"
|
||||
image_picker:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
|
@ -995,10 +1011,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: image_picker_android
|
||||
sha256: d5b3e1774af29c9ab00103afb0d4614070f924d2e0057ac867ec98800114793f
|
||||
sha256: "6f3a1995eafb000333174fae92202622033b0ee7fd917a6cd3730295264df84a"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.8.13+17"
|
||||
version: "0.8.13+19"
|
||||
image_picker_for_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -1099,10 +1115,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: jovial_svg
|
||||
sha256: "99e9c3afcf7371ae38083ad52de23677d6d751f46150c3c6ae842e009e84d9f0"
|
||||
sha256: "53d5ef08fafb28c56131bfd83894221597f522c324fb0f0e6fcbfdcae3b0867d"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.29"
|
||||
version: "1.1.30"
|
||||
json_annotation:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
|
@ -1239,14 +1255,6 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.5"
|
||||
native_toolchain_c:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: native_toolchain_c
|
||||
sha256: "6ba77bb18063eebe9de401f5e6437e95e1438af0a87a3a39084fbd37c90df572"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.17.6"
|
||||
nm:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -1267,10 +1275,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: objective_c
|
||||
sha256: "100a1c87616ab6ed41ec263b083c0ef3261ee6cd1dc3b0f35f8ddfa4f996fe52"
|
||||
sha256: "6cb691c686fa2838c6deb34980d426145c2a5d537491cb83d463c33cdbc726ed"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "9.3.0"
|
||||
version: "9.4.1"
|
||||
octo_image:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -1291,18 +1299,18 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: package_info_plus
|
||||
sha256: "468c26b4254ab01979fa5e4a98cb343ea3631b9acee6f21028997419a80e1a20"
|
||||
sha256: "4bf625947f6c7713ee242296a682e23e44823c09cf9d79e4f1238923c92db852"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "9.0.1"
|
||||
version: "10.1.0"
|
||||
package_info_plus_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: package_info_plus_platform_interface
|
||||
sha256: "202a487f08836a592a6bd4f901ac69b3a8f146af552bbd14407b6b41e1c3f086"
|
||||
sha256: db762cb2f4f25ee60fb6359773861b0f199e00b90d237bd85a76a1e806b46ef4
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.2.1"
|
||||
version: "4.1.0"
|
||||
path:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
|
@ -1367,22 +1375,14 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.0"
|
||||
pedantic:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: pedantic
|
||||
sha256: "67fc27ed9639506c856c840ccce7594d0bdcd91bc8d53d6e52359449a1d50602"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.11.1"
|
||||
permission_handler:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: permission_handler
|
||||
sha256: bc917da36261b00137bbc8896bf1482169cd76f866282368948f032c8c1caae1
|
||||
sha256: fe54465bcc62a4564c6e4db337bbaded6c0c0fa6e10487414436d163114784f6
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "12.0.1"
|
||||
version: "12.0.3"
|
||||
permission_handler_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -1395,10 +1395,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: permission_handler_apple
|
||||
sha256: f000131e755c54cf4d84a5d8bd6e4149e262cc31c5a8b1d698de1ac85fa41023
|
||||
sha256: e20daf680eef1ca62ffe8c8c526b778cc386d50137c77ac71c8ec9c88c13fb9d
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "9.4.7"
|
||||
version: "9.4.9"
|
||||
permission_handler_html:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -1499,10 +1499,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: quick_actions_android
|
||||
sha256: "6fbdda87fbedd0602b91f35d870c2cbcb6d053bc863efb76c6e7f60f1d8e3fd6"
|
||||
sha256: af50d52d882a0f520c4be082636b5177b3de239bd468857d5da0b5a6eec61e07
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.30"
|
||||
version: "1.0.32"
|
||||
quick_actions_ios:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -1531,50 +1531,50 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: record
|
||||
sha256: d5b6b334f3ab02460db6544e08583c942dbf23e3504bf1e14fd4cbe3d9409277
|
||||
sha256: "10911465138fafacef459a780564e883e01bd48eabf87ab20543684884492870"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.2.0"
|
||||
version: "6.2.1"
|
||||
record_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: record_android
|
||||
sha256: "94783f08403aed33ffb68797bf0715b0812eb852f3c7985644c945faea462ba1"
|
||||
sha256: eb1732e42d0d2a1895b8db86e4fc917287e6d8491b6ed59918aea8bed6c69de4
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.5.1"
|
||||
version: "1.5.2"
|
||||
record_ios:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: record_ios
|
||||
sha256: "8df7c136131bd05efc19256af29b2ba6ccc000ccc2c80d4b6b6d7a8d21a3b5a9"
|
||||
sha256: c051fb48edd7a0e265daafb9108730dc827c27b551728a3fdfb3ef69efd89c73
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.0"
|
||||
version: "1.2.1"
|
||||
record_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: record_linux
|
||||
sha256: c31a35cc158cd666fc6395f7f56fc054f31685571684be6b97670a27649ce5c7
|
||||
sha256: "31181787bf7eccb0e298835836b69b3cd0a903863b75d70e937de3dec71cd8f3"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.0"
|
||||
version: "1.3.1"
|
||||
record_macos:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: record_macos
|
||||
sha256: "084902e63fc9c0c224c29203d6c75f0bdf9b6a40536c9d916393c8f4c4256488"
|
||||
sha256: cfe1b61435e27db418bf513dc36820d10c9f7eb1843786c2c9a52e07e2f4f627
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.1"
|
||||
version: "1.2.2"
|
||||
record_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: record_platform_interface
|
||||
sha256: "8a81dbc4e14e1272a285bbfef6c9136d070a47d9b0d1f40aa6193516253ee2f6"
|
||||
sha256: "8e56cbe06c6984137fb86132ff03459f29938d927496d9b2d0962e2d6345d488"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.5.0"
|
||||
version: "1.6.0"
|
||||
record_use:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -1651,18 +1651,18 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: share_plus
|
||||
sha256: "223873d106614442ea6f20db5a038685cc5b32a2fba81cdecaefbbae0523f7fa"
|
||||
sha256: a857d8b1479250aff6b57a51b2c02d31ca05848d441817c43f1640c885c286c0
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "12.0.2"
|
||||
version: "13.1.0"
|
||||
share_plus_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: share_plus_platform_interface
|
||||
sha256: "88023e53a13429bd65d8e85e11a9b484f49d4c190abbd96c7932b74d6927cc9a"
|
||||
sha256: "7f7ae28cf400d13f811e297ff37742dba83b79e0a6f5dce14eec0248274e6ce9"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.1.0"
|
||||
version: "7.1.0"
|
||||
shared_preferences:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
|
@ -1675,10 +1675,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_android
|
||||
sha256: e8d4762b1e2e8578fc4d0fd548cebf24afd24f49719c08974df92834565e2c53
|
||||
sha256: a2c49fc1fed7140cadd892d765bd47edbe4ac0b9c7e7e3c493dcb58126f99cf0
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.23"
|
||||
version: "2.4.25"
|
||||
shared_preferences_foundation:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -1816,66 +1816,66 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: speech_to_text
|
||||
sha256: c07557664974afa061f221d0d4186935bea4220728ea9446702825e8b988db04
|
||||
sha256: "75587f7400f485fdf166beacd471549d98fe5d58e634f708916bb65dec05d6a4"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "7.3.0"
|
||||
version: "7.4.0"
|
||||
speech_to_text_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: speech_to_text_platform_interface
|
||||
sha256: a1935847704e41ee468aad83181ddd2423d0833abe55d769c59afca07adb5114
|
||||
sha256: a7e16e02853853ed7534ac2bde9a1c4f39c8879970a7974ac6ff832d4bdaa4b0
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.0"
|
||||
version: "2.4.0"
|
||||
speech_to_text_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: speech_to_text_windows
|
||||
sha256: "2c9846d18253c7bbe059a276297ef9f27e8a2745dead32192525beb208195072"
|
||||
sha256: "2d1d10565b23262386b453b33656299608dc7a66784453735d6c1318f13f44d7"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.0+beta.8"
|
||||
version: "1.0.1"
|
||||
sqflite:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: sqflite
|
||||
sha256: "564cfed0746fe53140c23b70b308e045c3b31f17778f2f326ccb7d804ea0250a"
|
||||
sha256: "58a799e6ac17dd32fbab93813d39ed835a75ccc0f8f85b8955fe318c6712b082"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.2+1"
|
||||
version: "2.4.3"
|
||||
sqflite_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: sqflite_android
|
||||
sha256: "881e28efdcc9950fd8e9bb42713dcf1103e62a2e7168f23c9338d82db13dec40"
|
||||
sha256: d0548f9d7422a2dae99ec6f8b0a3074463b132d216fa5ba0d230eeefc901983b
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.2+3"
|
||||
version: "2.4.3"
|
||||
sqflite_common:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: sqflite_common
|
||||
sha256: f8a08a13fb8f0f8c590df89d745000bed44a673ed94bac846739e1a016875c21
|
||||
sha256: cce558075afe2a83f3fd7fc123acd6b090683e4f23910d44fbb31ecd7800b014
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.5.7"
|
||||
version: "2.5.9"
|
||||
sqflite_darwin:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: sqflite_darwin
|
||||
sha256: "279832e5cde3fe99e8571879498c9211f3ca6391b0d818df4e17d9fff5c6ccb3"
|
||||
sha256: "164a5d73ab87a134566057219988bafde837029a64264e61f1f04376ef3cfcd2"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.2"
|
||||
version: "2.4.3"
|
||||
sqflite_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: sqflite_platform_interface
|
||||
sha256: "8dd4515c7bdcae0a785b0062859336de775e8c65db81ae33dd5445f35be61920"
|
||||
sha256: f84939f84350d92d04416f8bc4dc52d3896aec7716cc9e80cf0146342139dc50
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.0"
|
||||
version: "2.4.1"
|
||||
stack_trace:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -1937,10 +1937,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: synchronized
|
||||
sha256: "63896c27e81b28f8cb4e69ead0d3e8f03f1d1e5fc531a3e579cabed6a2c7c9e5"
|
||||
sha256: "93b153dcb6a26dcddee6ca087dd634b53e38c10b5aa163e8e49501a776456153"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.4.0+1"
|
||||
version: "3.4.1"
|
||||
term_glyph:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -2009,10 +2009,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_android
|
||||
sha256: "3bb000251e55d4a209aa0e2e563309dc9bb2befea2295fd0cec1f51760aac572"
|
||||
sha256: b413d49b73867ac08dd2f9890efd3cc11f2a0e577618d50843440a1fb3776c32
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.3.29"
|
||||
version: "6.3.32"
|
||||
url_launcher_ios:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -2073,18 +2073,18 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: vad
|
||||
sha256: ef6c8b12c5af7a6a519ff5684f074b8a2ac00c434705f544af379ea77bccd258
|
||||
sha256: "0a0ad600e3dbbfdc241b3f1404c9b3926be3cd8dc1ca51ae5d2fdb311ab8bb7e"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.0.7+1"
|
||||
version: "0.0.8"
|
||||
vector_graphics:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: vector_graphics
|
||||
sha256: "4d35a36400983c3457c289d4d553b5308f506ea84f7e51c7a564651b5525209a"
|
||||
sha256: "2306c03da2ba81724afeb589c351ebbc0aa7d86005925be8f8735856dbe5e42d"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.1"
|
||||
version: "1.2.2"
|
||||
vector_graphics_codec:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -2097,10 +2097,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: vector_graphics_compiler
|
||||
sha256: "98e7e94de127b46a86ef46197fff84ff99f3d3b80a708390d717ad731efef598"
|
||||
sha256: "7ee12e6dffe0fc8e755179d6d91b3b34f5924223fc104d85572ef9180d73d172"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.2"
|
||||
version: "1.2.5"
|
||||
vector_math:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -2121,10 +2121,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: wakelock_plus
|
||||
sha256: ddf3db70eaa10c37558ff817519b85d527dbd21034fd5d8e1c2e85f31588f1c1
|
||||
sha256: "824c5bba0f800e86d32e57d3d1843c531f090005cc89d9a837933e6601093d53"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.5.2"
|
||||
version: "1.6.1"
|
||||
wakelock_plus_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -2193,10 +2193,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: webview_flutter_android
|
||||
sha256: ad5182eff9a550925330cb9f0cb038eddfdd5712aba8b77aa0f0400e50f6e688
|
||||
sha256: e37e565ed17605a4dbf3ad9c109afb06523e268963e8a9748137e6d8ecd9c955
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.12.0"
|
||||
version: "4.12.2"
|
||||
webview_flutter_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -2225,10 +2225,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: win32
|
||||
sha256: d7cb55e04cd34096cd3a79b3330245f54cb96a370a1c27adb3c84b917de8b08e
|
||||
sha256: ba6f4bba816c8d7e3c1580e170f3786d216951cc6b94babc3b814c08d2cb2738
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.15.0"
|
||||
version: "6.3.0"
|
||||
xdg_directories:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -2241,10 +2241,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: xml
|
||||
sha256: "971043b3a0d3da28727e40ed3e0b5d18b742fa5a68665cca88e74b7876d5e025"
|
||||
sha256: "67f0aff7be013d107995e9b75bf4e7f2c3ef2dfdb2c8e68024bba0a7fd5756a4"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.6.1"
|
||||
version: "7.0.1"
|
||||
xterm:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
|
@ -2278,5 +2278,5 @@ packages:
|
|||
source: hosted
|
||||
version: "0.0.6"
|
||||
sdks:
|
||||
dart: ">=3.11.0 <4.0.0"
|
||||
flutter: ">=3.41.0"
|
||||
dart: ">=3.12.0 <4.0.0"
|
||||
flutter: ">=3.44.0"
|
||||
|
|
|
|||
14
pubspec.yaml
14
pubspec.yaml
|
|
@ -43,14 +43,14 @@ dependencies:
|
|||
flutter_animate: ^4.5.0
|
||||
|
||||
# Platform Features
|
||||
vad: ^0.0.7+1
|
||||
speech_to_text: ^7.3.0
|
||||
vad: ^0.0.8
|
||||
speech_to_text: ^7.4.0
|
||||
record: ^6.2.0
|
||||
flutter_tts: ^4.2.5
|
||||
audio_session: ^0.2.2
|
||||
permission_handler: ^12.0.1
|
||||
image_picker: ^1.2.0
|
||||
file_picker: ^11.0.2
|
||||
file_picker: ^12.0.0-beta.5
|
||||
flutter_image_compress: ^2.1.0
|
||||
path_provider: ^2.1.4
|
||||
|
||||
|
|
@ -58,7 +58,7 @@ dependencies:
|
|||
path: ^1.9.0
|
||||
uuid: ^4.5.0
|
||||
crypto: ^3.0.3
|
||||
package_info_plus: ^9.0.1
|
||||
package_info_plus: ^10.1.0
|
||||
url_launcher: ^6.3.0
|
||||
intl: ^0.20.2
|
||||
|
||||
|
|
@ -67,13 +67,13 @@ dependencies:
|
|||
json_annotation: ^4.9.0
|
||||
freezed_annotation: ^3.0.0
|
||||
wakelock_plus: ^1.4.0
|
||||
share_plus: ^12.0.0
|
||||
share_plus: ^13.1.0
|
||||
riverpod_annotation: ^4.0.0
|
||||
flutter_local_notifications: ^21.0.0
|
||||
flutter_local_notifications: ^22.0.0-dev.3
|
||||
connectivity_plus: ^7.0.0
|
||||
flutter_cache_manager: ^3.4.1
|
||||
http: ^1.5.0
|
||||
flutter_callkit_incoming: ^3.0.0
|
||||
flutter_callkit_incoming: ^3.1.1
|
||||
quick_actions: 1.1.0
|
||||
html_unescape: ^2.0.0
|
||||
home_widget: ^0.9.2
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue