Compare commits

...

10 commits

14 changed files with 198 additions and 106 deletions

2
.fvmrc
View file

@ -1,5 +1,5 @@
{
"flutter": "3.29.3",
"flutter": "3.32.0",
"runPubGetOnSdkChanges": true,
"updateVscodeSettings": true,
"updateGitIgnore": true

20
.vscode/launch.json vendored
View file

@ -4,17 +4,23 @@
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
// {
// "name": "run app",
// "request": "launch",
// "type": "dart"
// },
{
"name": "run app",
"request": "launch",
"type": "dart"
"type": "node-terminal",
"command": "fvm flutter run",
},
{
"name": "run without impeller",
"request": "launch",
"type": "node-terminal",
"command": "fvm flutter run --no-enable-impeller",
},
// {
// "name": "pharmacy_mobile",
// "request": "launch",
// "type": "node-terminal",
// "command": "fvm flutter run --no-enable-impeller",
// },
{
"name": "build apk",
"request": "launch",

View file

@ -1,3 +1,3 @@
{
"dart.flutterSdkPath": ".fvm/versions/3.29.3"
"dart.flutterSdkPath": ".fvm/versions/3.32.0"
}

View file

@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:gap/gap.dart';
import 'package:internet_connection_checker/internet_connection_checker.dart';
import 'package:pharmacy_mobile/blocs/caches/categorylist/functions/cache_setcategorylist.dart';
import 'package:pharmacy_mobile/functions/checkexisting_function.dart';
import 'package:pharmacy_mobile/tables/ref_categories.dart';
import 'package:pharmacy_mobile/widgets/buttonwithprogress_widget.dart';
@ -23,8 +24,19 @@ class _AddCategoryPageState extends State<AddCategoryPage> {
final _formKey = GlobalKey<FormState>();
final _categoryController = TextEditingController();
final _refCategories = RefCategories();
bool _isLoading = false;
Future<void> _getCategoryListCache() async {
final categoryList = await _refCategories.getList();
if (categoryList.isNotEmpty) {
// ignore: use_build_context_synchronously
final setCache = await cacheSetCategoryList(context, categoryList);
if (!setCache) {}
}
}
void _saveCategory() async {
setState(() => _isLoading = true);
@ -40,6 +52,7 @@ class _AddCategoryPageState extends State<AddCategoryPage> {
final post = await _refCategories.postCategory(_categoryController.text.toUpperCase());
if (post && mounted) {
_getCategoryListCache();
showNotification(context, 'Category saved', true);
WidgetsBinding.instance.addPostFrameCallback((_) {

View file

@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:gap/gap.dart';
import 'package:go_router/go_router.dart';
import 'package:internet_connection_checker/internet_connection_checker.dart';
import 'package:pharmacy_mobile/blocs/caches/distributorlist/functions/cache_setdistributorlist.dart';
import 'package:pharmacy_mobile/functions/checkexisting_function.dart';
import 'package:pharmacy_mobile/tables/ref_distributors.dart';
import 'package:pharmacy_mobile/widgets/buttonwithprogress_widget.dart';
@ -23,25 +24,36 @@ class _AddDistributorPageState extends State<AddDistributorPage> {
final _formKey = GlobalKey<FormState>();
final _nameController = TextEditingController();
final _addressController = TextEditingController();
final _refdistributors = RefDistributors();
final _refDistributors = RefDistributors();
late bool _isLoading = false;
Future<void> _getDistributorListCache() async {
final distributorList = await _refDistributors.getList();
if (distributorList.isNotEmpty) {
// ignore: use_build_context_synchronously
final setCache = await cacheSetDistributorList(context, distributorList);
if (!setCache) {}
}
}
void _saveDistributor() async {
setState(() => _isLoading = true);
try {
if (await InternetConnectionChecker.instance.hasConnection) {
final existing = await checkExisting(_refdistributors, _nameController);
final existing = await checkExisting(_refDistributors, _nameController);
if (existing && mounted) {
showNotification(context, 'Distributor already listed', false);
return;
}
final post = await _refdistributors.postDistributor(_nameController.text, _addressController.text);
final post = await _refDistributors.postDistributor(_nameController.text, _addressController.text);
if (post && mounted) {
_getDistributorListCache();
showNotification(context, 'Distributor added to list', true);
WidgetsBinding.instance.addPostFrameCallback((_) {

View file

@ -2,6 +2,7 @@ import 'package:gap/gap.dart';
import 'package:flutter/material.dart';
import 'package:internet_connection_checker/internet_connection_checker.dart';
import 'package:pharmacy_mobile/blocs/caches/categorylist/functions/cache_getcategorylist.dart';
import 'package:pharmacy_mobile/blocs/caches/genericlist/functions/cache_setgenericlist.dart';
import 'package:pharmacy_mobile/functions/checkexisting_function.dart';
import 'package:pharmacy_mobile/tables/ref_categories.dart';
import 'package:pharmacy_mobile/tables/ref_generic_names.dart';
@ -36,6 +37,16 @@ class _AddGenericsPageState extends State<AddGenericsPage> {
late String _selectedCategory = '';
late String _categoryUUID = '';
Future<void> _getGenericListCache() async {
final genericNameList = await _refGenericNames.getList();
if (genericNameList.isNotEmpty) {
// ignore: use_build_context_synchronously
final setCache = await cacheSetGenericList(context, genericNameList);
if (!setCache) {}
}
}
void _getList() async {
_categoryList = await _refCategories.getList();
@ -94,6 +105,7 @@ class _AddGenericsPageState extends State<AddGenericsPage> {
final existing = await checkExisting(_refGenericNames, _nameController);
if (existing && mounted) {
_getGenericListCache();
showNotification(context, 'Generic Name already existing', false);
return;
}

View file

@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:gap/gap.dart';
import 'package:go_router/go_router.dart';
import 'package:internet_connection_checker/internet_connection_checker.dart';
import 'package:pharmacy_mobile/blocs/caches/manufacturerlist/functions/cache_setmanufacturerlist.dart';
import 'package:pharmacy_mobile/functions/checkexisting_function.dart';
import 'package:pharmacy_mobile/tables/ref_manufacturers.dart';
import 'package:pharmacy_mobile/widgets/buttonwithprogress_widget.dart';
@ -27,6 +28,16 @@ class _AddManufacturerPageState extends State<AddManufacturerPage> {
late bool _isLoading = false;
Future<void> _getManufacturerListCache() async {
final manufacturerList = await _refManufacturers.getList();
if (manufacturerList.isNotEmpty) {
// ignore: use_build_context_synchronously
final setCache = await cacheSetManufacturerList(context, manufacturerList);
if (!setCache) {}
}
}
void _saveManufacturer() async {
setState(() => _isLoading = true);
@ -42,6 +53,7 @@ class _AddManufacturerPageState extends State<AddManufacturerPage> {
final post = await _refManufacturers.postManufacturer(_nameController.text, _addressController.text);
if (post && mounted) {
_getManufacturerListCache();
showNotification(context, 'Manufacturer added to list', true);
WidgetsBinding.instance.addPostFrameCallback((_) {

View file

@ -6,6 +6,7 @@ import 'package:internet_connection_checker/internet_connection_checker.dart';
import 'package:pharmacy_mobile/blocs/caches/distributorlist/functions/cache_getdistributorlist.dart';
import 'package:pharmacy_mobile/blocs/caches/genericlist/functions/cache_getgenericlist.dart';
import 'package:pharmacy_mobile/blocs/caches/manufacturerlist/functions/cache_getmanufacturerlist.dart';
import 'package:pharmacy_mobile/blocs/caches/medicinelist/functions/cache_setmedicinelist.dart';
import 'package:pharmacy_mobile/blocs/caches/supplierlist/functions/cache_getsupplierlist.dart';
import 'package:pharmacy_mobile/blocs/caches/typelist/functions/cache_gettypelist.dart';
import 'package:pharmacy_mobile/functions/barcode_scan_function.dart';
@ -70,6 +71,7 @@ class _AddMedicinePageState extends State<AddMedicinePage> {
late bool imageUploaded = false;
late String imageUrl = '';
late bool uploaded = false;
late String imageUUID = '';
Future<void> _getGenerics() async {
_genericNameList = await _refGenericNames.getList();
@ -167,6 +169,16 @@ class _AddMedicinePageState extends State<AddMedicinePage> {
}
}
Future<void> _getMedicineListCache() async {
final medicineList = await _refMedicines.getList();
if (medicineList.isNotEmpty) {
// ignore: use_build_context_synchronously
final setCache = await cacheSetMedicineList(context, medicineList);
if (!setCache) {}
}
}
void autoRun() async {
final generics = await _getGenericsCache();
final types = await _getTypesCache();
@ -174,12 +186,6 @@ class _AddMedicinePageState extends State<AddMedicinePage> {
final distributors = await _getDistributorsCache();
final suppliers = await _getSuppliersCache();
print('generics: $generics');
print('types: $types');
print('manufacturers: $manufacturers');
print('distributors: $distributors');
print('suppliers: $suppliers');
if (!generics || !types || !manufacturers || !distributors || !suppliers) {
if (await InternetConnectionChecker.instance.hasConnection) {
await _getGenerics();
@ -268,6 +274,7 @@ class _AddMedicinePageState extends State<AddMedicinePage> {
try {
// final String encrpytedBarcode = await encrypt(_barcodeController.text);
final String encrpytedBarcode = _barcodeController.text;
uuid = Uuid().v4();
if (await InternetConnectionChecker.instance.hasConnection) {
final medName = _nameController.text;
@ -277,10 +284,16 @@ class _AddMedicinePageState extends State<AddMedicinePage> {
final medDistributorUUID = await _refDistributors.getUUID(_selectedDistributor);
final medSupplierUUID = await _refSuppliers.getUUID(_selectedSupplier);
if (imageUUID.isEmpty) {
imageUUID = '73105ee3-74bd-40ea-9434-f8176a980b43';
}
final posted = await _refMedicines.postMedicine(uuid, medName, medManufacturerUUID, medGenericUUID, medTypeUUID,
encrpytedBarcode, medDistributorUUID, medSupplierUUID);
encrpytedBarcode, medDistributorUUID, medSupplierUUID, imageUUID);
if (posted) {
_getMedicineListCache();
if (mounted) {
showNotification(context, 'Medicine Added Successfully', true);
setState(() => _isLoading = false);
@ -315,7 +328,7 @@ class _AddMedicinePageState extends State<AddMedicinePage> {
final imageBytes = await image!.readAsBytes();
final webpImage = await _webpConvert(imageBytes);
uuid = imageName;
imageUUID = imageName;
if (mounted) {
uploaded = await _storage.uploadImage(context, storageName, webpImage, '$imageName.webp');
@ -466,12 +479,12 @@ class _AddMedicinePageState extends State<AddMedicinePage> {
// const Center(child: CircularProgressIndicator(color: Colors.white))
// else
// ButtonWidget(text: 'Save Medicine', onPressed: _saveMedicine)
if (uploaded)
ButtonWithProgressWidget(
trigger: _isLoading,
progressText: 'Adding Medicine',
buttonText: 'Save',
onPressed: _saveMedicine)
// if (uploaded)
ButtonWithProgressWidget(
trigger: _isLoading,
progressText: 'Adding Medicine',
buttonText: 'Save',
onPressed: _saveMedicine)
])
])))
]))));

View file

@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:gap/gap.dart';
import 'package:go_router/go_router.dart';
import 'package:internet_connection_checker/internet_connection_checker.dart';
import 'package:pharmacy_mobile/blocs/caches/supplierlist/functions/cache_setsupplierlist.dart';
import 'package:pharmacy_mobile/functions/checkexisting_function.dart';
import 'package:pharmacy_mobile/tables/ref_suppliers.dart';
import 'package:pharmacy_mobile/widgets/buttonwithprogress_widget.dart';
@ -22,26 +23,36 @@ class AddSupplierPage extends StatefulWidget {
class _AddSupplierPageState extends State<AddSupplierPage> {
final _formKey = GlobalKey<FormState>();
final _nameController = TextEditingController();
final _refsuppliers = RefSuppliers();
final _refSuppliers = RefSuppliers();
late bool _isLoading = false;
Future<void> _getSupplierListCache() async {
final supplierList = await _refSuppliers.getList();
if (supplierList.isNotEmpty) {
// ignore: use_build_context_synchronously
final setCache = await cacheSetSupplierList(context, supplierList);
if (!setCache) {}
}
}
void _saveSupplier() async {
setState(() => _isLoading = true);
try {
if (await InternetConnectionChecker.instance.hasConnection) {
final existing = await checkExisting(_refsuppliers, _nameController);
final existing = await checkExisting(_refSuppliers, _nameController);
if (existing && mounted) {
showNotification(context, 'Supplier already listed', false);
return;
}
final post = await _refsuppliers.postSupplier(_nameController.text);
print('post: $post');
final post = await _refSuppliers.postSupplier(_nameController.text);
if (post && mounted) {
_getSupplierListCache();
showNotification(context, 'Supplier added to list', true);
WidgetsBinding.instance.addPostFrameCallback((_) {

View file

@ -1,6 +1,7 @@
import 'package:gap/gap.dart';
import 'package:flutter/material.dart';
import 'package:internet_connection_checker/internet_connection_checker.dart';
import 'package:pharmacy_mobile/blocs/caches/typelist/functions/cache_settypelist.dart';
import 'package:pharmacy_mobile/functions/checkexisting_function.dart';
import 'package:pharmacy_mobile/tables/ref_types.dart';
import 'package:pharmacy_mobile/widgets/buttonwithprogress_widget.dart';
@ -26,6 +27,16 @@ class _AddTypePageState extends State<AddTypePage> {
bool _isLoading = false;
Future<void> _getTypeListCache() async {
final typeList = await _refTypes.getList();
if (typeList.isNotEmpty) {
// ignore: use_build_context_synchronously
final setCache = await cacheSetTypeList(context, typeList);
if (!setCache) {}
}
}
void _saveType() async {
setState(() => _isLoading = true);
try {
@ -40,6 +51,7 @@ class _AddTypePageState extends State<AddTypePage> {
final post = await _refTypes.postType(_typeController.text);
if (post && mounted) {
_getTypeListCache();
showNotification(context, 'Medicine type saved', true);
WidgetsBinding.instance.addPostFrameCallback((_) {

View file

@ -87,7 +87,7 @@ class RefMedicines {
}
Future<bool> postMedicine(String uuid, String name, String muuid, String guuid, String tuuid, String barcode,
String distributor, String supplier) async {
String distributor, String supplier, String imageuuid) async {
final medicine = {
'ref_medicines_uuid': uuid,
'medicine_name': name,
@ -96,7 +96,8 @@ class RefMedicines {
'ref_types_uuid': tuuid,
'barcode': barcode,
'ref_distributors_uuid': distributor,
'ref_suppliers_uuid': supplier
'ref_suppliers_uuid': supplier,
'ref_medicines_images': imageuuid
};
try {

View file

@ -15,7 +15,7 @@ class GlossyContainerWidget extends StatelessWidget {
width: MediaQuery.of(context).size.width,
borderRadius: const BorderRadius.all(Radius.circular(16)),
color: const Color.fromRGBO(20, 13, 22, 1),
border: Border.all(width: 0, color: const Color.fromRGBO(216, 176, 219, 1)),
border: Border.all(width: 0, color: const Color.fromARGB(69, 0, 0, 0)),
boxShadow: [
BoxShadow(
color: const Color.fromRGBO(78, 45, 79, 0.4),

View file

@ -13,9 +13,9 @@ class WarningWidget extends StatelessWidget {
children: [
Container(
decoration: BoxDecoration(
color: const Color.fromARGB(102, 121, 15, 5),
color: const Color.fromRGBO(121, 15, 5, 0.4),
borderRadius: BorderRadius.circular(12),
border: Border.all(width: 2, color: const Color.fromARGB(255, 42, 2, 2))),
border: Border.all(width: 2, color: const Color.fromRGBO(42, 2, 2, 1))),
// width: 200,
// height: 100,
padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 16),

View file

@ -45,10 +45,10 @@ packages:
dependency: transitive
description:
name: archive
sha256: "7dcbd0f87fe5f61cb28da39a1a8b70dbc106e2fe0516f7836eb7bb2948481a12"
sha256: "2fde1607386ab523f7a36bb3e7edb43bd58e6edaf2ffb29d8a6d578b297fdbbd"
url: "https://pub.dev"
source: hosted
version: "4.0.5"
version: "4.0.7"
args:
dependency: transitive
description:
@ -61,10 +61,10 @@ packages:
dependency: transitive
description:
name: async
sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63
sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb"
url: "https://pub.dev"
source: hosted
version: "2.12.0"
version: "2.13.0"
bloc:
dependency: transitive
description:
@ -93,10 +93,10 @@ packages:
dependency: transitive
description:
name: checked_yaml
sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff
sha256: "959525d3162f249993882720d52b7e0c833978df229be20702b33d48d91de70f"
url: "https://pub.dev"
source: hosted
version: "2.0.3"
version: "2.0.4"
cli_util:
dependency: transitive
description:
@ -125,10 +125,10 @@ packages:
dependency: transitive
description:
name: connectivity_plus
sha256: "04bf81bb0b77de31557b58d052b24b3eee33f09a6e7a8c68a3e247c7df19ec27"
sha256: "051849e2bd7c7b3bc5844ea0d096609ddc3a859890ec3a9ac4a65a2620cc1f99"
url: "https://pub.dev"
source: hosted
version: "6.1.3"
version: "6.1.4"
connectivity_plus_platform_interface:
dependency: transitive
description:
@ -189,10 +189,10 @@ packages:
dependency: transitive
description:
name: fake_async
sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc"
sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44"
url: "https://pub.dev"
source: hosted
version: "1.3.2"
version: "1.3.3"
ffi:
dependency: transitive
description:
@ -221,10 +221,10 @@ packages:
dependency: transitive
description:
name: file_selector_macos
sha256: "271ab9986df0c135d45c3cdb6bd0faa5db6f4976d3e4b437cf7d0f258d941bfc"
sha256: "8c9250b2bd2d8d4268e39c82543bacbaca0fda7d29e0728c3c4bbb7c820fd711"
url: "https://pub.dev"
source: hosted
version: "0.9.4+2"
version: "0.9.4+3"
file_selector_platform_interface:
dependency: transitive
description:
@ -258,10 +258,10 @@ packages:
dependency: "direct main"
description:
name: flutter_bloc
sha256: "1046d719fbdf230330d3443187cc33cc11963d15c9089f6cc56faa42a4c5f0cc"
sha256: cf51747952201a455a1c840f8171d273be009b932c75093020f9af64f2123e38
url: "https://pub.dev"
source: hosted
version: "9.1.0"
version: "9.1.1"
flutter_dotenv:
dependency: "direct main"
description:
@ -322,10 +322,10 @@ packages:
dependency: "direct dev"
description:
name: flutter_launcher_icons
sha256: bfa04787c85d80ecb3f8777bde5fc10c3de809240c48fa061a2c2bf15ea5211c
sha256: "10f13781741a2e3972126fae08393d3c4e01fa4cd7473326b94b72cf594195e7"
url: "https://pub.dev"
source: hosted
version: "0.14.3"
version: "0.14.4"
flutter_lints:
dependency: "direct dev"
description:
@ -338,18 +338,18 @@ packages:
dependency: transitive
description:
name: flutter_plugin_android_lifecycle
sha256: "5a1e6fb2c0561958d7e4c33574674bda7b77caaca7a33b758876956f2902eea3"
sha256: f948e346c12f8d5480d2825e03de228d0eb8c3a737e4cdaa122267b89c022b5e
url: "https://pub.dev"
source: hosted
version: "2.0.27"
version: "2.0.28"
flutter_svg:
dependency: transitive
description:
name: flutter_svg
sha256: c200fd79c918a40c5cd50ea0877fa13f81bdaf6f0a5d3dbcc2a13e3285d6aa1b
sha256: cd57f7969b4679317c17af6fd16ee233c1e60a82ed209d8a475c54fd6fd6f845
url: "https://pub.dev"
source: hosted
version: "2.0.17"
version: "2.2.0"
flutter_test:
dependency: "direct dev"
description: flutter
@ -372,10 +372,10 @@ packages:
dependency: transitive
description:
name: functions_client
sha256: a49876ebae32a50eb62483c5c5ac80ed0d8da34f98ccc23986b03a8d28cee07c
sha256: "91bd57c5ee843957bfee68fdcd7a2e8b3c1081d448e945d33ff695fb9c2a686c"
url: "https://pub.dev"
source: hosted
version: "2.4.1"
version: "2.4.3"
gap:
dependency: "direct main"
description:
@ -404,10 +404,10 @@ packages:
dependency: transitive
description:
name: gotrue
sha256: d6362dff9a54f8c1c372bb137c858b4024c16407324d34e6473e59623c9b9f50
sha256: "941694654ab659990547798569771d8d092f2ade84a72e75bb9bbca249f3d3b1"
url: "https://pub.dev"
source: hosted
version: "2.11.1"
version: "2.13.0"
gtk:
dependency: transitive
description:
@ -420,10 +420,10 @@ packages:
dependency: transitive
description:
name: http
sha256: fe7ab022b76f3034adc518fb6ea04a82387620e19977665ea18d30a1cf43442f
sha256: "2c11f3f94c687ee9bad77c171151672986360b2b001d109814ee7140b2cf261b"
url: "https://pub.dev"
source: hosted
version: "1.3.0"
version: "1.4.0"
http_parser:
dependency: transitive
description:
@ -452,10 +452,10 @@ packages:
dependency: transitive
description:
name: image_picker_android
sha256: "8bd392ba8b0c8957a157ae0dc9fcf48c58e6c20908d5880aea1d79734df090e9"
sha256: "317a5d961cec5b34e777b9252393f2afbd23084aa6e60fcf601dcf6341b9ebeb"
url: "https://pub.dev"
source: hosted
version: "0.8.12+22"
version: "0.8.12+23"
image_picker_for_web:
dependency: transitive
description:
@ -556,10 +556,10 @@ packages:
dependency: transitive
description:
name: leak_tracker
sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec
sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0"
url: "https://pub.dev"
source: hosted
version: "10.0.8"
version: "10.0.9"
leak_tracker_flutter_testing:
dependency: transitive
description:
@ -676,10 +676,10 @@ packages:
dependency: transitive
description:
name: path_provider_android
sha256: "0ca7359dad67fd7063cb2892ab0c0737b2daafd807cf1acecd62374c8fae6c12"
sha256: d0d310befe2c8ab9e7f393288ccbb11b60c019c6b5afc21973eeee4dda2b35e9
url: "https://pub.dev"
source: hosted
version: "2.2.16"
version: "2.2.17"
path_provider_foundation:
dependency: transitive
description:
@ -732,10 +732,10 @@ packages:
dependency: transitive
description:
name: permission_handler_apple
sha256: f84a188e79a35c687c132a0a0556c254747a08561e99ab933f12f6ca71ef3c98
sha256: f000131e755c54cf4d84a5d8bd6e4149e262cc31c5a8b1d698de1ac85fa41023
url: "https://pub.dev"
source: hosted
version: "9.4.6"
version: "9.4.7"
permission_handler_html:
dependency: transitive
description:
@ -788,26 +788,26 @@ packages:
dependency: transitive
description:
name: posix
sha256: a0117dc2167805aa9125b82eee515cc891819bac2f538c83646d355b16f58b9a
sha256: "6323a5b0fa688b6a010df4905a56b00181479e6d10534cecfecede2aa55add61"
url: "https://pub.dev"
source: hosted
version: "6.0.1"
version: "6.0.3"
postgrest:
dependency: transitive
description:
name: postgrest
sha256: b74dc0f57b5dca5ce9f57a54b08110bf41d6fc8a0483c0fec10c79e9aa0fb2bb
sha256: "10b81a23b1c829ccadf68c626b4d66666453a1474d24c563f313f5ca7851d575"
url: "https://pub.dev"
source: hosted
version: "2.4.1"
version: "2.4.2"
provider:
dependency: transitive
description:
name: provider
sha256: c8a055ee5ce3fd98d6fc872478b03823ffdb448699c6ebdbbc71d59b596fd48c
sha256: "4abbd070a04e9ddc287673bf5a030c7ca8b685ff70218720abab8b092f53dd84"
url: "https://pub.dev"
source: hosted
version: "6.1.2"
version: "6.1.5"
pull_to_refresh:
dependency: "direct main"
description:
@ -820,10 +820,10 @@ packages:
dependency: transitive
description:
name: realtime_client
sha256: e3089dac2121917cc0c72d42ab056fea0abbaf3c2229048fc50e64bafc731adf
sha256: b6a825a4c80f2281ebfbbcf436a8979ae9993d4a30dbcf011b7d2b82ddde9edd
url: "https://pub.dev"
source: hosted
version: "2.4.2"
version: "2.5.1"
redacted:
dependency: "direct main"
description:
@ -852,18 +852,18 @@ packages:
dependency: transitive
description:
name: shared_preferences
sha256: "846849e3e9b68f3ef4b60c60cf4b3e02e9321bc7f4d8c4692cf87ffa82fc8a3a"
sha256: "6e8bf70b7fef813df4e9a36f658ac46d107db4b4cfe1048b477d4e453a8159f5"
url: "https://pub.dev"
source: hosted
version: "2.5.2"
version: "2.5.3"
shared_preferences_android:
dependency: transitive
description:
name: shared_preferences_android
sha256: "3ec7210872c4ba945e3244982918e502fa2bfb5230dff6832459ca0e1879b7ad"
sha256: "20cbd561f743a342c76c151d6ddb93a9ce6005751e7aa458baad3858bfbfb6ac"
url: "https://pub.dev"
source: hosted
version: "2.4.8"
version: "2.4.10"
shared_preferences_foundation:
dependency: transitive
description:
@ -945,10 +945,10 @@ packages:
dependency: transitive
description:
name: storage_client
sha256: "9f9ed283943313b23a1b27139bb18986e9b152a6d34530232c702c468d98e91a"
sha256: "09bac4d75eea58e8113ca928e6655a09cc8059e6d1b472ee801f01fde815bcfc"
url: "https://pub.dev"
source: hosted
version: "2.3.1"
version: "2.4.0"
stream_channel:
dependency: transitive
description:
@ -969,18 +969,18 @@ packages:
dependency: transitive
description:
name: supabase
sha256: c3ebddba69ddcf16d8b78e8c44c4538b0193d1cf944fde3b72eb5b279892a370
sha256: "56c3493114caac8ef0dc3cac5fa24a9edefeb8c22d45794814c0fe3d2feb1a98"
url: "https://pub.dev"
source: hosted
version: "2.6.3"
version: "2.8.0"
supabase_flutter:
dependency: "direct main"
description:
name: supabase_flutter
sha256: "3b5b5b492e342f63f301605d0c66f6528add285b5744f53c9fd9abd5ffdbce5b"
sha256: "66b8d0a7a31f45955b11ad7b65347abc61b31e10f8bdfa4428501b81f5b30fa5"
url: "https://pub.dev"
source: hosted
version: "2.8.4"
version: "2.9.1"
term_glyph:
dependency: transitive
description:
@ -1017,18 +1017,18 @@ packages:
dependency: transitive
description:
name: url_launcher_android
sha256: "1d0eae19bd7606ef60fe69ef3b312a437a16549476c42321d5dc1506c9ca3bf4"
sha256: "8582d7f6fe14d2652b4c45c9b6c14c0b678c2af2d083a11b604caeba51930d79"
url: "https://pub.dev"
source: hosted
version: "6.3.15"
version: "6.3.16"
url_launcher_ios:
dependency: transitive
description:
name: url_launcher_ios
sha256: "16a513b6c12bb419304e72ea0ae2ab4fed569920d1c7cb850263fe3acc824626"
sha256: "7f2022359d4c099eea7df3fdf739f7d3d3b9faf3166fb1dd390775176e0b76cb"
url: "https://pub.dev"
source: hosted
version: "6.3.2"
version: "6.3.3"
url_launcher_linux:
dependency: transitive
description:
@ -1057,10 +1057,10 @@ packages:
dependency: transitive
description:
name: url_launcher_web
sha256: "3ba963161bd0fe395917ba881d320b9c4f6dd3c4a233da62ab18a5025c85f1e9"
sha256: "4bd2b7b4dc4d4d0b94e5babfffbca8eac1a126c7f3d6ecbc1a11013faa3abba2"
url: "https://pub.dev"
source: hosted
version: "2.4.0"
version: "2.4.1"
url_launcher_windows:
dependency: transitive
description:
@ -1081,10 +1081,10 @@ packages:
dependency: transitive
description:
name: vector_graphics
sha256: "44cc7104ff32563122a929e4620cf3efd584194eec6d1d913eb5ba593dbcf6de"
sha256: a4f059dc26fc8295b5921376600a194c4ec7d55e72f2fe4c7d2831e103d461e6
url: "https://pub.dev"
source: hosted
version: "1.1.18"
version: "1.1.19"
vector_graphics_codec:
dependency: transitive
description:
@ -1097,10 +1097,10 @@ packages:
dependency: transitive
description:
name: vector_graphics_compiler
sha256: "1b4b9e706a10294258727674a340ae0d6e64a7231980f9f9a3d12e4b42407aad"
sha256: "557a315b7d2a6dbb0aaaff84d857967ce6bdc96a63dc6ee2a57ce5a6ee5d3331"
url: "https://pub.dev"
source: hosted
version: "1.1.16"
version: "1.1.17"
vector_math:
dependency: transitive
description:
@ -1113,10 +1113,10 @@ packages:
dependency: transitive
description:
name: vm_service
sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14"
sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02
url: "https://pub.dev"
source: hosted
version: "14.3.1"
version: "15.0.0"
web:
dependency: transitive
description:
@ -1129,18 +1129,18 @@ packages:
dependency: transitive
description:
name: web_socket
sha256: "3c12d96c0c9a4eec095246debcea7b86c0324f22df69893d538fcc6f1b8cce83"
sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c"
url: "https://pub.dev"
source: hosted
version: "0.1.6"
version: "1.0.1"
web_socket_channel:
dependency: transitive
description:
name: web_socket_channel
sha256: "0b8e2457400d8a859b7b2030786835a28a8e80836ef64402abef392ff4f1d0e5"
sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8
url: "https://pub.dev"
source: hosted
version: "3.0.2"
version: "3.0.3"
webview_windows:
dependency: transitive
description:
@ -1177,10 +1177,10 @@ packages:
dependency: transitive
description:
name: yet_another_json_isolate
sha256: "56155e9e0002cc51ea7112857bbcdc714d4c35e176d43e4d3ee233009ff410c9"
sha256: fe45897501fa156ccefbfb9359c9462ce5dec092f05e8a56109db30be864f01e
url: "https://pub.dev"
source: hosted
version: "2.0.3"
version: "2.1.0"
sdks:
dart: ">=3.7.0 <4.0.0"
dart: ">=3.8.0 <4.0.0"
flutter: ">=3.27.0"