translate GUI for background downloads

make saving in /sdcard/Download
This commit is contained in:
OfficialDakari 2025-09-13 22:30:45 +05:00
parent 7aca312d29
commit 4b1064f2a3
57 changed files with 205 additions and 29 deletions

View File

@ -1564,6 +1564,11 @@
"type": "String", "type": "String",
"placeholders": {} "placeholders": {}
}, },
"downloads": "Downloads",
"@downloads": {
"type": "String",
"placeholders": {}
},
"passwordForgotten": "Forgot password", "passwordForgotten": "Forgot password",
"@passwordForgotten": { "@passwordForgotten": {
"type": "String", "type": "String",

View File

@ -2822,6 +2822,11 @@
} }
} }
}, },
"downloads": "Загрузки",
"@downloads": {
"type": "String",
"placeholders": {}
},
"doYouWantToBan": "Забанить {user}", "doYouWantToBan": "Забанить {user}",
"@doYouWantToBan": { "@doYouWantToBan": {
"type": "String", "type": "String",

View File

@ -2073,6 +2073,12 @@ abstract class L10n {
/// **'Password'** /// **'Password'**
String get password; String get password;
/// No description provided for @downloads.
///
/// In en, this message translates to:
/// **'Downloads'**
String get downloads;
/// No description provided for @passwordForgotten. /// No description provided for @passwordForgotten.
/// ///
/// In en, this message translates to: /// In en, this message translates to:

View File

@ -1084,6 +1084,9 @@ class L10nAr extends L10n {
@override @override
String get password => 'كلمة السر'; String get password => 'كلمة السر';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'نسيتَ كلمة السر'; String get passwordForgotten => 'نسيتَ كلمة السر';

View File

@ -1092,6 +1092,9 @@ class L10nBe extends L10n {
@override @override
String get password => 'Password'; String get password => 'Password';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Forgot password'; String get passwordForgotten => 'Forgot password';

View File

@ -1092,6 +1092,9 @@ class L10nBn extends L10n {
@override @override
String get password => 'Password'; String get password => 'Password';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Forgot password'; String get passwordForgotten => 'Forgot password';

View File

@ -1092,6 +1092,9 @@ class L10nBo extends L10n {
@override @override
String get password => 'Password'; String get password => 'Password';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Forgot password'; String get passwordForgotten => 'Forgot password';

View File

@ -1102,6 +1102,9 @@ class L10nCa extends L10n {
@override @override
String get password => 'Contrasenya'; String get password => 'Contrasenya';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Contrasenya oblidada'; String get passwordForgotten => 'Contrasenya oblidada';

View File

@ -1097,6 +1097,9 @@ class L10nCs extends L10n {
@override @override
String get password => 'Heslo'; String get password => 'Heslo';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Zapomenuté heslo'; String get passwordForgotten => 'Zapomenuté heslo';

View File

@ -1099,6 +1099,9 @@ class L10nDe extends L10n {
@override @override
String get password => 'Passwort'; String get password => 'Passwort';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Passwort vergessen'; String get passwordForgotten => 'Passwort vergessen';

View File

@ -1093,6 +1093,9 @@ class L10nEl extends L10n {
@override @override
String get password => 'Password'; String get password => 'Password';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Forgot password'; String get passwordForgotten => 'Forgot password';

View File

@ -1092,6 +1092,9 @@ class L10nEn extends L10n {
@override @override
String get password => 'Password'; String get password => 'Password';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Forgot password'; String get passwordForgotten => 'Forgot password';

View File

@ -1096,6 +1096,9 @@ class L10nEo extends L10n {
@override @override
String get password => 'Pasvorto'; String get password => 'Pasvorto';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Forgesita pasvorto'; String get passwordForgotten => 'Forgesita pasvorto';

View File

@ -1104,6 +1104,9 @@ class L10nEs extends L10n {
@override @override
String get password => 'Contraseña'; String get password => 'Contraseña';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Contraseña olvidada'; String get passwordForgotten => 'Contraseña olvidada';

View File

@ -1099,6 +1099,9 @@ class L10nEt extends L10n {
@override @override
String get password => 'Salasõna'; String get password => 'Salasõna';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Salasõna on ununenud'; String get passwordForgotten => 'Salasõna on ununenud';

View File

@ -1098,6 +1098,9 @@ class L10nEu extends L10n {
@override @override
String get password => 'Pasahitza'; String get password => 'Pasahitza';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Pasahitza ahaztu dut'; String get passwordForgotten => 'Pasahitza ahaztu dut';

View File

@ -1092,6 +1092,9 @@ class L10nFa extends L10n {
@override @override
String get password => 'رمز عبور'; String get password => 'رمز عبور';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'رمز عبور را فراموش کرده‌ام'; String get passwordForgotten => 'رمز عبور را فراموش کرده‌ام';

View File

@ -1097,6 +1097,9 @@ class L10nFi extends L10n {
@override @override
String get password => 'Salasana'; String get password => 'Salasana';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Salasana unohtunut'; String get passwordForgotten => 'Salasana unohtunut';

View File

@ -1098,6 +1098,9 @@ class L10nFil extends L10n {
@override @override
String get password => 'Password'; String get password => 'Password';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Forgot password'; String get passwordForgotten => 'Forgot password';

View File

@ -1110,6 +1110,9 @@ class L10nFr extends L10n {
@override @override
String get password => 'Mot de passe'; String get password => 'Mot de passe';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Mot de passe oublié'; String get passwordForgotten => 'Mot de passe oublié';

View File

@ -1106,6 +1106,9 @@ class L10nGa extends L10n {
@override @override
String get password => 'Pasfhocal'; String get password => 'Pasfhocal';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Pasfhocal dearmadta'; String get passwordForgotten => 'Pasfhocal dearmadta';

View File

@ -1098,6 +1098,9 @@ class L10nGl extends L10n {
@override @override
String get password => 'Contrasinal'; String get password => 'Contrasinal';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Contrasinal esquecido'; String get passwordForgotten => 'Contrasinal esquecido';

View File

@ -1088,6 +1088,9 @@ class L10nHe extends L10n {
@override @override
String get password => 'סיסמה'; String get password => 'סיסמה';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'שכחתי סיסמה'; String get passwordForgotten => 'שכחתי סיסמה';

View File

@ -1092,6 +1092,9 @@ class L10nHi extends L10n {
@override @override
String get password => 'Password'; String get password => 'Password';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Forgot password'; String get passwordForgotten => 'Forgot password';

View File

@ -1095,6 +1095,9 @@ class L10nHr extends L10n {
@override @override
String get password => 'Lozinka'; String get password => 'Lozinka';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Zaboravljena lozinka'; String get passwordForgotten => 'Zaboravljena lozinka';

View File

@ -1096,6 +1096,9 @@ class L10nHu extends L10n {
@override @override
String get password => 'Jelszó'; String get password => 'Jelszó';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Elfelejtett jelszó'; String get passwordForgotten => 'Elfelejtett jelszó';

View File

@ -1092,6 +1092,9 @@ class L10nIa extends L10n {
@override @override
String get password => 'Password'; String get password => 'Password';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Forgot password'; String get passwordForgotten => 'Forgot password';

View File

@ -1100,6 +1100,9 @@ class L10nId extends L10n {
@override @override
String get password => 'Kata sandi'; String get password => 'Kata sandi';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Lupa kata sandi'; String get passwordForgotten => 'Lupa kata sandi';

View File

@ -1091,6 +1091,9 @@ class L10nIe extends L10n {
@override @override
String get password => 'Contrasigne'; String get password => 'Contrasigne';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Li contrasigne esset obliviat'; String get passwordForgotten => 'Li contrasigne esset obliviat';

View File

@ -1100,6 +1100,9 @@ class L10nIt extends L10n {
@override @override
String get password => 'Password'; String get password => 'Password';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Password dimenticata'; String get passwordForgotten => 'Password dimenticata';

View File

@ -1074,6 +1074,9 @@ class L10nJa extends L10n {
@override @override
String get password => 'パスワード'; String get password => 'パスワード';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'パスワードを忘れた'; String get passwordForgotten => 'パスワードを忘れた';

View File

@ -1094,6 +1094,9 @@ class L10nKa extends L10n {
@override @override
String get password => 'Password'; String get password => 'Password';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Forgot password'; String get passwordForgotten => 'Forgot password';

View File

@ -1066,6 +1066,9 @@ class L10nKo extends L10n {
@override @override
String get password => '비밀번호'; String get password => '비밀번호';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => '비밀번호 까먹음'; String get passwordForgotten => '비밀번호 까먹음';

View File

@ -1097,6 +1097,9 @@ class L10nLt extends L10n {
@override @override
String get password => 'Slaptažodis'; String get password => 'Slaptažodis';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Slaptažodis užmirštas'; String get passwordForgotten => 'Slaptažodis užmirštas';

View File

@ -1100,6 +1100,9 @@ class L10nLv extends L10n {
@override @override
String get password => 'Parole'; String get password => 'Parole';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Aizmirsta parole'; String get passwordForgotten => 'Aizmirsta parole';

View File

@ -1095,6 +1095,9 @@ class L10nNb extends L10n {
@override @override
String get password => 'Passord'; String get password => 'Passord';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Passord glemt'; String get passwordForgotten => 'Passord glemt';

View File

@ -1095,6 +1095,9 @@ class L10nNl extends L10n {
@override @override
String get password => 'Wachtwoord'; String get password => 'Wachtwoord';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Wachtwoord vergeten'; String get passwordForgotten => 'Wachtwoord vergeten';

View File

@ -1096,6 +1096,9 @@ class L10nPl extends L10n {
@override @override
String get password => 'Hasło'; String get password => 'Hasło';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Nie pamiętam hasła'; String get passwordForgotten => 'Nie pamiętam hasła';

View File

@ -1092,6 +1092,9 @@ class L10nPt extends L10n {
@override @override
String get password => 'Password'; String get password => 'Password';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Forgot password'; String get passwordForgotten => 'Forgot password';

View File

@ -1099,6 +1099,9 @@ class L10nRo extends L10n {
@override @override
String get password => 'Parolă'; String get password => 'Parolă';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Parola uitată'; String get passwordForgotten => 'Parola uitată';

View File

@ -1096,6 +1096,9 @@ class L10nRu extends L10n {
@override @override
String get password => 'Пароль'; String get password => 'Пароль';
@override
String get downloads => 'Загрузки';
@override @override
String get passwordForgotten => 'Забыли пароль'; String get passwordForgotten => 'Забыли пароль';

View File

@ -1094,6 +1094,9 @@ class L10nSk extends L10n {
@override @override
String get password => 'Heslo'; String get password => 'Heslo';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Forgot password'; String get passwordForgotten => 'Forgot password';

View File

@ -1096,6 +1096,9 @@ class L10nSl extends L10n {
@override @override
String get password => 'Password'; String get password => 'Password';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Forgot password'; String get passwordForgotten => 'Forgot password';

View File

@ -1092,6 +1092,9 @@ class L10nSr extends L10n {
@override @override
String get password => 'Лозинка'; String get password => 'Лозинка';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Заборављена лозинка'; String get passwordForgotten => 'Заборављена лозинка';

View File

@ -1093,6 +1093,9 @@ class L10nSv extends L10n {
@override @override
String get password => 'Lösenord'; String get password => 'Lösenord';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Glömt lösenord'; String get passwordForgotten => 'Glömt lösenord';

View File

@ -1108,6 +1108,9 @@ class L10nTa extends L10n {
@override @override
String get password => 'கடவுச்சொல்'; String get password => 'கடவுச்சொல்';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'கடவுச்சொல் மறந்துவிட்டது'; String get passwordForgotten => 'கடவுச்சொல் மறந்துவிட்டது';

View File

@ -1092,6 +1092,9 @@ class L10nTe extends L10n {
@override @override
String get password => 'Password'; String get password => 'Password';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Forgot password'; String get passwordForgotten => 'Forgot password';

View File

@ -1094,6 +1094,9 @@ class L10nTh extends L10n {
@override @override
String get password => 'Password'; String get password => 'Password';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Forgot password'; String get passwordForgotten => 'Forgot password';

View File

@ -1098,6 +1098,9 @@ class L10nTr extends L10n {
@override @override
String get password => 'Parola'; String get password => 'Parola';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Parola unutuldu'; String get passwordForgotten => 'Parola unutuldu';

View File

@ -1101,6 +1101,9 @@ class L10nUk extends L10n {
@override @override
String get password => 'Пароль'; String get password => 'Пароль';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Забули пароль'; String get passwordForgotten => 'Забули пароль';

View File

@ -1092,6 +1092,9 @@ class L10nVi extends L10n {
@override @override
String get password => 'Password'; String get password => 'Password';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => 'Forgot password'; String get passwordForgotten => 'Forgot password';

View File

@ -1054,6 +1054,9 @@ class L10nZh extends L10n {
@override @override
String get password => '密码'; String get password => '密码';
@override
String get downloads => 'Downloads';
@override @override
String get passwordForgotten => '忘记密码'; String get passwordForgotten => '忘记密码';

View File

@ -63,7 +63,7 @@ class ClientChooserButton extends StatelessWidget {
children: [ children: [
Icon(Icons.download_outlined), Icon(Icons.download_outlined),
const SizedBox(width: 18), const SizedBox(width: 18),
Text("Downloads"), Text(L10n.of(context).downloads),
], ],
), ),
), ),

View File

@ -6,6 +6,7 @@ import 'package:extera_next/widgets/matrix.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:dio/dio.dart'; import 'package:dio/dio.dart';
import 'package:matrix/matrix.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:path_provider/path_provider.dart'; import 'package:path_provider/path_provider.dart';
@ -17,23 +18,29 @@ class Download {
late int receivedBytes = 0; late int receivedBytes = 0;
late int totalBytes = 1; late int totalBytes = 1;
late double progress = 0; late double progress = 0;
late String httpUrl;
late String downloadPath;
late CancelToken ct;
Download(this.context, this.url, this.name); Download(this.context, this.url, this.name);
void start() async { void start() async {
try { try {
final mx = Matrix.of(context).client; final mx = Matrix.of(context).client;
final directory = await getExternalStorageDirectory(); // final directory = await getDownloadsDirectory();
final downloadPath = downloadPath =
directory != null ? "${directory.path}/Download" : null; "/sdcard/Download/Extera";
httpUrl = (await Uri.parse(url).getDownloadUri(mx)).toString();
if (downloadPath != null) { if (downloadPath != null) {
// Create Dio instance // Create Dio instance
final dio = Dio(); final dio = Dio();
// Progress status variables
ct = CancelToken();
// Download the file // Download the file
response = dio.download( response = dio.download(
url, httpUrl,
"$downloadPath/$name", "$downloadPath/$name",
onReceiveProgress: (received, total) { onReceiveProgress: (received, total) {
receivedBytes = received; receivedBytes = received;
@ -43,7 +50,9 @@ class Download {
}, },
options: Options( options: Options(
responseType: ResponseType.bytes, responseType: ResponseType.bytes,
headers: {'authorization': "Bearer ${mx.accessToken}"}), headers: {'authorization': "Bearer ${mx.accessToken}"}
),
cancelToken: ct
); );
print("Download completed and saved to $downloadPath/$name"); print("Download completed and saved to $downloadPath/$name");
} }
@ -51,6 +60,10 @@ class Download {
print("Error during download: $e"); print("Error during download: $e");
} }
} }
void cancel() async {
ct.cancel();
}
} }
class DownloadManager extends StatefulWidget { class DownloadManager extends StatefulWidget {

View File

@ -1,3 +1,4 @@
import 'package:extera_next/generated/l10n/l10n.dart';
import 'package:extera_next/pages/download_manager/download_manager.dart'; import 'package:extera_next/pages/download_manager/download_manager.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -18,7 +19,7 @@ class DownloadManagerView extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return AlertDialog.adaptive( return AlertDialog.adaptive(
content: ConstrainedBox( content: ConstrainedBox(
constraints: const BoxConstraints(maxHeight: 256, maxWidth: 256), constraints: const BoxConstraints(maxHeight: 256, maxWidth: 512),
child: ListView.builder( child: ListView.builder(
itemCount: controller.downloads.length, itemCount: controller.downloads.length,
itemBuilder: (context, index) { itemBuilder: (context, index) {
@ -26,15 +27,15 @@ class DownloadManagerView extends StatelessWidget {
return ListTile( return ListTile(
title: Text(download.name), title: Text(download.name),
subtitle: LinearProgressIndicator( subtitle: LinearProgressIndicator(
value: download.progress, value: download.progress / 100,
backgroundColor: Colors.grey[200], backgroundColor: Colors.grey[200],
valueColor: AlwaysStoppedAnimation<Color>(Colors.blue), valueColor: AlwaysStoppedAnimation<Color>(Colors.blue),
), ),
trailing: ElevatedButton( trailing: ElevatedButton(
onPressed: () { onPressed: () {
// "Cancel" button action can be added here download.cancel();
}, },
child: Text("Cancel"), child: Text(L10n.of(context).cancel),
), ),
); );
}, },

View File

@ -27,12 +27,12 @@ extension LocalizedBody on Event {
} }
void downloadInBackground(BuildContext context) async { void downloadInBackground(BuildContext context) async {
if (!canDownloadInBackground) { if (canDownloadInBackground) {
final dmc = Provider.of<DownloadManagerController>(context); final dmc = Provider.of<DownloadManagerController>(context);
final filename = content.tryGet<String>('filename') ?? body; final filename = content.tryGet<String>('filename') ?? body;
dmc.download(context, "$filename.${roomId!.substring(0, 4)}.${eventId.substring(0, 4)}.${extensionFromMime(attachmentMimetype)}", attachmentMxcUrl.toString()); dmc.download(context, "$filename.${roomId!.substring(1, 5)}.${eventId.substring(1, 5)}.${extensionFromMime(attachmentMimetype)}", attachmentMxcUrl.toString());
} else { } else {
throw Exception("Cannot download in background"); throw Exception("Cannot download in background $hasAttachment ${room.encrypted}");
} }
} }
@ -45,7 +45,6 @@ extension LocalizedBody on Event {
bool get canDownloadInBackground => bool get canDownloadInBackground =>
hasAttachment && hasAttachment &&
status.isSent &&
!room.encrypted; !room.encrypted;
bool get isAttachmentSmallEnough => bool get isAttachmentSmallEnough =>

View File

@ -1098,26 +1098,26 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: leak_tracker name: leak_tracker
sha256: "8dcda04c3fc16c14f48a7bb586d4be1f0d1572731b6d81d51772ef47c02081e0" sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "11.0.1" version: "10.0.9"
leak_tracker_flutter_testing: leak_tracker_flutter_testing:
dependency: transitive dependency: transitive
description: description:
name: leak_tracker_flutter_testing name: leak_tracker_flutter_testing
sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1" sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.0.10" version: "3.0.9"
leak_tracker_testing: leak_tracker_testing:
dependency: transitive dependency: transitive
description: description:
name: leak_tracker_testing name: leak_tracker_testing
sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1" sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.0.2" version: "3.0.1"
license_checker: license_checker:
dependency: "direct dev" dependency: "direct dev"
description: description:
@ -1975,26 +1975,26 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: test name: test
sha256: "65e29d831719be0591f7b3b1a32a3cda258ec98c58c7b25f7b84241bc31215bb" sha256: "301b213cd241ca982e9ba50266bd3f5bd1ea33f1455554c5abb85d1be0e2d87e"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.26.2" version: "1.25.15"
test_api: test_api:
dependency: transitive dependency: transitive
description: description:
name: test_api name: test_api
sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00" sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.7.6" version: "0.7.4"
test_core: test_core:
dependency: transitive dependency: transitive
description: description:
name: test_core name: test_core
sha256: "80bf5a02b60af04b09e14f6fe68b921aad119493e26e490deaca5993fef1b05a" sha256: "84d17c3486c8dfdbe5e12a50c8ae176d15e2a771b96909a9442b40173649ccaa"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.6.11" version: "0.6.8"
timezone: timezone:
dependency: transitive dependency: transitive
description: description:
@ -2175,10 +2175,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: vector_math name: vector_math
sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.2.0" version: "2.1.4"
video_compress: video_compress:
dependency: "direct main" dependency: "direct main"
description: description: