From da2301a2afc85b08d293cd4b0a60995baf2b35f6 Mon Sep 17 00:00:00 2001 From: Anthony Date: Thu, 18 May 2023 19:46:04 +0100 Subject: [PATCH] v6.6.0 updates --- LabelStoreMax/.env | 4 +- LabelStoreMax/CHANGELOG.md | 6 + LabelStoreMax/README.md | 4 +- .../ios/Runner.xcodeproj/project.pbxproj | 1 + LabelStoreMax/ios/Runner/Info.plist | 16 +- LabelStoreMax/lib/app/models/user.dart | 8 +- .../lib/app/networking/api_service.dart | 2 +- .../lib/app/providers/app_provider.dart | 14 +- .../lib/app/providers/event_provider.dart | 5 + .../app/providers/payments/razorpay_pay.dart | 81 -- .../lib/app/providers/route_provider.dart | 9 + LabelStoreMax/lib/bootstrap/boot.dart | 6 +- LabelStoreMax/lib/bootstrap/extensions.dart | 34 + LabelStoreMax/lib/bootstrap/helpers.dart | 18 +- LabelStoreMax/lib/config/decoders.dart | 4 +- LabelStoreMax/lib/config/design.dart | 2 +- LabelStoreMax/lib/config/events.dart | 2 +- .../lib/config/payment_gateways.dart | 9 - LabelStoreMax/lib/config/providers.dart | 2 +- LabelStoreMax/lib/config/storage_keys.dart | 5 +- .../lib/config/validation_rules.dart | 37 + LabelStoreMax/lib/main.dart | 2 +- .../resources/pages/account_landing_page.dart | 7 +- .../pages/account_register_page.dart | 7 +- .../resources/pages/browse_category_page.dart | 3 +- .../resources/pages/leave_review_page.dart | 67 +- .../resources/pages/product_detail_page.dart | 7 +- .../lib/resources/themes/light_theme.dart | 1 + .../resources/widgets/app_version_widget.dart | 2 +- .../resources/widgets/cart_icon_widget.dart | 75 +- .../widgets/future_build_widget.dart | 43 - ...roduct_detail_related_products_widget.dart | 11 +- .../product_detail_reviews_widget.dart | 16 +- .../widgets/product_detail_upsell_widget.dart | 2 +- .../lib/resources/widgets/woosignal_ui.dart | 22 +- LabelStoreMax/pubspec.lock | 1223 ----------------- LabelStoreMax/pubspec.yaml | 31 +- README.md | 4 +- 38 files changed, 269 insertions(+), 1523 deletions(-) delete mode 100644 LabelStoreMax/lib/app/providers/payments/razorpay_pay.dart create mode 100644 LabelStoreMax/lib/config/validation_rules.dart delete mode 100644 LabelStoreMax/lib/resources/widgets/future_build_widget.dart delete mode 100644 LabelStoreMax/pubspec.lock diff --git a/LabelStoreMax/.env b/LabelStoreMax/.env index 42971e9..9d131fb 100644 --- a/LabelStoreMax/.env +++ b/LabelStoreMax/.env @@ -49,4 +49,6 @@ RAZORPAY_API_KEY="" # ** PRODUCT_PLACEHOLDER_IMAGE="https://woosignal.com/images/woocommerce-placeholder.png" -# Sets the default placeholder image for products with no image \ No newline at end of file +# Sets the default placeholder image for products with no image + +AUTH_USER_KEY="AUTH_USER" \ No newline at end of file diff --git a/LabelStoreMax/CHANGELOG.md b/LabelStoreMax/CHANGELOG.md index 01c8a2f..30c967e 100644 --- a/LabelStoreMax/CHANGELOG.md +++ b/LabelStoreMax/CHANGELOG.md @@ -1,3 +1,9 @@ +## [6.6.0] - 2023-05-18 + +* Nylo v5.0.0 migration +* Refactor project +* Flutter v3.10.0 compatibility + ## [6.5.1] - 2023-03-04 * New translation added. diff --git a/LabelStoreMax/README.md b/LabelStoreMax/README.md index 1aa922e..e7aa170 100644 --- a/LabelStoreMax/README.md +++ b/LabelStoreMax/README.md @@ -4,7 +4,7 @@ # WooCommerce App: Label StoreMax -### Label StoreMax - v6.5.1 +### Label StoreMax - v6.6.0 [Official WooSignal WooCommerce App](https://woosignal.com) @@ -44,7 +44,7 @@ Full documentation this available [here](https://woosignal.com/docs/app/label-st - Browse products, make orders, customer login (via WordPress) - Change app name, logo, customize default language, currency + more - Light and dark mode -- Stripe, Cash On Delivery, PayPal, RazorPay +- Stripe, Cash On Delivery, PayPal - Localized for en, es, pt, it, hi, fr, zh, tr, nl, de - Orders show as normal in WooCommerce diff --git a/LabelStoreMax/ios/Runner.xcodeproj/project.pbxproj b/LabelStoreMax/ios/Runner.xcodeproj/project.pbxproj index 1641b1b..fcc1016 100644 --- a/LabelStoreMax/ios/Runner.xcodeproj/project.pbxproj +++ b/LabelStoreMax/ios/Runner.xcodeproj/project.pbxproj @@ -204,6 +204,7 @@ files = ( ); inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); name = "Thin Binary"; outputPaths = ( diff --git a/LabelStoreMax/ios/Runner/Info.plist b/LabelStoreMax/ios/Runner/Info.plist index 4956d2c..0e62598 100644 --- a/LabelStoreMax/ios/Runner/Info.plist +++ b/LabelStoreMax/ios/Runner/Info.plist @@ -2,6 +2,8 @@ + CADisableMinimumFrameDurationOnPhone + CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleExecutable @@ -16,12 +18,8 @@ APPL CFBundleShortVersionString $(FLUTTER_BUILD_NAME) - NSCameraUsageDescription - You can take photos of your payment details. CFBundleSignature ???? - MinimumOSVersion - 13.0 CFBundleURLTypes @@ -39,11 +37,17 @@ $(FLUTTER_BUILD_NUMBER) LSRequiresIPhoneOS + MinimumOSVersion + 13.0 NSAppTransportSecurity NSAllowsArbitraryLoads + NSCameraUsageDescription + You can take photos of your payment details. + UIApplicationSupportsIndirectInputEvents + UILaunchStoryboardName LaunchScreen UIMainStoryboardFile @@ -61,9 +65,5 @@ UIViewControllerBasedStatusBarAppearance - CADisableMinimumFrameDurationOnPhone - - UIApplicationSupportsIndirectInputEvents - diff --git a/LabelStoreMax/lib/app/models/user.dart b/LabelStoreMax/lib/app/models/user.dart index f6975a0..0cc5660 100644 --- a/LabelStoreMax/lib/app/models/user.dart +++ b/LabelStoreMax/lib/app/models/user.dart @@ -10,18 +10,16 @@ import 'package:nylo_framework/nylo_framework.dart'; -class User extends Storable { +class User extends Model { String? userId; String? token; User(); User.fromUserAuthResponse({this.userId, this.token}); - @override - toStorage() => {"token": token, "user_id": userId}; + toJson() => {"token": token, "user_id": userId}; - @override - fromStorage(dynamic data) { + fromJson(dynamic data) { token = data['token']; userId = data['user_id']; } diff --git a/LabelStoreMax/lib/app/networking/api_service.dart b/LabelStoreMax/lib/app/networking/api_service.dart index ae204d4..bdded1c 100644 --- a/LabelStoreMax/lib/app/networking/api_service.dart +++ b/LabelStoreMax/lib/app/networking/api_service.dart @@ -8,7 +8,7 @@ import 'package:nylo_framework/nylo_framework.dart'; | ApiService | ------------------------------------------------------------------------- | Define your API endpoints -| Learn more https://nylo.dev/docs/4.x/networking +| Learn more https://nylo.dev/docs/5.x/networking |-------------------------------------------------------------------------- */ diff --git a/LabelStoreMax/lib/app/providers/app_provider.dart b/LabelStoreMax/lib/app/providers/app_provider.dart index e44654a..c6a10cb 100644 --- a/LabelStoreMax/lib/app/providers/app_provider.dart +++ b/LabelStoreMax/lib/app/providers/app_provider.dart @@ -4,8 +4,10 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_app/bootstrap/app_helper.dart'; import 'package:flutter_app/bootstrap/helpers.dart'; +import 'package:flutter_app/config/decoders.dart'; import 'package:flutter_app/config/design.dart'; import 'package:flutter_app/config/theme.dart'; +import 'package:flutter_app/config/validation_rules.dart'; import 'package:nylo_framework/nylo_framework.dart'; import 'package:flutter_app/config/localization.dart'; import 'package:woosignal/models/response/woosignal_app.dart'; @@ -112,12 +114,14 @@ class AppProvider implements NyProvider { nylo.appLoader = loader; nylo.appLogo = logo; - String initialRoute = AppHelper.instance.appConfig!.appStatus != null - ? '/home' - : '/no-connection'; - - nylo.initialRoute = initialRoute; + nylo.addModelDecoders(modelDecoders); + nylo.addValidationRules(validationRules); return nylo; } + + @override + afterBoot(Nylo nylo) async { + + } } diff --git a/LabelStoreMax/lib/app/providers/event_provider.dart b/LabelStoreMax/lib/app/providers/event_provider.dart index ea35d13..573ba4e 100644 --- a/LabelStoreMax/lib/app/providers/event_provider.dart +++ b/LabelStoreMax/lib/app/providers/event_provider.dart @@ -8,4 +8,9 @@ class EventProvider implements NyProvider { return nylo; } + + @override + afterBoot(Nylo nylo) async { + + } } diff --git a/LabelStoreMax/lib/app/providers/payments/razorpay_pay.dart b/LabelStoreMax/lib/app/providers/payments/razorpay_pay.dart deleted file mode 100644 index a1ebcfb..0000000 --- a/LabelStoreMax/lib/app/providers/payments/razorpay_pay.dart +++ /dev/null @@ -1,81 +0,0 @@ -// -// LabelCore -// Label StoreMAX -// -// Created by Anthony Gordon. -// 2023, WooSignal Ltd. All rights reserved. -// - -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// - -import 'package:flutter/widgets.dart'; -import 'package:flutter_app/app/models/cart.dart'; -import 'package:flutter_app/bootstrap/data/order_wc.dart'; -import 'package:flutter_app/bootstrap/helpers.dart'; -import 'package:flutter_app/resources/pages/checkout_confirmation_page.dart'; -import 'package:nylo_framework/nylo_framework.dart'; -import 'package:razorpay_flutter/razorpay_flutter.dart'; -import 'package:woosignal/models/response/tax_rate.dart'; -import 'package:woosignal/models/payload/order_wc.dart'; -import 'package:woosignal/models/response/order.dart'; - -razorPay(context, - {required CheckoutConfirmationPageState state, TaxRate? taxRate}) async { - Razorpay razorpay = Razorpay(); - - razorpay.on(Razorpay.EVENT_PAYMENT_SUCCESS, - (PaymentSuccessResponse response) async { - OrderWC orderWC = await buildOrderWC(taxRate: taxRate); - - Order? order = await appWooSignal((api) => api.createOrder(orderWC)); - - if (order != null) { - Cart.getInstance.clear(); - Navigator.pushNamed(context, "/checkout-status", arguments: order); - } else { - showToastNotification( - context, - title: "Error".tr(), - description: trans("Something went wrong, please contact our store"), - ); - state.reloadState(showLoader: false); - } - }); - - razorpay.on(Razorpay.EVENT_PAYMENT_ERROR, (PaymentFailureResponse response) { - showToastNotification(context, - title: trans("Error"), - description: response.message ?? "", - style: ToastNotificationStyleType.WARNING); - state.reloadState(showLoader: false); - }); - - razorpay.on(Razorpay.EVENT_EXTERNAL_WALLET, _handleExternalWallet); - - // CHECKOUT HELPER - await checkout(taxRate, (total, billingDetails, cart) async { - var options = { - 'key': getEnv('RAZORPAY_API_KEY'), - 'amount': (double.parse(total) * 100).toInt(), - 'name': getEnv('APP_NAME'), - 'description': await cart.cartShortDesc(), - 'prefill': { - "name": [ - billingDetails!.billingAddress?.firstName, - billingDetails.billingAddress?.lastName - ].where((t) => t != null || t != "").toList().join(" "), - "method": "card", - 'email': billingDetails.billingAddress?.emailAddress ?? "" - } - }; - - state.reloadState(showLoader: true); - - razorpay.open(options); - }); -} - -void _handleExternalWallet(ExternalWalletResponse response) {} diff --git a/LabelStoreMax/lib/app/providers/route_provider.dart b/LabelStoreMax/lib/app/providers/route_provider.dart index 96748ad..32b02e8 100644 --- a/LabelStoreMax/lib/app/providers/route_provider.dart +++ b/LabelStoreMax/lib/app/providers/route_provider.dart @@ -1,3 +1,4 @@ +import 'package:flutter_app/bootstrap/app_helper.dart'; import 'package:flutter_app/routes/router.dart'; import 'package:nylo_framework/nylo_framework.dart'; @@ -8,4 +9,12 @@ class RouteProvider implements NyProvider { return nylo; } + + @override + afterBoot(Nylo nylo) async { + String initialRoute = AppHelper.instance.appConfig!.appStatus != null + ? '/home' + : '/no-connection'; + nylo.setInitialRoute(initialRoute); + } } diff --git a/LabelStoreMax/lib/bootstrap/boot.dart b/LabelStoreMax/lib/bootstrap/boot.dart index 634f38d..760407c 100644 --- a/LabelStoreMax/lib/bootstrap/boot.dart +++ b/LabelStoreMax/lib/bootstrap/boot.dart @@ -1,12 +1,8 @@ -// import 'package:firebase_core/firebase_core.dart'; -// import 'package:firebase_messaging/firebase_messaging.dart'; -// import 'package:flutter_app/firebase_options.dart'; - /// boot application import 'package:flutter_app/config/providers.dart'; import 'package:nylo_framework/nylo_framework.dart'; class Boot { static Future nylo() async => await bootApplication(providers); - static Future finished(Nylo nylo) async => await bootFinished(nylo); + static Future finished(Nylo nylo) async => await bootFinished(nylo, providers); } diff --git a/LabelStoreMax/lib/bootstrap/extensions.dart b/LabelStoreMax/lib/bootstrap/extensions.dart index d27aea5..3743b72 100644 --- a/LabelStoreMax/lib/bootstrap/extensions.dart +++ b/LabelStoreMax/lib/bootstrap/extensions.dart @@ -138,3 +138,37 @@ extension NyText on Text { style: style != null ? this.style?.merge(style) ?? style : this.style); } } + +/// Check if the [Product] is new. +extension DateTimeExtension on DateTime? { + bool? isAfterOrEqualTo(DateTime dateTime) { + final date = this; + if (date != null) { + final isAtSameMomentAs = dateTime.isAtSameMomentAs(date); + return isAtSameMomentAs | date.isAfter(dateTime); + } + return null; + } + + bool? isBeforeOrEqualTo(DateTime dateTime) { + final date = this; + if (date != null) { + final isAtSameMomentAs = dateTime.isAtSameMomentAs(date); + return isAtSameMomentAs | date.isBefore(dateTime); + } + return null; + } + + bool? isBetween( + DateTime fromDateTime, + DateTime toDateTime, + ) { + final date = this; + if (date != null) { + final isAfter = date.isAfterOrEqualTo(fromDateTime) ?? false; + final isBefore = date.isBeforeOrEqualTo(toDateTime) ?? false; + return isAfter && isBefore; + } + return null; + } +} \ No newline at end of file diff --git a/LabelStoreMax/lib/bootstrap/helpers.dart b/LabelStoreMax/lib/bootstrap/helpers.dart index da58b0e..8a13c36 100644 --- a/LabelStoreMax/lib/bootstrap/helpers.dart +++ b/LabelStoreMax/lib/bootstrap/helpers.dart @@ -20,6 +20,7 @@ import 'package:flutter_app/app/models/payment_type.dart'; import 'package:flutter_app/app/models/user.dart'; import 'package:flutter_app/bootstrap/app_helper.dart'; import 'package:flutter_app/bootstrap/enums/symbol_position_enums.dart'; +import 'package:flutter_app/bootstrap/extensions.dart'; import 'package:flutter_app/bootstrap/shared_pref/shared_key.dart'; import 'package:flutter_app/config/currency.dart'; import 'package:flutter_app/config/decoders.dart'; @@ -45,7 +46,7 @@ import '../resources/themes/styles/color_styles.dart'; import 'package:flutter/services.dart' show rootBundle; Future getUser() async => - (await (NyStorage.read(SharedKey.authUser, model: User()))); + (await (NyStorage.read(SharedKey.authUser))); Future appWooSignal(Function(WooSignal) api) async { return await api(WooSignal.instance); @@ -156,6 +157,7 @@ String moneyFormatter(double amount) { amount: amount, settings: MoneyFormatterSettings( symbol: AppHelper.instance.appConfig!.currencyMeta!.symbolNative, + symbolAndNumberSeparator: "" ), ); if (appCurrencySymbolPosition == SymbolPositionType.left) { @@ -486,7 +488,7 @@ Widget refreshableScroll(context, return StaggeredGridTile.fit( crossAxisCellCount: 1, child: Container( - height: 200, + height: 350, child: ProductItemContainer( product: product, onTap: onTap, @@ -654,3 +656,15 @@ api(dynamic Function(T) request, {BuildContext? context}) async => /// Event helper event({Map? data}) async => nyEvent(params: data, events: events); + +/// Check if the [Product] is new. +bool isProductNew(Product? product) { + if (product?.dateCreatedGMT == null) false; + try { + DateTime dateTime = DateTime.parse(product!.dateCreatedGMT!); + return dateTime.isBetween(DateTime.now().subtract(Duration(days: 2)), DateTime.now()) ?? false; + } on Exception catch (e) { + NyLogger.error(e.toString()); + } + return false; +} \ No newline at end of file diff --git a/LabelStoreMax/lib/config/decoders.dart b/LabelStoreMax/lib/config/decoders.dart index cd2665f..714c54d 100644 --- a/LabelStoreMax/lib/config/decoders.dart +++ b/LabelStoreMax/lib/config/decoders.dart @@ -6,7 +6,7 @@ import 'package:flutter_app/app/networking/dio/base_api_service.dart'; | Model Decoders | ------------------------------------------------------------------------- | Model decoders are used in 'app/networking/' for morphing json payloads -| into Models. Learn more https://nylo.dev/docs/4.x/decoders#model-decoders +| into Models. Learn more https://nylo.dev/docs/5.x/decoders#model-decoders |-------------------------------------------------------------------------- */ @@ -20,7 +20,7 @@ final Map modelDecoders = { | ------------------------------------------------------------------------- | API decoders are used when you need to access an API service using the | 'api' helper. E.g. api((request) => request.fetchData()); -| Learn more https://nylo.dev/docs/4.x/decoders#api-decoders +| Learn more https://nylo.dev/docs/5.x/decoders#api-decoders |-------------------------------------------------------------------------- */ diff --git a/LabelStoreMax/lib/config/design.dart b/LabelStoreMax/lib/config/design.dart index 667cee6..f7dbae8 100644 --- a/LabelStoreMax/lib/config/design.dart +++ b/LabelStoreMax/lib/config/design.dart @@ -7,7 +7,7 @@ import 'package:flutter_app/resources/widgets/woosignal_ui.dart'; | Design | Contains widgets used in the Nylo framework. | -| Learn more: https://nylo.dev/docs/4.x/themes +| Learn more: https://nylo.dev/docs/5.x/themes |-------------------------------------------------------------------------- */ diff --git a/LabelStoreMax/lib/config/events.dart b/LabelStoreMax/lib/config/events.dart index 172b33e..d6c697a 100644 --- a/LabelStoreMax/lib/config/events.dart +++ b/LabelStoreMax/lib/config/events.dart @@ -8,7 +8,7 @@ import 'package:nylo_framework/nylo_framework.dart'; | Add your "app/events" here. | Events can be fired using: event(); | -| Learn more: https://nylo.dev/docs/4.x/events +| Learn more: https://nylo.dev/docs/5.x/events |-------------------------------------------------------------------------- */ diff --git a/LabelStoreMax/lib/config/payment_gateways.dart b/LabelStoreMax/lib/config/payment_gateways.dart index 661ffde..92cc633 100644 --- a/LabelStoreMax/lib/config/payment_gateways.dart +++ b/LabelStoreMax/lib/config/payment_gateways.dart @@ -1,7 +1,6 @@ import 'package:flutter_app/app/models/payment_type.dart'; import 'package:flutter_app/app/providers/payments/cash_on_delivery.dart'; import 'package:flutter_app/app/providers/payments/paypal_pay.dart'; -import 'package:flutter_app/app/providers/payments/razorpay_pay.dart'; import 'package:flutter_app/app/providers/payments/stripe_pay.dart'; import 'package:flutter_app/bootstrap/helpers.dart'; import 'package:nylo_framework/nylo_framework.dart'; @@ -44,14 +43,6 @@ List paymentTypeList = [ pay: payPalPay, ), - addPayment( - id: 5, - name: "RazorPay", - description: trans("Debit or Credit Card"), - assetImage: "razorpay.png", - pay: razorPay, - ), - // e.g. add more here // addPayment( diff --git a/LabelStoreMax/lib/config/providers.dart b/LabelStoreMax/lib/config/providers.dart index d22ece0..d1a228a 100644 --- a/LabelStoreMax/lib/config/providers.dart +++ b/LabelStoreMax/lib/config/providers.dart @@ -9,7 +9,7 @@ import 'package:nylo_framework/nylo_framework.dart'; | Add your "app/providers" here. | Providers are booted when your application start. | -| Learn more: https://nylo.dev/docs/4.x/providers +| Learn more: https://nylo.dev/docs/5.x/providers |-------------------------------------------------------------------------- */ diff --git a/LabelStoreMax/lib/config/storage_keys.dart b/LabelStoreMax/lib/config/storage_keys.dart index 786ca6b..2d3149b 100644 --- a/LabelStoreMax/lib/config/storage_keys.dart +++ b/LabelStoreMax/lib/config/storage_keys.dart @@ -5,12 +5,15 @@ | E.g. static String userCoins = "USER_COINS"; | String coins = NyStorage.read( StorageKey.userCoins ); | -| Learn more: https://nylo.dev/docs/4.x/storage#storage-keys +| Learn more: https://nylo.dev/docs/5.x/storage#storage-keys |-------------------------------------------------------------------------- */ +import 'package:nylo_framework/nylo_framework.dart'; + class StorageKey { static String userToken = "USER_TOKEN"; + static String authUser = getEnv('AUTH_USER_KEY', defaultValue: 'AUTH_USER'); /// Add your storage keys here... } diff --git a/LabelStoreMax/lib/config/validation_rules.dart b/LabelStoreMax/lib/config/validation_rules.dart new file mode 100644 index 0000000..88dc4fa --- /dev/null +++ b/LabelStoreMax/lib/config/validation_rules.dart @@ -0,0 +1,37 @@ +import 'package:nylo_framework/nylo_framework.dart'; + +/* +|-------------------------------------------------------------------------- +| Validation Rules +| ------------------------------------------------------------------------- +| Add custom validation rules for your project in this file. +| Learn more https://nylo.dev/docs/5.x/validation#custom-validation-rules +|-------------------------------------------------------------------------- +*/ + +final Map validationRules = { + /// Example + // SimplePassword: (attribute) => SimplePassword(attribute) +}; + +/// Example validation class +// class SimplePassword extends ValidationRule { +// SimplePassword(String attribute) +// : super( +// attribute: attribute, +// signature: "simple_password", // Use this signature for the validator +// description: "The $attribute field must be between 4 and 8 digits long and include at least one numeric digit", // Toast description when an error occurs +// textFieldMessage: "Must be between 4 and 8 digits long with one numeric digit"); // TextField description when an error occurs +// +// @override +// handle(Map info) { +// super.handle(info); +// +// /// info['rule'] = Validation rule i.e "min". +// /// info['data'] = Data the user has passed into the validation. +// /// info['message'] = Overriding message to be displayed for validation (optional). +// +// RegExp regExp = RegExp(r'^(?=.*\d).{4,8}$'); +// return regExp.hasMatch(info['data']); +// } +// } \ No newline at end of file diff --git a/LabelStoreMax/lib/main.dart b/LabelStoreMax/lib/main.dart index e3505d5..8285b27 100644 --- a/LabelStoreMax/lib/main.dart +++ b/LabelStoreMax/lib/main.dart @@ -11,7 +11,7 @@ void main() async { AppBuild( navigatorKey: NyNavigator.instance.router.navigatorKey, onGenerateRoute: nylo.router!.generator(), - initialRoute: nylo.initialRoute, + initialRoute: nylo.getInitialRoute(), debugShowCheckedModeBanner: false, ), ); diff --git a/LabelStoreMax/lib/resources/pages/account_landing_page.dart b/LabelStoreMax/lib/resources/pages/account_landing_page.dart index 1d7ec1d..4ee9762 100644 --- a/LabelStoreMax/lib/resources/pages/account_landing_page.dart +++ b/LabelStoreMax/lib/resources/pages/account_landing_page.dart @@ -35,11 +35,6 @@ class _AccountLandingPageState extends NyState { final TextEditingController _tfEmailController = TextEditingController(), _tfPasswordController = TextEditingController(); - @override - void initState() { - super.initState(); - } - @override Widget build(BuildContext context) { return Scaffold( @@ -231,7 +226,7 @@ class _AccountLandingPageState extends NyState { String? token = wpUserLoginResponse.data!.userToken; String userId = wpUserLoginResponse.data!.userId.toString(); User user = User.fromUserAuthResponse(token: token, userId: userId); - await user.save(SharedKey.authUser); + await Auth.set(user, key: SharedKey.authUser); showToastNotification(context, title: trans("Hello"), diff --git a/LabelStoreMax/lib/resources/pages/account_register_page.dart b/LabelStoreMax/lib/resources/pages/account_register_page.dart index 246be5a..eaa433d 100644 --- a/LabelStoreMax/lib/resources/pages/account_register_page.dart +++ b/LabelStoreMax/lib/resources/pages/account_register_page.dart @@ -48,11 +48,6 @@ class _AccountRegistrationPageState extends NyState { final WooSignalApp? _wooSignalApp = AppHelper.instance.appConfig; - @override - void initState() { - super.initState(); - } - @override Widget build(BuildContext context) { return Scaffold( @@ -241,7 +236,7 @@ class _AccountRegistrationPageState extends NyState { String? token = wpUserRegisterResponse.data!.userToken; String userId = wpUserRegisterResponse.data!.userId.toString(); User user = User.fromUserAuthResponse(token: token, userId: userId); - await user.save(SharedKey.authUser); + await Auth.set(user, key: SharedKey.authUser); await WPJsonAPI.instance.api((request) => request.wpUpdateUserInfo(token, firstName: firstName, lastName: lastName)); diff --git a/LabelStoreMax/lib/resources/pages/browse_category_page.dart b/LabelStoreMax/lib/resources/pages/browse_category_page.dart index 2c68fbf..4f7789a 100644 --- a/LabelStoreMax/lib/resources/pages/browse_category_page.dart +++ b/LabelStoreMax/lib/resources/pages/browse_category_page.dart @@ -85,7 +85,8 @@ class _BrowseCategoryPageState extends NyState { onRefresh: _onRefresh, onLoading: _onLoading, products: _productCategorySearchLoaderController.getResults(), - onTap: _showProduct), + onTap: _showProduct, + ), ), ); } diff --git a/LabelStoreMax/lib/resources/pages/leave_review_page.dart b/LabelStoreMax/lib/resources/pages/leave_review_page.dart index 8f99550..63d423a 100644 --- a/LabelStoreMax/lib/resources/pages/leave_review_page.dart +++ b/LabelStoreMax/lib/resources/pages/leave_review_page.dart @@ -135,42 +135,41 @@ class _LeaveReviewPageState extends NyState { return; } - try { - validator(rules: {"review": "min:5"}, data: {"review": review}); - - ProductReview? productReview = + await validate( + rules: {"review": "min:5"}, + data: {"review": review}, + onSuccess: () async { + ProductReview? productReview = await (appWooSignal((api) => api.createProductReview( - productId: _lineItem!.productId, - verified: true, - review: review, - status: "approved", - reviewer: [ - _order!.billing!.firstName, - _order!.billing!.lastName - ].join(" "), - rating: _rating, - reviewerEmail: _order!.billing!.email, - ))); + productId: _lineItem!.productId, + verified: true, + review: review, + status: "approved", + reviewer: [ + _order!.billing!.firstName, + _order!.billing!.lastName + ].join(" "), + rating: _rating, + reviewerEmail: _order!.billing!.email, + ))); - if (productReview == null) { - showToastNotification(context, - title: trans("Oops"), - description: trans("Something went wrong"), - style: ToastNotificationStyleType.INFO); - return; - } - showToastNotification(context, - title: trans("Success"), - description: trans("Your review has been submitted"), - style: ToastNotificationStyleType.SUCCESS); - pop(result: _lineItem); - } on ValidationException catch (e) { - NyLogger.error(e.toString()); - } finally { - setState(() { - _isLoading = false; - }); - } + if (productReview == null) { + showToastNotification(context, + title: trans("Oops"), + description: trans("Something went wrong"), + style: ToastNotificationStyleType.INFO); + return; + } + showToastNotification(context, + title: trans("Success"), + description: trans("Your review has been submitted"), + style: ToastNotificationStyleType.SUCCESS); + pop(result: _lineItem); + }); + + setState(() { + _isLoading = false; + }); } Future _fetchWpUserData() async { diff --git a/LabelStoreMax/lib/resources/pages/product_detail_page.dart b/LabelStoreMax/lib/resources/pages/product_detail_page.dart index e938b0f..436d204 100644 --- a/LabelStoreMax/lib/resources/pages/product_detail_page.dart +++ b/LabelStoreMax/lib/resources/pages/product_detail_page.dart @@ -17,7 +17,6 @@ import 'package:flutter_app/bootstrap/helpers.dart'; import 'package:flutter_app/resources/widgets/app_loader_widget.dart'; import 'package:flutter_app/resources/widgets/buttons.dart'; import 'package:flutter_app/resources/widgets/cart_icon_widget.dart'; -import 'package:flutter_app/resources/widgets/future_build_widget.dart'; import 'package:flutter_app/resources/widgets/product_detail_body_widget.dart'; import 'package:flutter_app/resources/widgets/product_detail_footer_actions_widget.dart'; import 'package:flutter_app/resources/widgets/woosignal_ui.dart'; @@ -232,9 +231,9 @@ class _ProductDetailState extends NyState { appBar: AppBar( actions: [ if (_wooSignalApp!.wishlistEnabled!) - FutureBuildWidget( - asyncFuture: hasAddedWishlistProduct(_product!.id), - onValue: (dynamic isInFavourites) { + NyFutureBuilder( + future: hasAddedWishlistProduct(_product!.id), + child: (context, dynamic isInFavourites) { return isInFavourites ? IconButton( onPressed: () => widget.controller.toggleWishList( diff --git a/LabelStoreMax/lib/resources/themes/light_theme.dart b/LabelStoreMax/lib/resources/themes/light_theme.dart index f7c42d1..0e2247c 100644 --- a/LabelStoreMax/lib/resources/themes/light_theme.dart +++ b/LabelStoreMax/lib/resources/themes/light_theme.dart @@ -29,6 +29,7 @@ ThemeData lightTheme(ColorStyles lightColors) { getAppTextTheme(appFont, defaultTextTheme.merge(_textTheme(lightColors))); return ThemeData( + useMaterial3: true, primaryColor: lightColors.primaryContent, primaryColorLight: lightColors.primaryAccent, focusColor: lightColors.primaryContent, diff --git a/LabelStoreMax/lib/resources/widgets/app_version_widget.dart b/LabelStoreMax/lib/resources/widgets/app_version_widget.dart index c95e7e4..144379b 100644 --- a/LabelStoreMax/lib/resources/widgets/app_version_widget.dart +++ b/LabelStoreMax/lib/resources/widgets/app_version_widget.dart @@ -10,7 +10,7 @@ import 'package:flutter/material.dart'; import 'package:nylo_framework/nylo_framework.dart'; -import 'package:package_info/package_info.dart'; +import 'package:package_info_plus/package_info_plus.dart'; class AppVersionWidget extends StatelessWidget { const AppVersionWidget({Key? key}) : super(key: key); diff --git a/LabelStoreMax/lib/resources/widgets/cart_icon_widget.dart b/LabelStoreMax/lib/resources/widgets/cart_icon_widget.dart index 7565e84..bf4a971 100644 --- a/LabelStoreMax/lib/resources/widgets/cart_icon_widget.dart +++ b/LabelStoreMax/lib/resources/widgets/cart_icon_widget.dart @@ -23,45 +23,48 @@ class CartIconWidget extends StatefulWidget { class _CartIconWidgetState extends State { @override Widget build(BuildContext context) { - return IconButton( - icon: Stack( - children: [ - Positioned.fill( - child: Align( - child: Icon(Icons.shopping_cart, size: 20), - alignment: Alignment.bottomCenter, - ), - bottom: 0, - ), - Positioned.fill( - child: Align( - child: NyFutureBuilder>( - future: Cart.getInstance.getCart(), - child: (BuildContext context, - data) { - List cartItems = - data.map((e) => e.quantity).toList(); - String cartValue = "0"; - if (cartItems.isNotEmpty) { - cartValue = cartItems - .reduce((value, element) => value! + element!) - .toString(); - } - return Text( - cartValue, - style: Theme.of(context).textTheme.bodyMedium, - textAlign: TextAlign.center, - ); - }, + return Container( + width: 70, + child: IconButton( + icon: Stack( + children: [ + Positioned.fill( + child: Align( + child: Icon(Icons.shopping_cart, size: 20), + alignment: Alignment.bottomCenter, ), - alignment: Alignment.topCenter, + bottom: 0, ), - top: 0, - ) - ], + Positioned.fill( + child: Align( + child: NyFutureBuilder>( + future: Cart.getInstance.getCart(), + child: (BuildContext context, + data) { + List cartItems = + data.map((e) => e.quantity).toList(); + String cartValue = "0"; + if (cartItems.isNotEmpty) { + cartValue = cartItems + .reduce((value, element) => value! + element!) + .toString(); + } + return Text( + cartValue, + style: Theme.of(context).textTheme.bodyMedium, + textAlign: TextAlign.center, + ); + }, + ), + alignment: Alignment.topCenter, + ), + top: 0, + ) + ], + ), + onPressed: () => Navigator.pushNamed(context, "/cart") + .then((value) => setState(() {})), ), - onPressed: () => Navigator.pushNamed(context, "/cart") - .then((value) => setState(() {})), ); } } diff --git a/LabelStoreMax/lib/resources/widgets/future_build_widget.dart b/LabelStoreMax/lib/resources/widgets/future_build_widget.dart deleted file mode 100644 index df9f696..0000000 --- a/LabelStoreMax/lib/resources/widgets/future_build_widget.dart +++ /dev/null @@ -1,43 +0,0 @@ -// Label StoreMax -// -// Created by Anthony Gordon. -// 2023, WooSignal Ltd. All rights reserved. -// - -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - -import 'package:flutter/material.dart'; - -class FutureBuildWidget extends StatelessWidget { - const FutureBuildWidget( - {Key? key, - required this.asyncFuture, - required this.onValue, - this.onLoading}) - : super(key: key); - - final Widget Function(T? value) onValue; - final Widget? onLoading; - final Future asyncFuture; - - @override - Widget build(BuildContext context) { - return FutureBuilder( - future: asyncFuture.then((value) => value as T), - builder: (BuildContext context, AsyncSnapshot snapshot) { - switch (snapshot.connectionState) { - case ConnectionState.waiting: - return onLoading ?? Container(); - default: - if (snapshot.hasError) { - return SizedBox.shrink(); - } else { - return onValue(snapshot.data); - } - } - }, - ); - } -} diff --git a/LabelStoreMax/lib/resources/widgets/product_detail_related_products_widget.dart b/LabelStoreMax/lib/resources/widgets/product_detail_related_products_widget.dart index 2f395a8..bacf6af 100644 --- a/LabelStoreMax/lib/resources/widgets/product_detail_related_products_widget.dart +++ b/LabelStoreMax/lib/resources/widgets/product_detail_related_products_widget.dart @@ -10,8 +10,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_app/bootstrap/helpers.dart'; -import 'package:flutter_app/resources/widgets/app_loader_widget.dart'; -import 'package:flutter_app/resources/widgets/future_build_widget.dart'; import 'package:flutter_app/resources/widgets/woosignal_ui.dart'; import 'package:nylo_framework/nylo_framework.dart'; import 'package:woosignal/models/response/products.dart'; @@ -53,10 +51,10 @@ class ProductDetailRelatedProductsWidget extends StatelessWidget { ), ), Container( - height: 200, - child: FutureBuildWidget>( - asyncFuture: fetchRelated(), - onValue: (relatedProducts) { + height: 300, + child: NyFutureBuilder>( + future: fetchRelated(), + child: (context, relatedProducts) { if (relatedProducts == null) { return SizedBox.shrink(); } @@ -70,7 +68,6 @@ class ProductDetailRelatedProductsWidget extends StatelessWidget { .toList(), ); }, - onLoading: AppLoaderWidget(), ), ), ], diff --git a/LabelStoreMax/lib/resources/widgets/product_detail_reviews_widget.dart b/LabelStoreMax/lib/resources/widgets/product_detail_reviews_widget.dart index e1e5caf..444fc55 100644 --- a/LabelStoreMax/lib/resources/widgets/product_detail_reviews_widget.dart +++ b/LabelStoreMax/lib/resources/widgets/product_detail_reviews_widget.dart @@ -12,7 +12,6 @@ import 'package:auto_size_text/auto_size_text.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_app/bootstrap/helpers.dart'; -import 'package:flutter_app/resources/widgets/future_build_widget.dart'; import 'package:flutter_app/resources/widgets/product_detail_review_tile_widget.dart'; import 'package:flutter_rating_bar/flutter_rating_bar.dart'; import 'package:nylo_framework/nylo_framework.dart'; @@ -91,12 +90,9 @@ class _ProductDetailReviewsWidgetState initiallyExpanded: false, children: [ if (_ratingExpanded == true) - FutureBuildWidget>( - asyncFuture: fetchReviews(), - onValue: (reviews) { - if (reviews == null) { - return SizedBox.shrink(); - } + NyFutureBuilder>( + future: fetchReviews(), + child: (context, reviews) { int reviewsCount = reviews.length; List childrenWidgets = []; List children = reviews @@ -137,7 +133,7 @@ class _ProductDetailReviewsWidgetState : childrenWidgets, ); }, - onLoading: Padding( + loading: Padding( padding: const EdgeInsets.symmetric(vertical: 8), child: CupertinoActivityIndicator(), ), @@ -149,9 +145,9 @@ class _ProductDetailReviewsWidgetState } Future> fetchReviews() async { - return await (appWooSignal( + return await appWooSignal( (api) => api.getProductReviews( perPage: 5, product: [widget.product!.id!], status: "approved"), - )); + ); } } diff --git a/LabelStoreMax/lib/resources/widgets/product_detail_upsell_widget.dart b/LabelStoreMax/lib/resources/widgets/product_detail_upsell_widget.dart index e0f613e..2a6fd60 100644 --- a/LabelStoreMax/lib/resources/widgets/product_detail_upsell_widget.dart +++ b/LabelStoreMax/lib/resources/widgets/product_detail_upsell_widget.dart @@ -75,7 +75,7 @@ class _ProductDetailUpsellWidgetState extends State { ), ), Container( - height: 200, + height: 300, child: ListView( shrinkWrap: true, scrollDirection: Axis.horizontal, diff --git a/LabelStoreMax/lib/resources/widgets/woosignal_ui.dart b/LabelStoreMax/lib/resources/widgets/woosignal_ui.dart index d54ab46..a0f45cf 100644 --- a/LabelStoreMax/lib/resources/widgets/woosignal_ui.dart +++ b/LabelStoreMax/lib/resources/widgets/woosignal_ui.dart @@ -315,6 +315,7 @@ class ProductItemContainer extends StatelessWidget { if (product == null) { return SizedBox.shrink(); } + return LayoutBuilder( builder: (cxt, constraints) => InkWell( child: Container( @@ -324,7 +325,7 @@ class ProductItemContainer extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ Container( - height: constraints.maxHeight / 2, + height: constraints.maxHeight / 1.6, child: ClipRRect( borderRadius: BorderRadius.circular(3.0), child: Stack( @@ -338,10 +339,12 @@ class ProductItemContainer extends StatelessWidget { image: (product!.images.isNotEmpty ? product!.images.first.src : getEnv("PRODUCT_PLACEHOLDER_IMAGE")), - fit: BoxFit.contain, - height: constraints.maxHeight / 2, + fit: BoxFit.cover, + height: constraints.maxHeight / 1.6, width: double.infinity, ), + if (isProductNew(product)) + Container(padding: EdgeInsets.all(4), child: Text("New", style: TextStyle(color: Colors.white),), decoration: BoxDecoration(color: Colors.black),), if (product!.onSale! && product!.type != "variable") Positioned( bottom: 0, @@ -351,7 +354,7 @@ class ProductItemContainer extends StatelessWidget { padding: EdgeInsets.all(3), decoration: BoxDecoration( color: Colors.white70, - borderRadius: BorderRadius.circular(4), + // borderRadius: BorderRadius.circular(4), ), child: RichText( textAlign: TextAlign.center, @@ -366,8 +369,8 @@ class ProductItemContainer extends StatelessWidget { .textTheme .bodyLarge! .copyWith( - color: Colors.black87, - fontSize: 11, + color: Colors.black, + fontSize: 13, ), ), ], @@ -393,16 +396,17 @@ class ProductItemContainer extends StatelessWidget { ), Flexible( child: Container( + padding: EdgeInsets.only(top: 4), child: Column( crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.start, children: [ AutoSizeText( "${formatStringCurrency(total: product!.price)} ", style: Theme.of(context) .textTheme - .bodyMedium! - .copyWith(fontWeight: FontWeight.w600), + .bodyLarge! + .copyWith(fontWeight: FontWeight.w800), textAlign: TextAlign.left, ), if (product!.onSale! && product!.type != "variable") diff --git a/LabelStoreMax/pubspec.lock b/LabelStoreMax/pubspec.lock deleted file mode 100644 index f31236a..0000000 --- a/LabelStoreMax/pubspec.lock +++ /dev/null @@ -1,1223 +0,0 @@ -# Generated by pub -# See https://dart.dev/tools/pub/glossary#lockfile -packages: - _fe_analyzer_shared: - dependency: transitive - description: - name: _fe_analyzer_shared - sha256: "4897882604d919befd350648c7f91926a9d5de99e67b455bf0917cc2362f4bb8" - url: "https://pub.dev" - source: hosted - version: "47.0.0" - _flutterfire_internals: - dependency: transitive - description: - name: _flutterfire_internals - sha256: "64fcb0dbca4386356386c085142fa6e79c00a3326ceaa778a2d25f5d9ba61441" - url: "https://pub.dev" - source: hosted - version: "1.0.16" - analyzer: - dependency: "direct main" - description: - name: analyzer - sha256: "690e335554a8385bc9d787117d9eb52c0c03ee207a607e593de3c9d71b1cfe80" - url: "https://pub.dev" - source: hosted - version: "4.7.0" - animate_do: - dependency: transitive - description: - name: animate_do - sha256: "9aeacc1a7238f971c039bdf45d13c628be554a242e0251c4ddda09d19a1a923f" - url: "https://pub.dev" - source: hosted - version: "3.0.2" - archive: - dependency: transitive - description: - name: archive - sha256: d6347d54a2d8028e0437e3c099f66fdb8ae02c4720c1e7534c9f24c10351f85d - url: "https://pub.dev" - source: hosted - version: "3.3.6" - args: - dependency: transitive - description: - name: args - sha256: "4cab82a83ffef80b262ddedf47a0a8e56ee6fbf7fe21e6e768b02792034dd440" - url: "https://pub.dev" - source: hosted - version: "2.4.0" - async: - dependency: transitive - description: - name: async - sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 - url: "https://pub.dev" - source: hosted - version: "2.10.0" - auto_size_text: - dependency: "direct main" - description: - name: auto_size_text - sha256: "3f5261cd3fb5f2a9ab4e2fc3fba84fd9fcaac8821f20a1d4e71f557521b22599" - url: "https://pub.dev" - source: hosted - version: "3.0.0" - boolean_selector: - dependency: transitive - description: - name: boolean_selector - sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - bubble_tab_indicator: - dependency: "direct main" - description: - name: bubble_tab_indicator - sha256: "0aa37980a00e3374d917f9da8e83acd7f59ba872a3d05c306220063f28f945aa" - url: "https://pub.dev" - source: hosted - version: "0.1.6" - cached_network_image: - dependency: "direct main" - description: - name: cached_network_image - sha256: fd3d0dc1d451f9a252b32d95d3f0c3c487bc41a75eba2e6097cb0b9c71491b15 - url: "https://pub.dev" - source: hosted - version: "3.2.3" - cached_network_image_platform_interface: - dependency: transitive - description: - name: cached_network_image_platform_interface - sha256: bb2b8403b4ccdc60ef5f25c70dead1f3d32d24b9d6117cfc087f496b178594a7 - url: "https://pub.dev" - source: hosted - version: "2.0.0" - cached_network_image_web: - dependency: transitive - description: - name: cached_network_image_web - sha256: b8eb814ebfcb4dea049680f8c1ffb2df399e4d03bf7a352c775e26fa06e02fa0 - url: "https://pub.dev" - source: hosted - version: "1.0.2" - characters: - dependency: transitive - description: - name: characters - sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c - url: "https://pub.dev" - source: hosted - version: "1.2.1" - checked_yaml: - dependency: transitive - description: - name: checked_yaml - sha256: "3d1505d91afa809d177efd4eed5bb0eb65805097a1463abdd2add076effae311" - url: "https://pub.dev" - source: hosted - version: "2.0.2" - cli_util: - dependency: transitive - description: - name: cli_util - sha256: "66f86e916d285c1a93d3b79587d94bd71984a66aac4ff74e524cfa7877f1395c" - url: "https://pub.dev" - source: hosted - version: "0.3.5" - clock: - dependency: transitive - description: - name: clock - sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf - url: "https://pub.dev" - source: hosted - version: "1.1.1" - collection: - dependency: "direct main" - description: - name: collection - sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 - url: "https://pub.dev" - source: hosted - version: "1.17.0" - convert: - dependency: transitive - description: - name: convert - sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" - url: "https://pub.dev" - source: hosted - version: "3.1.1" - crypto: - dependency: transitive - description: - name: crypto - sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67 - url: "https://pub.dev" - source: hosted - version: "3.0.2" - csslib: - dependency: transitive - description: - name: csslib - sha256: b36c7f7e24c0bdf1bf9a3da461c837d1de64b9f8beb190c9011d8c72a3dfd745 - url: "https://pub.dev" - source: hosted - version: "0.17.2" - cupertino_icons: - dependency: "direct main" - description: - name: cupertino_icons - sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be - url: "https://pub.dev" - source: hosted - version: "1.0.5" - dart_style: - dependency: transitive - description: - name: dart_style - sha256: "7a03456c3490394c8e7665890333e91ae8a49be43542b616e414449ac358acd4" - url: "https://pub.dev" - source: hosted - version: "2.2.4" - device_info_plus: - dependency: transitive - description: - name: device_info_plus - sha256: "7ff671ed0a6356fa8f2e1ae7d3558d3fb7b6a41e24455e4f8df75b811fb8e4ab" - url: "https://pub.dev" - source: hosted - version: "8.0.0" - device_info_plus_platform_interface: - dependency: transitive - description: - name: device_info_plus_platform_interface - sha256: d3b01d5868b50ae571cd1dc6e502fc94d956b665756180f7b16ead09e836fd64 - url: "https://pub.dev" - source: hosted - version: "7.0.0" - dio: - dependency: transitive - description: - name: dio - sha256: "3709d74615bba5e443eb141f6a7f4bcc4788f8fae6f743edadfb79c2a8e6287e" - url: "https://pub.dev" - source: hosted - version: "5.0.1" - eventify: - dependency: transitive - description: - name: eventify - sha256: b829429f08586cc2001c628e7499e3e3c2493a1d895fd73b00ecb23351aa5a66 - url: "https://pub.dev" - source: hosted - version: "1.0.1" - fake_async: - dependency: transitive - description: - name: fake_async - sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" - url: "https://pub.dev" - source: hosted - version: "1.3.1" - ffi: - dependency: transitive - description: - name: ffi - sha256: a38574032c5f1dd06c4aee541789906c12ccaab8ba01446e800d9c5b79c4a978 - url: "https://pub.dev" - source: hosted - version: "2.0.1" - file: - dependency: transitive - description: - name: file - sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" - url: "https://pub.dev" - source: hosted - version: "6.1.4" - firebase_core: - dependency: "direct main" - description: - name: firebase_core - sha256: fe30ac230f12f8836bb97e6e09197340d3c584526825b1746ea362a82e1e43f7 - url: "https://pub.dev" - source: hosted - version: "2.7.0" - firebase_core_platform_interface: - dependency: transitive - description: - name: firebase_core_platform_interface - sha256: "5615b30c36f55b2777d0533771deda7e5730e769e5d3cb7fda79e9bed86cfa55" - url: "https://pub.dev" - source: hosted - version: "4.5.3" - firebase_core_web: - dependency: transitive - description: - name: firebase_core_web - sha256: "291fbcace608aca6c860652e1358ef89752be8cc3ef227f8bbcd1e62775b833a" - url: "https://pub.dev" - source: hosted - version: "2.2.1" - firebase_messaging: - dependency: "direct main" - description: - name: firebase_messaging - sha256: "95f7565b8e992d2188cdd8dc5612330f7c309485fe425d3f9844f18e90741e3e" - url: "https://pub.dev" - source: hosted - version: "14.2.5" - firebase_messaging_platform_interface: - dependency: transitive - description: - name: firebase_messaging_platform_interface - sha256: c5e79e15d1018cafffea1a6e45249db0d6bc42dbe35178634c77488179880e79 - url: "https://pub.dev" - source: hosted - version: "4.2.14" - firebase_messaging_web: - dependency: transitive - description: - name: firebase_messaging_web - sha256: cd0cfcab7a63282049dec95a9955e7a487b5e580162310d12a82a10c0c32c546 - url: "https://pub.dev" - source: hosted - version: "3.2.15" - flare_flutter: - dependency: transitive - description: - name: flare_flutter - sha256: "99d63c60f00fac81249ce6410ee015d7b125c63d8278a30da81edf3317a1f6a0" - url: "https://pub.dev" - source: hosted - version: "3.0.2" - flutter: - dependency: "direct main" - description: flutter - source: sdk - version: "0.0.0" - flutter_blurhash: - dependency: transitive - description: - name: flutter_blurhash - sha256: "05001537bd3fac7644fa6558b09ec8c0a3f2eba78c0765f88912882b1331a5c6" - url: "https://pub.dev" - source: hosted - version: "0.7.0" - flutter_cache_manager: - dependency: transitive - description: - name: flutter_cache_manager - sha256: "32cd900555219333326a2d0653aaaf8671264c29befa65bbd9856d204a4c9fb3" - url: "https://pub.dev" - source: hosted - version: "3.3.0" - flutter_dotenv: - dependency: transitive - description: - name: flutter_dotenv - sha256: d9283d92059a22e9834bc0a31336658ffba77089fb6f3cc36751f1fc7c6661a3 - url: "https://pub.dev" - source: hosted - version: "5.0.2" - flutter_launcher_icons: - dependency: "direct dev" - description: - name: flutter_launcher_icons - sha256: "02dcaf49d405f652b7160e882bacfc02cb497041bb2eab2a49b1c393cf9aac12" - url: "https://pub.dev" - source: hosted - version: "0.12.0" - flutter_localizations: - dependency: "direct main" - description: flutter - source: sdk - version: "0.0.0" - flutter_rating_bar: - dependency: "direct main" - description: - name: flutter_rating_bar - sha256: d2af03469eac832c591a1eba47c91ecc871fe5708e69967073c043b2d775ed93 - url: "https://pub.dev" - source: hosted - version: "4.0.1" - flutter_secure_storage: - dependency: transitive - description: - name: flutter_secure_storage - sha256: "98352186ee7ad3639ccc77ad7924b773ff6883076ab952437d20f18a61f0a7c5" - url: "https://pub.dev" - source: hosted - version: "8.0.0" - flutter_secure_storage_linux: - dependency: transitive - description: - name: flutter_secure_storage_linux - sha256: "0912ae29a572230ad52d8a4697e5518d7f0f429052fd51df7e5a7952c7efe2a3" - url: "https://pub.dev" - source: hosted - version: "1.1.3" - flutter_secure_storage_macos: - dependency: transitive - description: - name: flutter_secure_storage_macos - sha256: "083add01847fc1c80a07a08e1ed6927e9acd9618a35e330239d4422cd2a58c50" - url: "https://pub.dev" - source: hosted - version: "3.0.0" - flutter_secure_storage_platform_interface: - dependency: transitive - description: - name: flutter_secure_storage_platform_interface - sha256: b3773190e385a3c8a382007893d678ae95462b3c2279e987b55d140d3b0cb81b - url: "https://pub.dev" - source: hosted - version: "1.0.1" - flutter_secure_storage_web: - dependency: transitive - description: - name: flutter_secure_storage_web - sha256: "42938e70d4b872e856e678c423cc0e9065d7d294f45bc41fc1981a4eb4beaffe" - url: "https://pub.dev" - source: hosted - version: "1.1.1" - flutter_secure_storage_windows: - dependency: transitive - description: - name: flutter_secure_storage_windows - sha256: fc2910ec9b28d60598216c29ea763b3a96c401f0ce1d13cdf69ccb0e5c93c3ee - url: "https://pub.dev" - source: hosted - version: "2.0.0" - flutter_spinkit: - dependency: "direct main" - description: - name: flutter_spinkit - sha256: "77a2117c0517ff909221f3160b8eb20052ab5216107581168af574ac1f05dff8" - url: "https://pub.dev" - source: hosted - version: "5.1.0" - flutter_staggered_grid_view: - dependency: "direct main" - description: - name: flutter_staggered_grid_view - sha256: "1312314293acceb65b92754298754801b0e1f26a1845833b740b30415bbbcf07" - url: "https://pub.dev" - source: hosted - version: "0.6.2" - flutter_stripe: - dependency: "direct main" - description: - name: flutter_stripe - sha256: "00e612c11ea57f9b78510e5b2aa8719022698bd8a023140e9b7f52c1dfa2e27d" - url: "https://pub.dev" - source: hosted - version: "8.0.0+1" - flutter_styled_toast: - dependency: transitive - description: - name: flutter_styled_toast - sha256: cc32aed2a49ce77a1ed5844073c6c0f5e381c81fd6d694e0ba3c5dc2a645963d - url: "https://pub.dev" - source: hosted - version: "2.1.3" - flutter_swiper_view: - dependency: "direct main" - description: - name: flutter_swiper_view - sha256: "2a165b259e8a4c49d4da5626b967ed42a73dac2d075bd9e266ad8d23b9f01879" - url: "https://pub.dev" - source: hosted - version: "1.1.8" - flutter_test: - dependency: "direct dev" - description: flutter - source: sdk - version: "0.0.0" - flutter_web_browser: - dependency: "direct main" - description: - name: flutter_web_browser - sha256: a5564b736253f745e147b8c4eff86de436324d081974cc1f16bff881134a400f - url: "https://pub.dev" - source: hosted - version: "0.17.1" - flutter_web_plugins: - dependency: transitive - description: flutter - source: sdk - version: "0.0.0" - flutter_widget_from_html_core: - dependency: "direct main" - description: - name: flutter_widget_from_html_core - sha256: "2ee1f47662f5ba34fe535915b034fae0450bc0a15ae6935ca4abcc7fa987e948" - url: "https://pub.dev" - source: hosted - version: "0.10.0" - fluttertoast: - dependency: transitive - description: - name: fluttertoast - sha256: "7cc92eabe01e3f1babe1571c5560b135dfc762a34e41e9056881e2196b178ec1" - url: "https://pub.dev" - source: hosted - version: "8.1.2" - freezed_annotation: - dependency: transitive - description: - name: freezed_annotation - sha256: aeac15850ef1b38ee368d4c53ba9a847e900bb2c53a4db3f6881cbb3cb684338 - url: "https://pub.dev" - source: hosted - version: "2.2.0" - fwfh_text_style: - dependency: transitive - description: - name: fwfh_text_style - sha256: "37806ee0222f79b6e8d4c698c322c897eae6a817258156f40aeece4e588fac60" - url: "https://pub.dev" - source: hosted - version: "2.22.08+1" - glob: - dependency: transitive - description: - name: glob - sha256: "4515b5b6ddb505ebdd242a5f2cc5d22d3d6a80013789debfbda7777f47ea308c" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - google_fonts: - dependency: "direct main" - description: - name: google_fonts - sha256: "927573f2e8a8d65c17931e21918ad0ab0666b1b636537de7c4932bdb487b190f" - url: "https://pub.dev" - source: hosted - version: "4.0.3" - html: - dependency: "direct main" - description: - name: html - sha256: d9793e10dbe0e6c364f4c59bf3e01fb33a9b2a674bc7a1081693dba0614b6269 - url: "https://pub.dev" - source: hosted - version: "0.15.1" - http: - dependency: transitive - description: - name: http - sha256: "6aa2946395183537c8b880962d935877325d6a09a2867c3970c05c0fed6ac482" - url: "https://pub.dev" - source: hosted - version: "0.13.5" - http_parser: - dependency: transitive - description: - name: http_parser - sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" - url: "https://pub.dev" - source: hosted - version: "4.0.2" - image: - dependency: transitive - description: - name: image - sha256: "483a389d6ccb292b570c31b3a193779b1b0178e7eb571986d9a49904b6861227" - url: "https://pub.dev" - source: hosted - version: "4.0.15" - intl: - dependency: "direct main" - description: - name: intl - sha256: "910f85bce16fb5c6f614e117efa303e85a1731bb0081edf3604a2ae6e9a3cc91" - url: "https://pub.dev" - source: hosted - version: "0.17.0" - js: - dependency: transitive - description: - name: js - sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" - url: "https://pub.dev" - source: hosted - version: "0.6.5" - json_annotation: - dependency: transitive - description: - name: json_annotation - sha256: c33da08e136c3df0190bd5bbe51ae1df4a7d96e7954d1d7249fea2968a72d317 - url: "https://pub.dev" - source: hosted - version: "4.8.0" - json_dart_generator: - dependency: transitive - description: - name: json_dart_generator - sha256: "88c710a9278e1f8a9ad65a695350153f517d7deeca293ea45c6f997c066437a5" - url: "https://pub.dev" - source: hosted - version: "1.1.0+1" - lints: - dependency: "direct dev" - description: - name: lints - sha256: "5e4a9cd06d447758280a8ac2405101e0e2094d2a1dbdd3756aec3fe7775ba593" - url: "https://pub.dev" - source: hosted - version: "2.0.1" - logger: - dependency: transitive - description: - name: logger - sha256: "5076f09225f91dc49289a4ccb92df2eeea9ea01cf7c26d49b3a1f04c6a49eec1" - url: "https://pub.dev" - source: hosted - version: "1.1.0" - matcher: - dependency: transitive - description: - name: matcher - sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" - url: "https://pub.dev" - source: hosted - version: "0.12.13" - material_color_utilities: - dependency: transitive - description: - name: material_color_utilities - sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 - url: "https://pub.dev" - source: hosted - version: "0.2.0" - math_expressions: - dependency: "direct main" - description: - name: math_expressions - sha256: "6cec3bb1f5a78701cc25d63705ddfa807062d00bc0d85ba8b2d13daed9fe61c5" - url: "https://pub.dev" - source: hosted - version: "2.3.1" - meta: - dependency: transitive - description: - name: meta - sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" - url: "https://pub.dev" - source: hosted - version: "1.8.0" - money_formatter: - dependency: "direct main" - description: - name: money_formatter - sha256: "7cea53417f91b1a965c814d364f5021d8633f5f013659db5cdabbc95c4971eb4" - url: "https://pub.dev" - source: hosted - version: "0.0.3" - nylo_framework: - dependency: "direct main" - description: - name: nylo_framework - sha256: "9ed065fdd5570de42c5e96f6269740de7b568593c2af78584cdc38572cf52ebe" - url: "https://pub.dev" - source: hosted - version: "4.1.4" - nylo_support: - dependency: transitive - description: - name: nylo_support - sha256: e710481287d8c4db42b51e10a1a726cc6da7239fdd334e204eadda635a9766ff - url: "https://pub.dev" - source: hosted - version: "4.3.1" - octo_image: - dependency: transitive - description: - name: octo_image - sha256: "107f3ed1330006a3bea63615e81cf637433f5135a52466c7caa0e7152bca9143" - url: "https://pub.dev" - source: hosted - version: "1.0.2" - package_config: - dependency: transitive - description: - name: package_config - sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" - url: "https://pub.dev" - source: hosted - version: "2.1.0" - package_info: - dependency: "direct main" - description: - name: package_info - sha256: "6c07d9d82c69e16afeeeeb6866fe43985a20b3b50df243091bfc4a4ad2b03b75" - url: "https://pub.dev" - source: hosted - version: "2.0.2" - package_info_plus: - dependency: transitive - description: - name: package_info_plus - sha256: f62d7253edc197fe3c88d7c2ddab82d68f555e778d55390ccc3537eca8e8d637 - url: "https://pub.dev" - source: hosted - version: "1.4.3+1" - package_info_plus_linux: - dependency: transitive - description: - name: package_info_plus_linux - sha256: "04b575f44233d30edbb80a94e57cad9107aada334fc02aabb42b6becd13c43fc" - url: "https://pub.dev" - source: hosted - version: "1.0.5" - package_info_plus_macos: - dependency: transitive - description: - name: package_info_plus_macos - sha256: a2ad8b4acf4cd479d4a0afa5a74ea3f5b1c7563b77e52cc32b3ee6956d5482a6 - url: "https://pub.dev" - source: hosted - version: "1.3.0" - package_info_plus_platform_interface: - dependency: transitive - description: - name: package_info_plus_platform_interface - sha256: f7a0c8f1e7e981bc65f8b64137a53fd3c195b18d429fba960babc59a5a1c7ae8 - url: "https://pub.dev" - source: hosted - version: "1.0.2" - package_info_plus_web: - dependency: transitive - description: - name: package_info_plus_web - sha256: f0829327eb534789e0a16ccac8936a80beed4e2401c4d3a74f3f39094a822d3b - url: "https://pub.dev" - source: hosted - version: "1.0.6" - package_info_plus_windows: - dependency: transitive - description: - name: package_info_plus_windows - sha256: "79524f11c42dd9078b96d797b3cf79c0a2883a50c4920dc43da8562c115089bc" - url: "https://pub.dev" - source: hosted - version: "2.1.0" - page_transition: - dependency: transitive - description: - name: page_transition - sha256: a7694bc120b7064a7f57c336914bb8885acf4f70bb3772c30c2fcfe6a85e43ff - url: "https://pub.dev" - source: hosted - version: "2.0.9" - path: - dependency: transitive - description: - name: path - sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b - url: "https://pub.dev" - source: hosted - version: "1.8.2" - path_provider: - dependency: transitive - description: - name: path_provider - sha256: dcea5feb97d8abf90cab9e9030b497fb7c3cbf26b7a1fe9e3ef7dcb0a1ddec95 - url: "https://pub.dev" - source: hosted - version: "2.0.12" - path_provider_android: - dependency: transitive - description: - name: path_provider_android - sha256: a776c088d671b27f6e3aa8881d64b87b3e80201c64e8869b811325de7a76c15e - url: "https://pub.dev" - source: hosted - version: "2.0.22" - path_provider_foundation: - dependency: transitive - description: - name: path_provider_foundation - sha256: "62a68e7e1c6c459f9289859e2fae58290c981ce21d1697faf54910fe1faa4c74" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - path_provider_linux: - dependency: transitive - description: - name: path_provider_linux - sha256: ab0987bf95bc591da42dffb38c77398fc43309f0b9b894dcc5d6f40c4b26c379 - url: "https://pub.dev" - source: hosted - version: "2.1.7" - path_provider_platform_interface: - dependency: transitive - description: - name: path_provider_platform_interface - sha256: f0abc8ebd7253741f05488b4813d936b4d07c6bae3e86148a09e342ee4b08e76 - url: "https://pub.dev" - source: hosted - version: "2.0.5" - path_provider_windows: - dependency: transitive - description: - name: path_provider_windows - sha256: bcabbe399d4042b8ee687e17548d5d3f527255253b4a639f5f8d2094a9c2b45c - url: "https://pub.dev" - source: hosted - version: "2.1.3" - pedantic: - dependency: transitive - description: - name: pedantic - sha256: "67fc27ed9639506c856c840ccce7594d0bdcd91bc8d53d6e52359449a1d50602" - url: "https://pub.dev" - source: hosted - version: "1.11.1" - petitparser: - dependency: transitive - description: - name: petitparser - sha256: "49392a45ced973e8d94a85fdb21293fbb40ba805fc49f2965101ae748a3683b4" - url: "https://pub.dev" - source: hosted - version: "5.1.0" - platform: - dependency: transitive - description: - name: platform - sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76" - url: "https://pub.dev" - source: hosted - version: "3.1.0" - plugin_platform_interface: - dependency: transitive - description: - name: plugin_platform_interface - sha256: dbf0f707c78beedc9200146ad3cb0ab4d5da13c246336987be6940f026500d3a - url: "https://pub.dev" - source: hosted - version: "2.1.3" - pointycastle: - dependency: transitive - description: - name: pointycastle - sha256: db7306cf0249f838d1a24af52b5a5887c5bf7f31d8bb4e827d071dc0939ad346 - url: "https://pub.dev" - source: hosted - version: "3.6.2" - process: - dependency: transitive - description: - name: process - sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09" - url: "https://pub.dev" - source: hosted - version: "4.2.4" - pub_semver: - dependency: transitive - description: - name: pub_semver - sha256: "307de764d305289ff24ad257ad5c5793ce56d04947599ad68b3baa124105fc17" - url: "https://pub.dev" - source: hosted - version: "2.1.3" - pull_to_refresh_flutter3: - dependency: "direct main" - description: - name: pull_to_refresh_flutter3 - sha256: "223a6241067162dc15cf8c46c05af998ce7aa85e0703d8f696101eb1b5629d76" - url: "https://pub.dev" - source: hosted - version: "2.0.1" - razorpay_flutter: - dependency: "direct main" - description: - name: razorpay_flutter - sha256: "959dbedc3af25fd41b43944bc5db00d4be1ea1967fed5d69fba3fc6700b1f103" - url: "https://pub.dev" - source: hosted - version: "1.3.4" - recase: - dependency: transitive - description: - name: recase - sha256: e4eb4ec2dcdee52dcf99cb4ceabaffc631d7424ee55e56f280bc039737f89213 - url: "https://pub.dev" - source: hosted - version: "4.1.0" - rxdart: - dependency: transitive - description: - name: rxdart - sha256: "0c7c0cedd93788d996e33041ffecda924cc54389199cde4e6a34b440f50044cb" - url: "https://pub.dev" - source: hosted - version: "0.27.7" - shared_preferences: - dependency: transitive - description: - name: shared_preferences - sha256: ee6257848f822b8481691f20c3e6d2bfee2e9eccb2a3d249907fcfb198c55b41 - url: "https://pub.dev" - source: hosted - version: "2.0.18" - shared_preferences_android: - dependency: transitive - description: - name: shared_preferences_android - sha256: "955e9736a12ba776bdd261cf030232b30eadfcd9c79b32a3250dd4a494e8c8f7" - url: "https://pub.dev" - source: hosted - version: "2.0.15" - shared_preferences_foundation: - dependency: transitive - description: - name: shared_preferences_foundation - sha256: "2b55c18636a4edc529fa5cd44c03d3f3100c00513f518c5127c951978efcccd0" - url: "https://pub.dev" - source: hosted - version: "2.1.3" - shared_preferences_linux: - dependency: transitive - description: - name: shared_preferences_linux - sha256: f8ea038aa6da37090093974ebdcf4397010605fd2ff65c37a66f9d28394cb874 - url: "https://pub.dev" - source: hosted - version: "2.1.3" - shared_preferences_platform_interface: - dependency: transitive - description: - name: shared_preferences_platform_interface - sha256: da9431745ede5ece47bc26d5d73a9d3c6936ef6945c101a5aca46f62e52c1cf3 - url: "https://pub.dev" - source: hosted - version: "2.1.0" - shared_preferences_web: - dependency: transitive - description: - name: shared_preferences_web - sha256: a4b5bc37fe1b368bbc81f953197d55e12f49d0296e7e412dfe2d2d77d6929958 - url: "https://pub.dev" - source: hosted - version: "2.0.4" - shared_preferences_windows: - dependency: transitive - description: - name: shared_preferences_windows - sha256: "5eaf05ae77658d3521d0e993ede1af962d4b326cd2153d312df716dc250f00c9" - url: "https://pub.dev" - source: hosted - version: "2.1.3" - sky_engine: - dependency: transitive - description: flutter - source: sdk - version: "0.0.99" - source_span: - dependency: transitive - description: - name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 - url: "https://pub.dev" - source: hosted - version: "1.9.1" - sqflite: - dependency: transitive - description: - name: sqflite - sha256: "78324387dc81df14f78df06019175a86a2ee0437624166c382e145d0a7fd9a4f" - url: "https://pub.dev" - source: hosted - version: "2.2.4+1" - sqflite_common: - dependency: transitive - description: - name: sqflite_common - sha256: bfd6973aaeeb93475bc0d875ac9aefddf7965ef22ce09790eb963992ffc5183f - url: "https://pub.dev" - source: hosted - version: "2.4.2+2" - stack_trace: - dependency: transitive - description: - name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 - url: "https://pub.dev" - source: hosted - version: "1.11.0" - status_alert: - dependency: "direct main" - description: - name: status_alert - sha256: "220ce6c1400d19d817665ac5a87f772e87c901677ac37b93320f4764edf4d23f" - url: "https://pub.dev" - source: hosted - version: "1.0.1" - stream_channel: - dependency: transitive - description: - name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - string_scanner: - dependency: transitive - description: - name: string_scanner - sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" - url: "https://pub.dev" - source: hosted - version: "1.2.0" - stripe_android: - dependency: transitive - description: - name: stripe_android - sha256: "3cf43dfb70d8011ded0730c091e741b94cd4aaccaad22732a19f5941503072d6" - url: "https://pub.dev" - source: hosted - version: "8.0.0+1" - stripe_ios: - dependency: transitive - description: - name: stripe_ios - sha256: b3da653013be8aada352b158439024963a0d5dc0648524127d3ef4fd6b0a0cc7 - url: "https://pub.dev" - source: hosted - version: "8.0.0" - stripe_platform_interface: - dependency: transitive - description: - name: stripe_platform_interface - sha256: "28c409b0c0e98115c4ab38a9a34a883010811036e6d9fa8d495f67c3ba01c034" - url: "https://pub.dev" - source: hosted - version: "8.0.0" - synchronized: - dependency: transitive - description: - name: synchronized - sha256: "33b31b6beb98100bf9add464a36a8dd03eb10c7a8cf15aeec535e9b054aaf04b" - url: "https://pub.dev" - source: hosted - version: "3.0.1" - term_glyph: - dependency: transitive - description: - name: term_glyph - sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 - url: "https://pub.dev" - source: hosted - version: "1.2.1" - test_api: - dependency: transitive - description: - name: test_api - sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 - url: "https://pub.dev" - source: hosted - version: "0.4.16" - theme_provider: - dependency: transitive - description: - name: theme_provider - sha256: "0f1d7235bf1b0b09a6b4c0dbefddab0309323c04d4ae8cd2f0e9178be85f8ae4" - url: "https://pub.dev" - source: hosted - version: "0.5.0" - typed_data: - dependency: transitive - description: - name: typed_data - sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5" - url: "https://pub.dev" - source: hosted - version: "1.3.1" - url_launcher: - dependency: "direct main" - description: - name: url_launcher - sha256: e8f2efc804810c0f2f5b485f49e7942179f56eabcfe81dce3387fec4bb55876b - url: "https://pub.dev" - source: hosted - version: "6.1.9" - url_launcher_android: - dependency: transitive - description: - name: url_launcher_android - sha256: "3e2f6dfd2c7d9cd123296cab8ef66cfc2c1a13f5845f42c7a0f365690a8a7dd1" - url: "https://pub.dev" - source: hosted - version: "6.0.23" - url_launcher_ios: - dependency: transitive - description: - name: url_launcher_ios - sha256: "0a5af0aefdd8cf820dd739886efb1637f1f24489900204f50984634c07a54815" - url: "https://pub.dev" - source: hosted - version: "6.1.0" - url_launcher_linux: - dependency: transitive - description: - name: url_launcher_linux - sha256: "318c42cba924e18180c029be69caf0a1a710191b9ec49bb42b5998fdcccee3cc" - url: "https://pub.dev" - source: hosted - version: "3.0.2" - url_launcher_macos: - dependency: transitive - description: - name: url_launcher_macos - sha256: "41988b55570df53b3dd2a7fc90c76756a963de6a8c5f8e113330cb35992e2094" - url: "https://pub.dev" - source: hosted - version: "3.0.2" - url_launcher_platform_interface: - dependency: transitive - description: - name: url_launcher_platform_interface - sha256: "4eae912628763eb48fc214522e58e942fd16ce195407dbf45638239523c759a6" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - url_launcher_web: - dependency: transitive - description: - name: url_launcher_web - sha256: "44d79408ce9f07052095ef1f9a693c258d6373dc3944249374e30eff7219ccb0" - url: "https://pub.dev" - source: hosted - version: "2.0.14" - url_launcher_windows: - dependency: transitive - description: - name: url_launcher_windows - sha256: b6217370f8eb1fd85c8890c539f5a639a01ab209a36db82c921ebeacefc7a615 - url: "https://pub.dev" - source: hosted - version: "3.0.3" - uuid: - dependency: transitive - description: - name: uuid - sha256: "648e103079f7c64a36dc7d39369cabb358d377078a051d6ae2ad3aa539519313" - url: "https://pub.dev" - source: hosted - version: "3.0.7" - validated: - dependency: "direct main" - description: - name: validated - sha256: f4da18b50fa2aeda8d2f6e55bdf73759593abe3f9dd4aeece4e98bf3438e6a9f - url: "https://pub.dev" - source: hosted - version: "2.0.0" - vector_math: - dependency: transitive - description: - name: vector_math - sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" - url: "https://pub.dev" - source: hosted - version: "2.1.4" - watcher: - dependency: transitive - description: - name: watcher - sha256: "6a7f46926b01ce81bfc339da6a7f20afbe7733eff9846f6d6a5466aa4c6667c0" - url: "https://pub.dev" - source: hosted - version: "1.0.2" - webview_flutter: - dependency: "direct main" - description: - name: webview_flutter - sha256: "392c1d83b70fe2495de3ea2c84531268d5b8de2de3f01086a53334d8b6030a88" - url: "https://pub.dev" - source: hosted - version: "3.0.4" - webview_flutter_android: - dependency: transitive - description: - name: webview_flutter_android - sha256: "8b3b2450e98876c70bfcead876d9390573b34b9418c19e28168b74f6cb252dbd" - url: "https://pub.dev" - source: hosted - version: "2.10.4" - webview_flutter_platform_interface: - dependency: transitive - description: - name: webview_flutter_platform_interface - sha256: "812165e4e34ca677bdfbfa58c01e33b27fd03ab5fa75b70832d4b7d4ca1fa8cf" - url: "https://pub.dev" - source: hosted - version: "1.9.5" - webview_flutter_wkwebview: - dependency: transitive - description: - name: webview_flutter_wkwebview - sha256: a5364369c758892aa487cbf59ea41d9edd10f9d9baf06a94e80f1bd1b4c7bbc0 - url: "https://pub.dev" - source: hosted - version: "2.9.5" - win32: - dependency: transitive - description: - name: win32 - sha256: c9ebe7ee4ab0c2194e65d3a07d8c54c5d00bb001b76081c4a04cdb8448b59e46 - url: "https://pub.dev" - source: hosted - version: "3.1.3" - woosignal: - dependency: "direct main" - description: - name: woosignal - sha256: "888629274da9083aca94102b45e963c92f820c8d6b8154eebf0424adfc4089c6" - url: "https://pub.dev" - source: hosted - version: "3.3.0" - wp_json_api: - dependency: "direct main" - description: - name: wp_json_api - sha256: ed8f33b8f8c87ca75ad4d936854b53cfacc0779f38de40400c9693753679647f - url: "https://pub.dev" - source: hosted - version: "3.3.2" - xdg_directories: - dependency: transitive - description: - name: xdg_directories - sha256: bd512f03919aac5f1313eb8249f223bacf4927031bf60b02601f81f687689e86 - url: "https://pub.dev" - source: hosted - version: "0.2.0+3" - xml: - dependency: transitive - description: - name: xml - sha256: "979ee37d622dec6365e2efa4d906c37470995871fe9ae080d967e192d88286b5" - url: "https://pub.dev" - source: hosted - version: "6.2.2" - yaml: - dependency: transitive - description: - name: yaml - sha256: "23812a9b125b48d4007117254bca50abb6c712352927eece9e155207b1db2370" - url: "https://pub.dev" - source: hosted - version: "3.1.1" -sdks: - dart: ">=2.19.0 <3.0.0" - flutter: ">=3.7.0-0" diff --git a/LabelStoreMax/pubspec.yaml b/LabelStoreMax/pubspec.yaml index 9bf879d..90642b3 100644 --- a/LabelStoreMax/pubspec.yaml +++ b/LabelStoreMax/pubspec.yaml @@ -1,7 +1,7 @@ # Official WooSignal App Template for WooCommerce # Label StoreMax -# Version: 6.5.1 +# Version: 6.6.0 # Author: Anthony Gordon # Homepage: https://woosignal.com # Documentation: https://woosignal.com/docs/app/label-storemax @@ -22,27 +22,29 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: '>=2.19.0 <3.0.0' + sdk: ">=2.17.0 <3.0.0" + flutter: ">=3.0.0" dependencies: google_fonts: ^4.0.3 - analyzer: ^4.2.0 - intl: ^0.17.0 - nylo_framework: ^4.1.4 - woosignal: ^3.3.0 - flutter_stripe: ^8.0.0+1 + analyzer: ^5.12.0 + intl: ^0.18.0 + nylo_framework: ^5.0.0 +# woosignal: ^3.3.0 + woosignal: + path: /Users/anthony/StudioProjects/woosignal-api +# flutter_stripe: ^9.2.0 wp_json_api: ^3.3.2 cached_network_image: ^3.2.3 - package_info: ^2.0.2 + package_info_plus: ^4.0.0 money_formatter: ^0.0.3 flutter_web_browser: ^0.17.1 webview_flutter: ^3.0.4 pull_to_refresh_flutter3: 2.0.1 url_launcher: ^6.1.6 bubble_tab_indicator: ^0.1.5 - razorpay_flutter: ^1.3.4 status_alert: ^1.0.1 - math_expressions: ^2.3.1 + math_expressions: ^2.4.0 validated: ^2.0.0 flutter_spinkit: ^5.1.0 auto_size_text: ^3.0.0 @@ -51,8 +53,8 @@ dependencies: flutter_rating_bar: ^4.0.1 flutter_staggered_grid_view: ^0.6.2 flutter_swiper_view: ^1.1.8 - firebase_messaging: ^14.2.5 - firebase_core: ^2.7.0 + firebase_messaging: ^14.4.1 + firebase_core: ^2.10.0 flutter: sdk: flutter flutter_localizations: @@ -62,15 +64,16 @@ dependencies: # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.5 collection: ^1.15.0 + flutter_stripe: ^9.1.1 dev_dependencies: - flutter_launcher_icons: ^0.12.0 + flutter_launcher_icons: ^0.13.1 lints: ^2.0.0 flutter_test: sdk: flutter # APP ICON -flutter_icons: +flutter_launcher_icons: android: true ios: true image_path: "public/assets/app_icon/appicon.png" diff --git a/README.md b/README.md index e9cde53..3bfd23c 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ # WooCommerce App: Label StoreMax -### Label StoreMax - v6.5.1 +### Label StoreMax - v6.6.0 [Official WooSignal WooCommerce App](https://woosignal.com) @@ -45,7 +45,7 @@ Full documentation this available [here](https://woosignal.com/docs/app/ios/labe - Change app name, logo, customize default language, currency + more - Light and dark mode - Theme customization -- Stripe, Cash On Delivery, PayPal and RazorPay +- Stripe, Cash On Delivery, PayPal - Localized for en, es, pt, it, hi, fr, zh, tr, nl - Orders show as normal in WooCommerce