From 7d3e2c56037c1eeee79930fb2f75ba8d5bf245ac Mon Sep 17 00:00:00 2001 From: komekh Date: Wed, 25 Oct 2023 15:19:17 +0500 Subject: [PATCH] firebase setup --- android/app/google-services.json | 24 +- android/build.gradle | 4 +- ios/firebase_app_id_file.json | 6 +- lib/app/core/lang/ru_ru.dart | 3 +- lib/app/core/lang/tm_tm.dart | 1 + lib/app/core/utils/device_info.dart | 2 +- lib/app/core/utils/download_file.dart | 2 +- lib/app/core/utils/http_util.dart | 121 +++--- lib/app/core/utils/notification_service.dart | 48 ++- lib/app/data/apis/product.dart | 19 +- lib/app/global_widgets/app_bar.dart | 15 +- .../global_widgets/cached_network_image.dart | 1 + .../horizontal_scrollable_products.dart | 118 +++--- lib/app/pages/cart/cart_order_screen.dart | 1 + lib/app/pages/cart/screen.dart | 1 + .../cart/widgets/coupon_code_form_field.dart | 1 + .../pages/cart/widgets/payment_web_view.dart | 84 +++-- lib/app/pages/home/screen.dart | 13 + lib/app/pages/product/screen.dart | 1 + .../product/widgets/product_about_widget.dart | 29 +- .../filter/widgets/b_s_choose_sort.dart | 1 + .../profile/sub_pages/personal_info.dart | 1 + .../widgets/wishlist_list_widget.dart | 1 + lib/firebase_options.dart | 21 +- pubspec.lock | 352 ++++++------------ pubspec.yaml | 30 +- 26 files changed, 427 insertions(+), 473 deletions(-) diff --git a/android/app/google-services.json b/android/app/google-services.json index 27fb2bf..c200bac 100644 --- a/android/app/google-services.json +++ b/android/app/google-services.json @@ -1,36 +1,26 @@ { "project_info": { - "project_number": "186538881179", - "project_id": "elektronika-app", - "storage_bucket": "elektronika-app.appspot.com" + "project_number": "283547367653", + "project_id": "elektronikatm", + "storage_bucket": "elektronikatm.appspot.com" }, "client": [ { "client_info": { - "mobilesdk_app_id": "1:186538881179:android:96a2f9ce98f8bbf00f563e", + "mobilesdk_app_id": "1:283547367653:android:c08fb01d915c3874487c0c", "android_client_info": { "package_name": "com.elektronika.tm" } }, - "oauth_client": [ - { - "client_id": "186538881179-j5f608hapm9p4cmdo01fe6r8atca6ep8.apps.googleusercontent.com", - "client_type": 3 - } - ], + "oauth_client": [], "api_key": [ { - "current_key": "AIzaSyD9JBvYuGMFymroLwL9rYxkqB6u7EIaee0" + "current_key": "AIzaSyAOMSH8EgasYe-vJkF7NNMFs42N27P2Ax4" } ], "services": { "appinvite_service": { - "other_platform_oauth_client": [ - { - "client_id": "186538881179-j5f608hapm9p4cmdo01fe6r8atca6ep8.apps.googleusercontent.com", - "client_type": 3 - } - ] + "other_platform_oauth_client": [] } } } diff --git a/android/build.gradle b/android/build.gradle index 4f69aab..e195fdf 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,5 +1,5 @@ buildscript { - ext.kotlin_version = '1.6.10' + ext.kotlin_version = '1.8.0' repositories { google() mavenCentral() @@ -27,6 +27,6 @@ subprojects { project.evaluationDependsOn(':app') } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/ios/firebase_app_id_file.json b/ios/firebase_app_id_file.json index 3bbfbfb..0905a6e 100644 --- a/ios/firebase_app_id_file.json +++ b/ios/firebase_app_id_file.json @@ -1,7 +1,7 @@ { "file_generated_by": "FlutterFire CLI", "purpose": "FirebaseAppID & ProjectID for this Firebase app in this directory", - "GOOGLE_APP_ID": "1:186538881179:ios:fb651acd4ce97d5d0f563e", - "FIREBASE_PROJECT_ID": "elektronika-app", - "GCM_SENDER_ID": "186538881179" + "GOOGLE_APP_ID": "1:283547367653:ios:a0be3b851b594489487c0c", + "FIREBASE_PROJECT_ID": "elektronikatm", + "GCM_SENDER_ID": "283547367653" } \ No newline at end of file diff --git a/lib/app/core/lang/ru_ru.dart b/lib/app/core/lang/ru_ru.dart index 5759813..c66ef2b 100644 --- a/lib/app/core/lang/ru_ru.dart +++ b/lib/app/core/lang/ru_ru.dart @@ -126,6 +126,7 @@ const Map ruRu = { 'payment_unsuccess': 'Платеж не прошел, повторите попытку позже!', 'approve_lang': 'Продолжить', 'select_language': 'Выберите язык', - 'profile':'Профиль', + 'profile': 'Профиль', 'discounted_price': 'Товары со скидкой', + 'weekly_offers': 'Товар недели', }; diff --git a/lib/app/core/lang/tm_tm.dart b/lib/app/core/lang/tm_tm.dart index 196a2e5..67507c8 100644 --- a/lib/app/core/lang/tm_tm.dart +++ b/lib/app/core/lang/tm_tm.dart @@ -128,4 +128,5 @@ const Map tmTM = { 'select_language': 'Dili saýlaň', 'profile': 'Profil', 'discounted_price': 'Arzanladyşdaky harytlar', + 'weekly_offers': 'Hepdäniň pursatlary', }; diff --git a/lib/app/core/utils/device_info.dart b/lib/app/core/utils/device_info.dart index b4c77fe..8cda74f 100644 --- a/lib/app/core/utils/device_info.dart +++ b/lib/app/core/utils/device_info.dart @@ -29,7 +29,7 @@ Map _readAndroidBuildData(AndroidDeviceInfo build) { 'tags': build.tags, 'type': build.type, 'isPhysicalDevice': build.isPhysicalDevice, - 'androidId': build.androidId, + 'androidId': build.id, 'systemFeatures': build.systemFeatures, }; } diff --git a/lib/app/core/utils/download_file.dart b/lib/app/core/utils/download_file.dart index 490abf7..2b28e89 100644 --- a/lib/app/core/utils/download_file.dart +++ b/lib/app/core/utils/download_file.dart @@ -12,7 +12,7 @@ Future downloadFile(String url, String filename) async { options: Options( responseType: ResponseType.bytes, followRedirects: false, - receiveTimeout: 5000000, + receiveTimeout: Duration(seconds: 5), )); final file = File(filePath); diff --git a/lib/app/core/utils/http_util.dart b/lib/app/core/utils/http_util.dart index cd807c3..d563742 100644 --- a/lib/app/core/utils/http_util.dart +++ b/lib/app/core/utils/http_util.dart @@ -16,8 +16,8 @@ class HttpUtil { HttpUtil._internal() { BaseOptions options = new BaseOptions( baseUrl: Constants.BASE_URL, - connectTimeout: 100000, - receiveTimeout: 50000, + connectTimeout: Duration(seconds: 4), + receiveTimeout: Duration(seconds: 5), headers: {}, contentType: 'application/json; charset=utf-8', ); @@ -35,9 +35,9 @@ class HttpUtil { return handler.next(response); }, onError: (DioError e, handler) { - ErrorEntity eInfo = createErrorEntity(e); + // ErrorEntity eInfo = createErrorEntity(e); - switch (eInfo.code) { + switch (e.response!.statusCode) { case 401: // No permission to log in again setLoginStatus(false); break; @@ -48,60 +48,60 @@ class HttpUtil { )); } - ErrorEntity createErrorEntity(DioError error) { - switch (error.type) { - case DioErrorType.cancel: - return ErrorEntity(code: -1, message: 'Request cancellation'); - case DioErrorType.connectTimeout: - return ErrorEntity(code: -1, message: 'Connection timed out'); - case DioErrorType.sendTimeout: - return ErrorEntity(code: -1, message: 'Request timed out'); - case DioErrorType.receiveTimeout: - return ErrorEntity(code: -1, message: 'Response timeout'); - case DioErrorType.response: - { - try { - int? errCode = error.response?.statusCode; - switch (errCode) { - case 400: - return ErrorEntity(code: errCode, message: 'Request syntax error'); - case 401: - return ErrorEntity(code: errCode, message: 'Username or password incorrect'); - case 403: - return ErrorEntity(code: errCode, message: 'Server refused to execute'); - case 404: - return ErrorEntity(code: errCode, message: 'Can not reach server'); - case 405: - return ErrorEntity(code: errCode, message: 'Request method is forbidden'); - case 405: - return ErrorEntity(code: errCode, message: 'User already registered'); - case 500: - return ErrorEntity(code: errCode, message: 'Server internal error'); - case 502: - return ErrorEntity(code: errCode, message: 'Invalid request'); - case 503: - return ErrorEntity(code: errCode, message: 'Server hung up'); - case 505: - return ErrorEntity(code: errCode, message: 'Does not support HTTP protocol request'); - default: - { - // return ErrorEntity(code: errCode, message: 'Unknown error'); - return ErrorEntity( - code: errCode, - message: error.response?.statusMessage, - ); - } - } - } on Exception catch (_) { - return ErrorEntity(code: -1, message: 'Unknown error'); - } - } - default: - { - return ErrorEntity(code: -1, message: error.message); - } - } - } + // ErrorEntity createErrorEntity(DioError error) { + // switch (error.type) { + // case DioErrorType.cancel: + // return ErrorEntity(code: -1, message: 'Request cancellation'); + // case DioErrorType.connectTimeout: + // return ErrorEntity(code: -1, message: 'Connection timed out'); + // case DioErrorType.sendTimeout: + // return ErrorEntity(code: -1, message: 'Request timed out'); + // case DioErrorType.receiveTimeout: + // return ErrorEntity(code: -1, message: 'Response timeout'); + // case DioErrorType.response: + // { + // try { + // int? errCode = error.response?.statusCode; + // switch (errCode) { + // case 400: + // return ErrorEntity(code: errCode, message: 'Request syntax error'); + // case 401: + // return ErrorEntity(code: errCode, message: 'Username or password incorrect'); + // case 403: + // return ErrorEntity(code: errCode, message: 'Server refused to execute'); + // case 404: + // return ErrorEntity(code: errCode, message: 'Can not reach server'); + // case 405: + // return ErrorEntity(code: errCode, message: 'Request method is forbidden'); + // case 405: + // return ErrorEntity(code: errCode, message: 'User already registered'); + // case 500: + // return ErrorEntity(code: errCode, message: 'Server internal error'); + // case 502: + // return ErrorEntity(code: errCode, message: 'Invalid request'); + // case 503: + // return ErrorEntity(code: errCode, message: 'Server hung up'); + // case 505: + // return ErrorEntity(code: errCode, message: 'Does not support HTTP protocol request'); + // default: + // { + // // return ErrorEntity(code: errCode, message: 'Unknown error'); + // return ErrorEntity( + // code: errCode, + // message: error.response?.statusMessage, + // ); + // } + // } + // } on Exception catch (_) { + // return ErrorEntity(code: -1, message: 'Unknown error'); + // } + // } + // default: + // { + // return ErrorEntity(code: -1, message: error.message); + // } + // } + // } void cancelRequests(CancelToken token) { token.cancel('cancelled'); @@ -150,7 +150,8 @@ class HttpUtil { Map? authorization = await getAuthorizationHeader(); requestOptions.headers!.addAll(authorization); - var response = await dio.get(path, queryParameters: queryParameters, options: requestOptions, cancelToken: cancelToken); + var response = + await dio.get(path, queryParameters: queryParameters, options: requestOptions, cancelToken: cancelToken); return response.data; } @@ -243,7 +244,7 @@ class HttpUtil { } /// restful post form -Future postForm( + Future postForm( String path, { required Map data, Map? queryParameters, diff --git a/lib/app/core/utils/notification_service.dart b/lib/app/core/utils/notification_service.dart index 8c2faa4..79ab71b 100644 --- a/lib/app/core/utils/notification_service.dart +++ b/lib/app/core/utils/notification_service.dart @@ -4,6 +4,7 @@ import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; +import 'package:get/get.dart'; import '../../../firebase_options.dart'; import '../../app.dart'; @@ -202,21 +203,40 @@ class FCMFunctions { } Future _performClickAction(RemoteMessage message) async { - // if (message.data['type'] == 'product') { - // final int productId = int.parse(message.data['id']); - // final ProductModel? model = await ProductApi.getProductById(productId); - // if (model != null) Get.to(() => ProductDetailsPage(model: model)); - // } else if (message.data['type'] == 'filter') { - // message.data.remove('type'); - // navigateToProductListScreen(message.data, false); - // } else { - // open dialog - // if (message.notification == null) return; + if (message.data['type'] == 'product') { + final int productId = int.parse(message.data['id']); + final ProductModel? model = await ProductApi.getProductById(productId); + if (model != null) Get.to(() => ProductDetailsPage(model: model)); + } else if (message.data['type'] == 'category_id') { + final args = { + 'type': 'category_id', + 'id': message.data['id'], + 'name':message.data['name'] + }; + navigateToProductListScreen(args); + } else { + // open dialog + // if (message.notification == null) return; + // Get.to( + // () => NotificationPage(title: message.notification!.title ?? '', data: message.notification!.body ?? ''), + // ); + } - // Get.to( - // () => NotificationPage(title: message.notification!.title ?? '', data: message.notification!.body ?? ''), - // ); - // } + /** + * @params send via firebase + * + * @params for product + * { + * "type": "product", + * "id":1922 + * } + * @params for category + * { + * "type": "category_id", + * "id":2 + * "name": "Category Name", + * } + **/ } String? _getImageUrl(RemoteNotification notification) { diff --git a/lib/app/data/apis/product.dart b/lib/app/data/apis/product.dart index 156460b..742fca6 100644 --- a/lib/app/data/apis/product.dart +++ b/lib/app/data/apis/product.dart @@ -39,6 +39,22 @@ class ProductApi { } } + static Future getProductById(int id) async { + final String fnName = 'getProductById'; + + try { + debugPrint('class: $className, method: $fnName, params: $id'); + + String path = Constants.BASE_URL + 'products/$id'; + + final response = await HttpUtil().get(path: path); + + return ProductModel.fromJson(response['data']); + } catch (e) { + return null; + } + } + static Future?> getProductVariants(int productId) async { final String fnName = 'getProductVariants'; @@ -62,7 +78,8 @@ class ProductApi { } } - static Future?> getProductAdditionalInfo(int productId, Map params) async { + static Future?> getProductAdditionalInfo( + int productId, Map params) async { final String fnName = 'getProductAdditionalInfo'; final List list = []; diff --git a/lib/app/global_widgets/app_bar.dart b/lib/app/global_widgets/app_bar.dart index 325fbfd..ef74374 100644 --- a/lib/app/global_widgets/app_bar.dart +++ b/lib/app/global_widgets/app_bar.dart @@ -56,9 +56,18 @@ class CustomAppbarWidget extends StatelessWidget implements PreferredSizeWidget controller.state.cartModel.value != null /* && controller.state.cartModel.value?.itemsQty != 0 */ ? badge.Badge( position: badge.BadgePosition.topEnd(top: -14), - animationType: badge.BadgeAnimationType.scale, - animationDuration: Duration(milliseconds: 300), - badgeColor: ThemeColor.mainColor.withOpacity(0.70), + // animationType: badge.BadgeAnimationType.scale, + // animationDuration: Duration(milliseconds: 300), + // badgeColor: ThemeColor.mainColor.withOpacity(0.70), + badgeAnimation: badge.BadgeAnimation.rotation( + animationDuration: Duration(milliseconds: 300), + colorChangeAnimationDuration: Duration(seconds: 1), + curve: Curves.fastOutSlowIn, + colorChangeAnimationCurve: Curves.easeInCubic, + ), + badgeStyle: badge.BadgeStyle( + badgeColor: ThemeColor.mainColor.withOpacity(0.70), + ), badgeContent: Text( controller.state.cartModel.value?.itemsQty.toString() ?? '', style: new TextStyle( diff --git a/lib/app/global_widgets/cached_network_image.dart b/lib/app/global_widgets/cached_network_image.dart index 216e1c7..eac52e3 100644 --- a/lib/app/global_widgets/cached_network_image.dart +++ b/lib/app/global_widgets/cached_network_image.dart @@ -15,6 +15,7 @@ Widget cachedImageNetwork( child: url.contains('https://') ? CachedNetworkImage( imageUrl: url, + fit: boxFit, imageBuilder: (context, imageProvider) => Container( width: width, height: height, diff --git a/lib/app/global_widgets/horizontal_scrollable_products/horizontal_scrollable_products.dart b/lib/app/global_widgets/horizontal_scrollable_products/horizontal_scrollable_products.dart index 14183ae..81d10b2 100644 --- a/lib/app/global_widgets/horizontal_scrollable_products/horizontal_scrollable_products.dart +++ b/lib/app/global_widgets/horizontal_scrollable_products/horizontal_scrollable_products.dart @@ -17,6 +17,7 @@ class HorizontalScrollableProducts extends StatefulWidget { class _HorizontalScrollableProductsState extends State { late PagewiseLoadController pagewiseLoadController; + bool hasData = true; Future initPageWiseController() async { pagewiseLoadController = PagewiseLoadController( @@ -35,7 +36,13 @@ class _HorizontalScrollableProductsState extends State( - scrollDirection: Axis.horizontal, - shrinkWrap: true, - showRetry: false, - // pageSize: Constants.PAGE_SIZE, - itemBuilder: (_, model, i) => ItemBuilder(model: model), - pageLoadController: pagewiseLoadController, - // pageFuture: (pageIndex) => pc.fetchProducts(pageIndex!), - loadingBuilder: (context) { - return Container( - // To remove left padding 16 - padding: EdgeInsets.only(right: 16.w), - width: 1.sw, - height: 0.15.sh, - child: Center(child: CustomLoader()), - ); - }, - errorBuilder: (_, error) => InkWell( - onTap: () async { - await _fetchProducts(1); - pagewiseLoadController.reset(); - }, + return hasData + ? Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + widget.param['title'], + style: AppTheme.homepageTitleTxtStyle, + ), + SizedBox(height: 20.h), + ConstrainedBox( + constraints: BoxConstraints(maxHeight: 280.h, minHeight: 250.h), child: Container( - padding: EdgeInsets.only(right: 16.w), - width: 1.sw, - height: 0.10.sh, - child: Center( - child: Material( - elevation: 2, - color: Colors.white, - shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(50)), + color: Colors.white, + child: PagewiseListView( + scrollDirection: Axis.horizontal, + shrinkWrap: true, + showRetry: false, + // pageSize: Constants.PAGE_SIZE, + itemBuilder: (_, model, i) => ItemBuilder(model: model), + pageLoadController: pagewiseLoadController, + // pageFuture: (pageIndex) => pc.fetchProducts(pageIndex!), + + loadingBuilder: (context) { + return Container( + // To remove left padding 16 + padding: EdgeInsets.only(right: 16.w), + width: 1.sw, + height: 0.15.sh, + child: Center(child: CustomLoader()), + ); + }, + errorBuilder: (_, error) => InkWell( + onTap: () async { + await _fetchProducts(1); + pagewiseLoadController.reset(); + }, child: Container( - padding: const EdgeInsets.all(8), - child: Icon( - Icons.refresh_sharp, - size: 28.sp, - color: ThemeColor.mainColor, + padding: EdgeInsets.only(right: 16.w), + width: 1.sw, + height: 0.10.sh, + child: Center( + child: Material( + elevation: 2, + color: Colors.white, + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(50)), + child: Container( + padding: const EdgeInsets.all(8), + child: Icon( + Icons.refresh_sharp, + size: 28.sp, + color: ThemeColor.mainColor, + ), + ), + ), ), ), ), ), ), ), - ), - ), - ), - ], - ); + ], + ) + : SizedBox.shrink(); } } diff --git a/lib/app/pages/cart/cart_order_screen.dart b/lib/app/pages/cart/cart_order_screen.dart index f86d5e0..1a8f6b5 100644 --- a/lib/app/pages/cart/cart_order_screen.dart +++ b/lib/app/pages/cart/cart_order_screen.dart @@ -15,6 +15,7 @@ class CartOrderPage extends StatelessWidget { color: Colors.white, child: LoaderOverlay( useDefaultLoading: false, + overlayColor: Colors.transparent, overlayWidget: CustomLoader(), child: Scaffold( backgroundColor: Colors.white, //ThemeColor.scaffoldBckColor, diff --git a/lib/app/pages/cart/screen.dart b/lib/app/pages/cart/screen.dart index cbd3b60..d1d9360 100644 --- a/lib/app/pages/cart/screen.dart +++ b/lib/app/pages/cart/screen.dart @@ -26,6 +26,7 @@ class CartPage extends StatelessWidget { : model != null ? LoaderOverlay( useDefaultLoading: false, + overlayColor: Colors.transparent, overlayWidget: CustomLoader(), child: Container( color: Colors.white, diff --git a/lib/app/pages/cart/widgets/coupon_code_form_field.dart b/lib/app/pages/cart/widgets/coupon_code_form_field.dart index ded5520..8d40974 100644 --- a/lib/app/pages/cart/widgets/coupon_code_form_field.dart +++ b/lib/app/pages/cart/widgets/coupon_code_form_field.dart @@ -12,6 +12,7 @@ class CouponCodeTextFormField extends StatelessWidget { init: CartController(), builder: (cc) => LoaderOverlay( useDefaultLoading: false, + overlayColor: Colors.transparent, overlayWidget: CustomLoader(), child: Container( padding: const EdgeInsets.only(left: 18), diff --git a/lib/app/pages/cart/widgets/payment_web_view.dart b/lib/app/pages/cart/widgets/payment_web_view.dart index 01f00f0..91b35d6 100644 --- a/lib/app/pages/cart/widgets/payment_web_view.dart +++ b/lib/app/pages/cart/widgets/payment_web_view.dart @@ -1,5 +1,3 @@ -import 'dart:io'; - import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:webview_flutter/webview_flutter.dart'; @@ -16,14 +14,56 @@ class PaymentWebView extends StatefulWidget { class _PaymentWebViewState extends State { bool _isLoading = true; - final _key = UniqueKey(); + // final _key = UniqueKey(); + late WebViewController _controller; + + void _initWebViewController() { + _controller = WebViewController() + ..setJavaScriptMode(JavaScriptMode.unrestricted) + // ..setBackgroundColor(const Color(0x00000000)) + ..setNavigationDelegate( + NavigationDelegate( + onProgress: (int progress) { + // Update loading bar. + }, + onPageStarted: (String url) { + setState(() { + _isLoading = true; + }); + }, + onPageFinished: (finish) { + setState(() { + _isLoading = false; + }); + }, + onWebResourceError: (WebResourceError error) {}, + onNavigationRequest: (NavigationRequest request) { + if (request.url.startsWith(Constants.BASE_URL_WEB + 'checkout/success')) { + debugPrint('if'); + CartController cc = Get.put(CartController()); + cc.clearCartAndNavigateToOrderList(); + + return NavigationDecision.prevent; + } else if (request.url.startsWith(Constants.BASE_URL_WEB + 'checkout/onepage')) { + debugPrint('else if'); + Get.back(); + return NavigationDecision.prevent; + } + debugPrint('allowing navigation to $request'); + return NavigationDecision.navigate; + }, + ), + ) + ..loadRequest(Uri.parse(widget.url)); + } @override void initState() { super.initState(); - if (Platform.isAndroid) { - WebView.platform = SurfaceAndroidWebView(); - } + _initWebViewController(); + // if (Platform.isAndroid) { + // WebView.platform = SurfaceAndroidWebView(); + // } } @override @@ -32,37 +72,7 @@ class _PaymentWebViewState extends State { appBar: CustomAppbarWidget(leading: AppBarBackBtn()), body: Stack( children: [ - WebView( - key: _key, - javascriptMode: JavascriptMode.unrestricted, - initialUrl: widget.url, - onProgress: (int progress) { - debugPrint('WebView is loading (progress : $progress%)'); - }, - onPageFinished: (finish) { - setState(() { - _isLoading = false; - }); - }, - navigationDelegate: (NavigationRequest request) { - setState(() { - _isLoading = true; - }); - if (request.url.startsWith(Constants.BASE_URL_WEB + 'checkout/success')) { - debugPrint('if'); - CartController cc = Get.put(CartController()); - cc.clearCartAndNavigateToOrderList(); - - return NavigationDecision.prevent; - } else if (request.url.startsWith(Constants.BASE_URL_WEB + 'checkout/onepage')) { - debugPrint('else if'); - Get.back(); - return NavigationDecision.prevent; - } - debugPrint('allowing navigation to $request'); - return NavigationDecision.navigate; - }, - ), + WebViewWidget(controller: _controller), _isLoading ? Center( child: CustomLoader(), diff --git a/lib/app/pages/home/screen.dart b/lib/app/pages/home/screen.dart index d8c5349..6f981ff 100644 --- a/lib/app/pages/home/screen.dart +++ b/lib/app/pages/home/screen.dart @@ -110,6 +110,19 @@ class HomePage extends StatelessWidget { ), AppTheme.appSizeDivider30H, + + Padding( + padding: EdgeInsets.only(left: 16.w, right: 16.w), + child: HorizontalScrollableProducts( + param: { + 'weekly': 1, + 'title': 'weekly_offers'.tr, + 'url': 'weeklyOffers', + }, + ), + ), + + AppTheme.appSizeDivider30H, ], ), ), diff --git a/lib/app/pages/product/screen.dart b/lib/app/pages/product/screen.dart index 411d049..0e536d0 100644 --- a/lib/app/pages/product/screen.dart +++ b/lib/app/pages/product/screen.dart @@ -25,6 +25,7 @@ class ProductDetailsPage extends StatelessWidget { top: false, child: LoaderOverlay( useDefaultLoading: false, + overlayColor: Colors.transparent, overlayWidget: CustomLoader(), child: Scaffold( appBar: CustomAppbarWidget(leading: AppBarBackBtn()), diff --git a/lib/app/pages/product/widgets/product_about_widget.dart b/lib/app/pages/product/widgets/product_about_widget.dart index 8e6a058..cad114d 100644 --- a/lib/app/pages/product/widgets/product_about_widget.dart +++ b/lib/app/pages/product/widgets/product_about_widget.dart @@ -23,14 +23,14 @@ class ProductAboutWidget extends StatelessWidget { child: Html( shrinkWrap: true, data: data, - customRender: { - 'table': (context, child) { - return SingleChildScrollView( - scrollDirection: Axis.horizontal, - child: (context.tree as TableLayoutElement).toWidget(context), - ); - }, - }, + // customRender: { + // 'table': (context, child) { + // return SingleChildScrollView( + // scrollDirection: Axis.horizontal, + // child: (context.tree as TableLayoutElement).toWidget(context), + // ); + // }, + // }, style: { // tables will have the below background color 'table': Style( @@ -40,13 +40,16 @@ class ProductAboutWidget extends StatelessWidget { 'tr': Style( border: Border(bottom: BorderSide(color: ThemeColor.colorE5E5E5)), ), - 'th': Style( - padding: EdgeInsets.symmetric(vertical: 6), - ), + 'th': Style(padding: HtmlPaddings.symmetric(vertical: 6) + // EdgeInsets.symmetric(vertical: 6), + ), 'td': Style( - padding: EdgeInsets.symmetric(vertical: 16, horizontal: 8), + padding: HtmlPaddings.symmetric( + vertical: 16, + horizontal: 8, + ), //EdgeInsets.symmetric(vertical: 16, horizontal: 8), // alignment: Alignment.topLeft, - width: 0.45.sw, + width: Width(0.45.sw), // 0.45.sw, ), }, ), diff --git a/lib/app/pages/product_list/filter/widgets/b_s_choose_sort.dart b/lib/app/pages/product_list/filter/widgets/b_s_choose_sort.dart index 43c0776..de18241 100644 --- a/lib/app/pages/product_list/filter/widgets/b_s_choose_sort.dart +++ b/lib/app/pages/product_list/filter/widgets/b_s_choose_sort.dart @@ -14,6 +14,7 @@ class BSChooseSortMethod extends StatelessWidget { body: SingleChildScrollView( child: LoaderOverlay( useDefaultLoading: false, + overlayColor: Colors.transparent, overlayWidget: CustomLoader(), child: Column( children: cc.state.sortModels diff --git a/lib/app/pages/profile/sub_pages/personal_info.dart b/lib/app/pages/profile/sub_pages/personal_info.dart index 62c1094..c843fac 100644 --- a/lib/app/pages/profile/sub_pages/personal_info.dart +++ b/lib/app/pages/profile/sub_pages/personal_info.dart @@ -28,6 +28,7 @@ class PersonalInformationPage extends StatelessWidget { SizedBox(height: 50.h), LoaderOverlay( useDefaultLoading: false, + overlayColor: Colors.transparent, overlayWidget: CustomLoader(), child: AddressList( title: 'our_address'.tr, diff --git a/lib/app/pages/wishlist/widgets/wishlist_list_widget.dart b/lib/app/pages/wishlist/widgets/wishlist_list_widget.dart index 65113fc..e09e664 100644 --- a/lib/app/pages/wishlist/widgets/wishlist_list_widget.dart +++ b/lib/app/pages/wishlist/widgets/wishlist_list_widget.dart @@ -18,6 +18,7 @@ class WishlistsListWidget extends StatelessWidget { final bool isLastPage = wc.wlState.lastPage.value; return LoaderOverlay( useDefaultLoading: false, + overlayColor: Colors.transparent, overlayWidget: CustomLoader(), child: Column( crossAxisAlignment: CrossAxisAlignment.start, diff --git a/lib/firebase_options.dart b/lib/firebase_options.dart index d6453a0..85fd1dd 100644 --- a/lib/firebase_options.dart +++ b/lib/firebase_options.dart @@ -50,20 +50,19 @@ class DefaultFirebaseOptions { } static const FirebaseOptions android = FirebaseOptions( - apiKey: 'AIzaSyD9JBvYuGMFymroLwL9rYxkqB6u7EIaee0', - appId: '1:186538881179:android:96a2f9ce98f8bbf00f563e', - messagingSenderId: '186538881179', - projectId: 'elektronika-app', - storageBucket: 'elektronika-app.appspot.com', + apiKey: 'AIzaSyAOMSH8EgasYe-vJkF7NNMFs42N27P2Ax4', + appId: '1:283547367653:android:c08fb01d915c3874487c0c', + messagingSenderId: '283547367653', + projectId: 'elektronikatm', + storageBucket: 'elektronikatm.appspot.com', ); static const FirebaseOptions ios = FirebaseOptions( - apiKey: 'AIzaSyCS07pxfuN62pBYCauLVRAWttTx0GSNDH0', - appId: '1:186538881179:ios:fb651acd4ce97d5d0f563e', - messagingSenderId: '186538881179', - projectId: 'elektronika-app', - storageBucket: 'elektronika-app.appspot.com', - iosClientId: '186538881179-d39r6qso5iv98m8m60vev91gtsh8fs9o.apps.googleusercontent.com', + apiKey: 'AIzaSyBeQk2PlPBPMGQ3JvhAmRjHb-Bpiu8j3H4', + appId: '1:283547367653:ios:a0be3b851b594489487c0c', + messagingSenderId: '283547367653', + projectId: 'elektronikatm', + storageBucket: 'elektronikatm.appspot.com', iosBundleId: 'com.elektronika.tm', ); } diff --git a/pubspec.lock b/pubspec.lock index 735197a..6c2997a 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -13,10 +13,10 @@ packages: dependency: "direct main" description: name: animate_do - sha256: "4554744e604b841e2bde710398ef3f4f8a1935a182b48727afe2a1023527b883" + sha256: "91b3e0306ba2096c7a7e1ee1ba96f491e25e92034c215f4bf8de6a7251c4bef1" url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "3.1.2" archive: dependency: transitive description: @@ -53,10 +53,10 @@ packages: dependency: "direct main" description: name: badges - sha256: "727580d938b7a1ff47ea42df730d581415606b4224cfa708671c10287f8d3fe6" + sha256: a7b6bbd60dce418df0db3058b53f9d083c22cdb5132a052145dc267494df0b84 url: "https://pub.dev" source: hosted - version: "2.0.3" + version: "3.1.2" boolean_selector: dependency: transitive description: @@ -105,22 +105,22 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.0" - chewie: + checked_yaml: dependency: transitive description: - name: chewie - sha256: "745e81e84c6d7f3835f89f85bb49771c0a66099e4caf8f8e9e9a372bc66fb2c1" + name: checked_yaml + sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff url: "https://pub.dev" source: hosted - version: "1.5.0" - chewie_audio: + version: "2.0.3" + cli_util: dependency: transitive description: - name: chewie_audio - sha256: "73948a8b9841d050433af3498a1f8b11320bd5a2cd70b449bdbe16d4405e97c5" + name: cli_util + sha256: b8db3080e59b2503ca9e7922c3df2072cf13992354d5e944074ffa836fba43b7 url: "https://pub.dev" source: hosted - version: "1.5.0" + version: "0.4.0" clock: dependency: transitive description: @@ -173,66 +173,34 @@ packages: dependency: transitive description: name: dbus - sha256: "4f814fc7e73057f78f307a6c4714fe2ffb4bdb994ab1970540a068ec4d5a45be" + sha256: "6f07cba3f7b3448d42d015bfd3d53fe12e5b36da2423f23838efc1d5fb31a263" url: "https://pub.dev" source: hosted - version: "0.7.3" + version: "0.7.8" device_info_plus: dependency: "direct main" description: name: device_info_plus - sha256: c2386729379f04cd39ee0d5d4c48d8c8a0e70f7622dac626cbf5e396392602fd + sha256: "7035152271ff67b072a211152846e9f1259cf1be41e34cd3e0b5463d2d6b8419" url: "https://pub.dev" source: hosted - version: "3.2.4" - device_info_plus_linux: - dependency: transitive - description: - name: device_info_plus_linux - sha256: e4eb5db4704f5534e872148a21cfcd39581022b63df556da6720d88f7c9f91a9 - url: "https://pub.dev" - source: hosted - version: "2.1.1" - device_info_plus_macos: - dependency: transitive - description: - name: device_info_plus_macos - sha256: "38871fd2ad31871399d8307630c9f4eb5941dd2c643ee221c44d58de95d367a1" - url: "https://pub.dev" - source: hosted - version: "2.2.3" + version: "9.1.0" device_info_plus_platform_interface: dependency: transitive description: name: device_info_plus_platform_interface - sha256: b2743934f0efc3e291880d76fb341ea114b7e8417d77ee0f93bd21f5dfd3e8d2 + sha256: d3b01d5868b50ae571cd1dc6e502fc94d956b665756180f7b16ead09e836fd64 url: "https://pub.dev" source: hosted - version: "2.6.1" - device_info_plus_web: - dependency: transitive - description: - name: device_info_plus_web - sha256: "38715ad1ef3bee8915dd7bee08a9ac9ab54472a8df425c887062a3046209f663" - url: "https://pub.dev" - source: hosted - version: "2.1.0" - device_info_plus_windows: - dependency: transitive - description: - name: device_info_plus_windows - sha256: "8fb1403fc94636d6ab48aeebb5f9379f2ca51cde3b337167ec6f39db09234492" - url: "https://pub.dev" - source: hosted - version: "2.1.1" + version: "7.0.0" dio: dependency: "direct main" description: name: dio - sha256: "7d328c4d898a61efc3cd93655a0955858e29a0aa647f0f9e02d59b3bb275e2e8" + sha256: "417e2a6f9d83ab396ec38ff4ea5da6c254da71e4db765ad737a42af6930140b7" url: "https://pub.dev" source: hosted - version: "4.0.6" + version: "5.3.3" fake_async: dependency: transitive description: @@ -245,10 +213,10 @@ packages: dependency: transitive description: name: ffi - sha256: "13a6ccf6a459a125b3fcdb6ec73bd5ff90822e071207c663bfd1f70062d51d18" + sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "2.1.0" file: dependency: transitive description: @@ -322,66 +290,50 @@ packages: dependency: "direct main" description: name: flutter_html - sha256: ccb810fcabfce3a7ffaca46e458323915ac7e7fc59082c7357ff848972c02230 + sha256: "02ad69e813ecfc0728a455e4bf892b9379983e050722b1dce00192ee2e41d1ee" url: "https://pub.dev" source: hosted - version: "2.2.1" + version: "3.0.0-beta.2" flutter_launcher_icons: dependency: "direct dev" description: name: flutter_launcher_icons - sha256: "559c600f056e7c704bd843723c21e01b5fba47e8824bd02422165bcc02a5de1d" + sha256: "526faf84284b86a4cb36d20a5e45147747b7563d921373d4ee0559c54fcdbcea" url: "https://pub.dev" source: hosted - version: "0.9.3" - flutter_layout_grid: - dependency: transitive - description: - name: flutter_layout_grid - sha256: "86c1b21520612edfbb93f189b3ec05058470570f3a5c08ce10c92cc76a6e814e" - url: "https://pub.dev" - source: hosted - version: "1.0.6" + version: "0.13.1" flutter_local_notifications: dependency: "direct main" description: name: flutter_local_notifications - sha256: f222919a34545931e47b06000836b5101baeffb0e6eb5a4691d2d42851740dd9 + sha256: "6d11ea777496061e583623aaf31923f93a9409ef8fcaeeefdd6cd78bf4fe5bb3" url: "https://pub.dev" source: hosted - version: "12.0.4" + version: "16.1.0" flutter_local_notifications_linux: dependency: transitive description: name: flutter_local_notifications_linux - sha256: "6af440e3962eeab8459602c309d7d4ab9e62f05d5cfe58195a28f846a0b5d523" + sha256: "33f741ef47b5f63cc7f78fe75eeeac7e19f171ff3c3df054d84c1e38bedb6a03" url: "https://pub.dev" source: hosted - version: "1.0.0" + version: "4.0.0+1" flutter_local_notifications_platform_interface: dependency: transitive description: name: flutter_local_notifications_platform_interface - sha256: "5ec1feac5f7f7d9266759488bc5f76416152baba9aa1b26fe572246caa00d1ab" + sha256: "7cf643d6d5022f3baed0be777b0662cce5919c0a7b86e700299f22dc4ae660ef" url: "https://pub.dev" source: hosted - version: "6.0.0" - flutter_math_fork: - dependency: transitive - description: - name: flutter_math_fork - sha256: cfec964c4975c6becc64291eb9b782fe70df5e0c5bfe0763d9e856432fcc6fcd - url: "https://pub.dev" - source: hosted - version: "0.4.2+2" + version: "7.0.0+1" flutter_native_splash: dependency: "direct main" description: name: flutter_native_splash - sha256: bd36d1a7f05ff8378cad17d20c33ca904630bfd3fcf8b15c9e8237efbccfad0a + sha256: "5bf4c3e5e5a0426c1e2fc8ca3555a9e617e76369c3442e1dae8385c7767ba97a" url: "https://pub.dev" source: hosted - version: "2.2.0+1" + version: "2.3.4" flutter_rating_bar: dependency: "direct main" description: @@ -402,18 +354,18 @@ packages: dependency: "direct main" description: name: flutter_staggered_grid_view - sha256: "1312314293acceb65b92754298754801b0e1f26a1845833b740b30415bbbcf07" + sha256: "19e7abb550c96fbfeb546b23f3ff356ee7c59a019a651f8f102a4ba9b7349395" url: "https://pub.dev" source: hosted - version: "0.6.2" + version: "0.7.0" flutter_svg: dependency: "direct main" description: name: flutter_svg - sha256: "9ac1967e2f72a08af11b05b39167920f90d043cf67163d13a544a358c8f31afa" + sha256: "8c5d68a82add3ca76d792f058b186a0599414f279f00ece4830b9b231b570338" url: "https://pub.dev" source: hosted - version: "0.22.0" + version: "2.0.7" flutter_test: dependency: "direct dev" description: flutter @@ -460,18 +412,18 @@ packages: dependency: transitive description: name: image - sha256: "02bafd3b4f399bfeb10034deba9753d93b55ce41cd0c4d3d8b355626f80e5b32" + sha256: "028f61960d56f26414eb616b48b04eb37d700cbe477b7fb09bf1d7ce57fd9271" url: "https://pub.dev" source: hosted - version: "3.1.3" + version: "4.1.3" intl: dependency: "direct main" description: name: intl - sha256: "910f85bce16fb5c6f614e117efa303e85a1731bb0081edf3604a2ae6e9a3cc91" + sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d" url: "https://pub.dev" source: hosted - version: "0.17.0" + version: "0.18.1" js: dependency: transitive description: @@ -480,14 +432,30 @@ packages: url: "https://pub.dev" source: hosted version: "0.6.7" + json_annotation: + dependency: transitive + description: + name: json_annotation + sha256: b10a7b2ff83d83c777edba3c6a0f97045ddadd56c944e1a23a3fdf43a1bf4467 + url: "https://pub.dev" + source: hosted + version: "4.8.1" lint: dependency: "direct dev" description: name: lint - sha256: "4a539aa34ec5721a2c7574ae2ca0336738ea4adc2a34887d54b7596310b33c85" + sha256: f4bd4dbaa39f4ae8836f2d1275f2f32bc68b3a8cce0a0735dd1f7a601f06682a url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "2.1.2" + list_counter: + dependency: transitive + description: + name: list_counter + sha256: c447ae3dfcd1c55f0152867090e67e219d42fe6d4f2807db4bbe8b8d69912237 + url: "https://pub.dev" + source: hosted + version: "1.0.2" loader_overlay: dependency: "direct main" description: @@ -545,22 +513,6 @@ packages: url: "https://pub.dev" source: hosted version: "4.1.3" - nested: - dependency: transitive - description: - name: nested - sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20" - url: "https://pub.dev" - source: hosted - version: "1.0.0" - numerus: - dependency: transitive - description: - name: numerus - sha256: "0087ef729d63b96cb347a9c44b9c592f21cecb3605b415bbd18710aef80ce5cb" - url: "https://pub.dev" - source: hosted - version: "1.1.1" octo_image: dependency: transitive description: @@ -577,22 +529,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.8.3" - path_drawing: - dependency: transitive - description: - name: path_drawing - sha256: "3bdd251dae9ffaef944450b73f168610db7e968e7b20daf0c3907f8b4aafc8a2" - url: "https://pub.dev" - source: hosted - version: "0.5.1+1" path_parsing: dependency: transitive description: name: path_parsing - sha256: ee5c47c1058ad66b4a41746ec3996af9593d0858872807bcd64ac118f0700337 + sha256: e3e67b1629e6f7e8100b367d3db6ba6af4b1f0bb80f64db18ef1fbabd2fa9ccf url: "https://pub.dev" source: hosted - version: "0.2.1" + version: "1.0.1" path_provider: dependency: "direct main" description: @@ -637,10 +581,10 @@ packages: dependency: transitive description: name: path_provider_windows - sha256: a34ecd7fb548f8e57321fd8e50d865d266941b54e6c3b7758cf8f37c24116905 + sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170" url: "https://pub.dev" source: hosted - version: "2.0.7" + version: "2.2.1" petitparser: dependency: transitive description: @@ -653,10 +597,10 @@ packages: dependency: "direct main" description: name: pin_code_fields - sha256: c8652519d14688f3fe2a8288d86910a46aa0b9046d728f292d3bf6067c31b4c7 + sha256: "4c0db7fbc889e622e7c71ea54b9ee624bb70c7365b532abea0271b17ea75b729" url: "https://pub.dev" source: hosted - version: "7.4.0" + version: "8.0.1" platform: dependency: transitive description: @@ -689,22 +633,6 @@ packages: url: "https://pub.dev" source: hosted version: "4.2.4" - provider: - dependency: transitive - description: - name: provider - sha256: cdbe7530b12ecd9eb455bdaa2fcb8d4dad22e80b8afb4798b41479d5ce26847f - url: "https://pub.dev" - source: hosted - version: "6.0.5" - quiver: - dependency: transitive - description: - name: quiver - sha256: b1c1ac5ce6688d77f65f3375a9abb9319b3cb32486bdc7a1e0fdf004d7ba4e47 - url: "https://pub.dev" - source: hosted - version: "3.2.1" roundcheckbox: dependency: "direct main" description: @@ -781,10 +709,10 @@ packages: dependency: "direct main" description: name: shimmer - sha256: "1f1009b5845a1f88f1c5630212279540486f97409e9fc3f63883e71070d107bf" + sha256: "5f88c883a22e9f9f299e5ba0e4f7e6054857224976a5d9f839d4ebdc94a14ac9" url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "3.0.0" sky_engine: dependency: transitive description: flutter @@ -894,14 +822,6 @@ packages: url: "https://pub.dev" source: hosted version: "0.9.2" - tuple: - dependency: transitive - description: - name: tuple - sha256: a97ce2013f240b2f3807bcbaf218765b6f301c3eff91092bcfa23a039e7dd151 - url: "https://pub.dev" - source: hosted - version: "2.0.2" typed_data: dependency: transitive description: @@ -990,6 +910,30 @@ packages: url: "https://pub.dev" source: hosted version: "4.1.0" + vector_graphics: + dependency: transitive + description: + name: vector_graphics + sha256: b16dadf7eb610e20da044c141b4a0199a5e8082ca21daba68322756f953ce714 + url: "https://pub.dev" + source: hosted + version: "1.1.9" + vector_graphics_codec: + dependency: transitive + description: + name: vector_graphics_codec + sha256: a4b01403d5c613db115e30e71eca33f7e9e09f2d3c52c3fb84e16333ecddc539 + url: "https://pub.dev" + source: hosted + version: "1.1.9" + vector_graphics_compiler: + dependency: transitive + description: + name: vector_graphics_compiler + sha256: d26c0e2f237476426523eb25512e4c09fa27c6d33ed659a0e69d79e20b5dc47f + url: "https://pub.dev" + source: hosted + version: "1.1.9" vector_math: dependency: transitive description: @@ -998,86 +942,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" - video_player: - dependency: transitive - description: - name: video_player - sha256: "74b86e63529cf5885130c639d74cd2f9232e7c8a66cbecbddd1dcb9dbd060d1e" - url: "https://pub.dev" - source: hosted - version: "2.7.2" - video_player_android: - dependency: transitive - description: - name: video_player_android - sha256: "3fe89ab07fdbce786e7eb25b58532d6eaf189ceddc091cb66cba712f8d9e8e55" - url: "https://pub.dev" - source: hosted - version: "2.4.10" - video_player_avfoundation: - dependency: transitive - description: - name: video_player_avfoundation - sha256: "6387c2de77763b45104256b3b00b660089be4f909ded8631457dc11bf635e38f" - url: "https://pub.dev" - source: hosted - version: "2.5.0" - video_player_platform_interface: - dependency: transitive - description: - name: video_player_platform_interface - sha256: be72301bf2c0150ab35a8c34d66e5a99de525f6de1e8d27c0672b836fe48f73a - url: "https://pub.dev" - source: hosted - version: "6.2.1" - video_player_web: - dependency: transitive - description: - name: video_player_web - sha256: "2dd24f7ba46bfb5d070e9c795001db95e0ca5f2a3d025e98f287c10c9f0fd62f" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - wakelock: - dependency: transitive - description: - name: wakelock - sha256: "769ecf42eb2d07128407b50cb93d7c10bd2ee48f0276ef0119db1d25cc2f87db" - url: "https://pub.dev" - source: hosted - version: "0.6.2" - wakelock_macos: - dependency: transitive - description: - name: wakelock_macos - sha256: "047c6be2f88cb6b76d02553bca5a3a3b95323b15d30867eca53a19a0a319d4cd" - url: "https://pub.dev" - source: hosted - version: "0.4.0" - wakelock_platform_interface: - dependency: transitive - description: - name: wakelock_platform_interface - sha256: "1f4aeb81fb592b863da83d2d0f7b8196067451e4df91046c26b54a403f9de621" - url: "https://pub.dev" - source: hosted - version: "0.3.0" - wakelock_web: - dependency: transitive - description: - name: wakelock_web - sha256: "1b256b811ee3f0834888efddfe03da8d18d0819317f20f6193e2922b41a501b5" - url: "https://pub.dev" - source: hosted - version: "0.4.0" - wakelock_windows: - dependency: transitive - description: - name: wakelock_windows - sha256: "108b1b73711f1664ee462e73af34a9286ff496e27d4d8371e2fb4da8fde4cdac" - url: "https://pub.dev" - source: hosted - version: "0.2.0" web: dependency: transitive description: @@ -1090,42 +954,50 @@ packages: dependency: "direct main" description: name: webview_flutter - sha256: "6886b3ceef1541109df5001054aade5ee3c36b5780302e41701c78357233721c" + sha256: c1ab9b81090705c6069197d9fdc1625e587b52b8d70cdde2339d177ad0dbb98e url: "https://pub.dev" source: hosted - version: "2.8.0" + version: "4.4.1" webview_flutter_android: dependency: transitive description: name: webview_flutter_android - sha256: "8b3b2450e98876c70bfcead876d9390573b34b9418c19e28168b74f6cb252dbd" + sha256: b0cd33dd7d3dd8e5f664e11a19e17ba12c352647269921a3b568406b001f1dff url: "https://pub.dev" source: hosted - version: "2.10.4" + version: "3.12.0" webview_flutter_platform_interface: dependency: transitive description: name: webview_flutter_platform_interface - sha256: "812165e4e34ca677bdfbfa58c01e33b27fd03ab5fa75b70832d4b7d4ca1fa8cf" + sha256: "6d9213c65f1060116757a7c473247c60f3f7f332cac33dc417c9e362a9a13e4f" url: "https://pub.dev" source: hosted - version: "1.9.5" + version: "2.6.0" webview_flutter_wkwebview: dependency: transitive description: name: webview_flutter_wkwebview - sha256: a5364369c758892aa487cbf59ea41d9edd10f9d9baf06a94e80f1bd1b4c7bbc0 + sha256: "30b9af6bdd457b44c08748b9190d23208b5165357cc2eb57914fee1366c42974" url: "https://pub.dev" source: hosted - version: "2.9.5" + version: "3.9.1" win32: dependency: transitive description: name: win32 - sha256: c0e3a4f7be7dae51d8f152230b86627e3397c1ba8c3fa58e63d44a9f3edc9cef + sha256: "350a11abd2d1d97e0cc7a28a81b781c08002aa2864d9e3f192ca0ffa18b06ed3" url: "https://pub.dev" source: hosted - version: "2.6.1" + version: "5.0.9" + win32_registry: + dependency: transitive + description: + name: win32_registry + sha256: "41fd8a189940d8696b1b810efb9abcf60827b6cbfab90b0c43e8439e3a39d85a" + url: "https://pub.dev" + source: hosted + version: "1.1.2" xdg_directories: dependency: transitive description: @@ -1138,10 +1010,10 @@ packages: dependency: transitive description: name: xml - sha256: "80d494c09849dc3f899d227a78c30c5b949b985ededf884cb3f3bcd39f4b447a" + sha256: "5bc72e1e45e941d825fd7468b9b4cc3b9327942649aeb6fc5cdbf135f0a86e84" url: "https://pub.dev" source: hosted - version: "5.4.1" + version: "6.3.0" yaml: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index fb3496b..9747290 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -14,9 +14,9 @@ dependencies: cupertino_icons: ^1.0.2 flutter_screenutil: ^5.5.3+2 get: ^4.6.5 - flutter_svg: ^0.22.0 - badges: ^2.0.1 - dio: ^4.0.0 + flutter_svg: ^2.0.7 + badges: ^3.1.2 + dio: ^5.3.3 carousel_slider: ^4.0.0 smooth_page_indicator: ^1.0.0+2 # indicators used on images cached_network_image: ^3.2.1 @@ -27,34 +27,34 @@ dependencies: url: https://github.com/followthemoney1/modal_bottom_sheet.git ref: main path: modal_bottom_sheet - pin_code_fields: ^7.3.0 + pin_code_fields: ^8.0.1 path_provider: ^2.0.6 - animate_do: ^2.1.0 + animate_do: ^3.1.2 flutter_rating_bar: ^4.0.0 mask_text_input_formatter: ^2.0.0 snapping_sheet: ^3.1.0 # draggable bottom_sheet: shared_preferences: ^2.0.12 - flutter_html: ^2.2.1 # try to remove, use webview_flutter + flutter_html: ^3.0.0-beta.2 # try to remove, use webview_flutter html: ^0.15.0 # used for parse html - loader_overlay: ^2.0.7 - device_info_plus: ^3.2.1 - intl: ^0.17.0 + loader_overlay: ^2.3.2 + device_info_plus: ^9.1.0 + intl: ^0.18.1 roundcheckbox: ^2.0.4+1 multi_select_flutter: ^4.1.2 - shimmer: ^2.0.0 - flutter_staggered_grid_view: ^0.6.1 + shimmer: ^3.0.0 + flutter_staggered_grid_view: ^0.7.0 url_launcher: ^6.1.5 - webview_flutter: ^2.8.0 + webview_flutter: ^4.4.1 firebase_messaging: ^14.1.1 firebase_core: ^2.3.0 - flutter_local_notifications: ^12.0.4 + flutter_local_notifications: ^16.1.0 flutter_native_splash: ^2.2.0+1 dev_dependencies: flutter_test: sdk: flutter - lint: ^1.7.2 - flutter_launcher_icons: "^0.9.2" + lint: ^2.1.2 + flutter_launcher_icons: ^0.13.1 flutter_native_splash: image: assets/logo/icon-rounded.png