Compare commits

...

4 commits

17 changed files with 87 additions and 99 deletions

2
.fvmrc
View file

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

View file

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

21
LICENSE Normal file
View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2025 Patrick Alvin Alcala
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -1,51 +1,15 @@
# Pharmacy Mobile App ![Logo](assets/icon/icon.png)
The Pharmacy Mobile App is a Flutter application designed to provide a seamless experience for customers interacting with a pharmacy service. This app includes features such as buying medicine, viewing menus, managing cart items, and accessing user profiles. # OFA Mobile App
## Table of Contents
1. [Features](#features)
2. [Prerequisites](#prerequisites)
3. [Getting Started](#getting-started)
4. [Contributing](#contributing)
5. [License](#license)
## Features ## Features
- **Login/Logout**: Customers can sign in and out of the app.
- **Menu View**: Access a menu with various medicine options.
- **Cart Management**: Add items to a cart and proceed to checkout.
- **Profile Management**: Update user profiles and manage personal information.
## Prerequisites - **Stock Monitoring**
Before running the project, ensure you have the following installed: - **Consultation**
- [Flutter SDK](https://flutter.dev/docs/get-started/install) - **Symptoms Identification**
- [Dart SDK](https://dart.dev/get-dart) - **Cart Identification**
- **Profile Management**
## Getting Started
1. Clone this repository to your local machine.
```sh
git clone https://github.com/yourusername/pharmacy_mobile.git
```
2. Navigate to the project directory.
```sh
cd pharmacy_mobile
```
3. Install dependencies.
```sh
flutter pub get
```
4. Run the application on a simulator or device.
```sh
flutter run
```
## Contributing
Contributions are welcome! Please follow these steps:
1. Fork this repository.
2. Create a new branch (`feature/your-feature`).
3. Make your changes and commit them (`git commit -m 'Add some feature'`).
4. Push the branch to your forked repository (`git push origin feature/your-feature`).
5. Open a pull request in the original repository.
## License ## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

View file

@ -26,7 +26,7 @@ class _AddDistributorPageState extends State<AddDistributorPage> {
final _addressController = TextEditingController(); final _addressController = TextEditingController();
final _refDistributors = RefDistributors(); final _refDistributors = RefDistributors();
late bool _isLoading = false; bool _isLoading = false;
Future<void> _getDistributorListCache() async { Future<void> _getDistributorListCache() async {
final distributorList = await _refDistributors.getList(); final distributorList = await _refDistributors.getList();

View file

@ -30,12 +30,12 @@ class _AddGenericsPageState extends State<AddGenericsPage> {
final _nameController = TextEditingController(); final _nameController = TextEditingController();
final _formKey = GlobalKey<FormState>(); final _formKey = GlobalKey<FormState>();
late bool _isLoading = false; bool _isLoading = false;
// late final List _categoryListCache = []; // late final List _categoryListCache = [];
late List _categoryList = []; late List _categoryList;
late String _selectedCategory = ''; late String _selectedCategory;
late String _categoryUUID = ''; late String _categoryUUID;
Future<void> _getGenericListCache() async { Future<void> _getGenericListCache() async {
final genericNameList = await _refGenericNames.getList(); final genericNameList = await _refGenericNames.getList();

View file

@ -26,7 +26,7 @@ class _AddManufacturerPageState extends State<AddManufacturerPage> {
final _addressController = TextEditingController(); final _addressController = TextEditingController();
final _refManufacturers = RefManufacturers(); final _refManufacturers = RefManufacturers();
late bool _isLoading = false; bool _isLoading = false;
Future<void> _getManufacturerListCache() async { Future<void> _getManufacturerListCache() async {
final manufacturerList = await _refManufacturers.getList(); final manufacturerList = await _refManufacturers.getList();

View file

@ -55,23 +55,24 @@ class _AddMedicinePageState extends State<AddMedicinePage> {
final _nameController = TextEditingController(); final _nameController = TextEditingController();
final _barcodeController = TextEditingController(); final _barcodeController = TextEditingController();
late bool _isLoading = false; bool _isLoading = false;
late List _genericNameList = []; bool imageUploaded = false;
late String _selectedGeneric = ''; bool uploaded = false;
late String _selectedCategory = '';
late List _typeList = []; late List _genericNameList;
late String _selectedType = ''; late String _selectedGeneric;
late List _manufacturerList = []; late String _selectedCategory;
late List _distributorList = []; late List _typeList;
late List _supplierList = []; late String _selectedType;
late String _selectedManufacturer = ''; late List _manufacturerList;
late String _selectedDistributor = ''; late List _distributorList;
late String _selectedSupplier = ''; late List _supplierList;
late String uuid = ''; late String _selectedManufacturer;
late bool imageUploaded = false; late String _selectedDistributor;
late String imageUrl = ''; late String _selectedSupplier;
late bool uploaded = false; late String uuid;
late String imageUUID = ''; late String imageUrl;
late String imageUUID;
Future<void> _getGenerics() async { Future<void> _getGenerics() async {
_genericNameList = await _refGenericNames.getList(); _genericNameList = await _refGenericNames.getList();

View file

@ -34,11 +34,12 @@ class _AddStockPageState extends State<AddStockPage> with WidgetsBindingObserver
final _priceController = TextEditingController(); final _priceController = TextEditingController();
final _stocks = Stocks(); final _stocks = Stocks();
late bool _isLoading = false; late List _medicineList;
late List _medicineList = []; late String _selectedMedicine;
late String _selectedMedicine = ''; late String barcode;
late DateTime selectedDate = DateTime.now();
late String barcode = ''; bool _isLoading = false;
DateTime selectedDate = DateTime.now();
final sampleBarcode = '8992185411017'; final sampleBarcode = '8992185411017';

View file

@ -25,7 +25,7 @@ class _AddSupplierPageState extends State<AddSupplierPage> {
final _nameController = TextEditingController(); final _nameController = TextEditingController();
final _refSuppliers = RefSuppliers(); final _refSuppliers = RefSuppliers();
late bool _isLoading = false; bool _isLoading = false;
Future<void> _getSupplierListCache() async { Future<void> _getSupplierListCache() async {
final supplierList = await _refSuppliers.getList(); final supplierList = await _refSuppliers.getList();

View file

@ -29,12 +29,13 @@ class _DeleteStockPageState extends State<DeleteStockPage> {
final _stocks = Stocks(); final _stocks = Stocks();
final _quantityController = TextEditingController(); final _quantityController = TextEditingController();
late List _stockList = []; bool _aboveQuantity = false;
late String _selectedStock = ''; bool _noStock = false;
late bool _aboveQuantity = false; double _serverQuantity = 0;
late bool _noStock = false;
late double _serverQuantity = 0; late List _stockList;
late String _selectedUUID = ''; late String _selectedStock;
late String _selectedUUID;
void _getStocks() async { void _getStocks() async {
_stockList = await _stocks.getList(); _stockList = await _stocks.getList();

View file

@ -18,8 +18,8 @@ class ListStocksPage extends StatefulWidget {
class _ListStocksPageState extends State<ListStocksPage> { class _ListStocksPageState extends State<ListStocksPage> {
final _stocks = Stocks(); final _stocks = Stocks();
late List _stockList = [];
bool _isLoading = false; bool _isLoading = false;
late List _stockList;
List<DataRow> _createRows() { List<DataRow> _createRows() {
final today = DateTime.now().toUtc(); final today = DateTime.now().toUtc();

View file

@ -26,8 +26,8 @@ class _LoginPageState extends State<LoginPage> {
final _passwordController = TextEditingController(); final _passwordController = TextEditingController();
final FocusNode _focusNode = FocusNode(); final FocusNode _focusNode = FocusNode();
late bool _isLoading = false; bool _isLoading = false;
late double containerHeight = 0.35; double containerHeight = 0.35;
void _signIn() async { void _signIn() async {
final email = _emailController.text; final email = _emailController.text;

View file

@ -45,7 +45,7 @@ class _MainPageState extends State<MainPage> {
final _refDistributors = RefDistributors(); final _refDistributors = RefDistributors();
final _refSuppliers = RefSuppliers(); final _refSuppliers = RefSuppliers();
late bool _isLoading = false; bool _isLoading = false;
void signOut() async { void signOut() async {
try { try {

View file

@ -25,8 +25,8 @@ class _RegisterPageState extends State<RegisterPage> {
final _confirmPasswordController = TextEditingController(); final _confirmPasswordController = TextEditingController();
final FocusNode _focusNode = FocusNode(); final FocusNode _focusNode = FocusNode();
late bool _isLoading = false; bool _isLoading = false;
late double containerHeight = 0.44; double containerHeight = 0.44;
Future<void> _signUp() async { Future<void> _signUp() async {
final email = _emailController.text; final email = _emailController.text;

View file

@ -556,26 +556,26 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: leak_tracker name: leak_tracker
sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0" sha256: "8dcda04c3fc16c14f48a7bb586d4be1f0d1572731b6d81d51772ef47c02081e0"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "10.0.9" version: "11.0.1"
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: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.0.9" version: "3.0.10"
leak_tracker_testing: leak_tracker_testing:
dependency: transitive dependency: transitive
description: description:
name: leak_tracker_testing name: leak_tracker_testing
sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.0.1" version: "3.0.2"
lints: lints:
dependency: transitive dependency: transitive
description: description:
@ -993,10 +993,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: test_api name: test_api
sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.7.4" version: "0.7.6"
typed_data: typed_data:
dependency: transitive dependency: transitive
description: description:
@ -1105,10 +1105,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: vector_math name: vector_math
sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.1.4" version: "2.2.0"
vm_service: vm_service:
dependency: transitive dependency: transitive
description: description:

View file

@ -2,7 +2,7 @@ name: pharmacy_mobile
description: "Ofelia Franco-Alcala Pharmacy App." description: "Ofelia Franco-Alcala Pharmacy App."
publish_to: "none" publish_to: "none"
version: 1.0.0+1 version: 1.8.27
environment: environment:
sdk: ^3.6.1 sdk: ^3.6.1