v6.8.0
This commit is contained in:
parent
456f313056
commit
fedd76fc67
@ -1,3 +1,11 @@
|
|||||||
|
## [6.8.0] - 2023-07-03
|
||||||
|
|
||||||
|
* UI fixes.
|
||||||
|
* Fix price on coupon page error alerts.
|
||||||
|
* Fix issue where IOS builds were not using the correct build version.
|
||||||
|
* Small refactor to the project.
|
||||||
|
* Pubspec.yaml dependency updates.
|
||||||
|
|
||||||
## [6.7.0] - 2023-06-20
|
## [6.7.0] - 2023-06-20
|
||||||
|
|
||||||
* Refactor project for Nylo 5.x.
|
* Refactor project for Nylo 5.x.
|
||||||
|
|||||||
@ -43,7 +43,7 @@ Full documentation this available [here](https://woosignal.com/docs/app/label-st
|
|||||||
- Browse products, make orders, customer login (via WordPress)
|
- Browse products, make orders, customer login (via WordPress)
|
||||||
- Change app name, logo, customize default language, currency + more
|
- Change app name, logo, customize default language, currency + more
|
||||||
- Light and dark mode
|
- Light and dark mode
|
||||||
- Stripe, Cash On Delivery, PayPal
|
- Stripe, Cash On Delivery, PayPal, RazorPay
|
||||||
- Localized for en, es, pt, it, hi, fr, zh, tr, nl, de
|
- Localized for en, es, pt, it, hi, fr, zh, tr, nl, de
|
||||||
- Orders show as normal in WooCommerce
|
- Orders show as normal in WooCommerce
|
||||||
|
|
||||||
|
|||||||
@ -373,6 +373,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"$(PROJECT_DIR)/Flutter",
|
"$(PROJECT_DIR)/Flutter",
|
||||||
);
|
);
|
||||||
|
MARKETING_VERSION = 1.0.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.flutter.app;
|
PRODUCT_BUNDLE_IDENTIFIER = com.flutter.app;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||||
@ -511,6 +512,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"$(PROJECT_DIR)/Flutter",
|
"$(PROJECT_DIR)/Flutter",
|
||||||
);
|
);
|
||||||
|
MARKETING_VERSION = 1.0.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.flutter.app;
|
PRODUCT_BUNDLE_IDENTIFIER = com.flutter.app;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||||
@ -543,6 +545,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"$(PROJECT_DIR)/Flutter",
|
"$(PROJECT_DIR)/Flutter",
|
||||||
);
|
);
|
||||||
|
MARKETING_VERSION = 1.0.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.flutter.app;
|
PRODUCT_BUNDLE_IDENTIFIER = com.flutter.app;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||||
|
|||||||
@ -17,7 +17,7 @@
|
|||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>APPL</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>$(FLUTTER_BUILD_NAME)</string>
|
<string>$(MARKETING_VERSION)</string>
|
||||||
<key>CFBundleSignature</key>
|
<key>CFBundleSignature</key>
|
||||||
<string>????</string>
|
<string>????</string>
|
||||||
<key>CFBundleURLTypes</key>
|
<key>CFBundleURLTypes</key>
|
||||||
@ -34,7 +34,7 @@
|
|||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>$(FLUTTER_BUILD_NUMBER)</string>
|
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||||
<key>LSRequiresIPhoneOS</key>
|
<key>LSRequiresIPhoneOS</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>MinimumOSVersion</key>
|
<key>MinimumOSVersion</key>
|
||||||
|
|||||||
@ -19,7 +19,7 @@ class User extends Model {
|
|||||||
|
|
||||||
toJson() => {"token": token, "user_id": userId};
|
toJson() => {"token": token, "user_id": userId};
|
||||||
|
|
||||||
fromJson(dynamic data) {
|
User.fromJson(dynamic data) {
|
||||||
token = data['token'];
|
token = data['token'];
|
||||||
userId = data['user_id'];
|
userId = data['user_id'];
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,13 +6,15 @@ import 'package:woosignal/woosignal.dart';
|
|||||||
|
|
||||||
class FirebaseProvider implements NyProvider {
|
class FirebaseProvider implements NyProvider {
|
||||||
|
|
||||||
|
@override
|
||||||
boot(Nylo nylo) async {
|
boot(Nylo nylo) async {
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
afterBoot(Nylo nylo) async {
|
afterBoot(Nylo nylo) async {
|
||||||
if (getEnv('FCM_ENABLED') != true) return;
|
if (getEnv('FCM_ENABLED', defaultValue: false) != true) return;
|
||||||
|
|
||||||
await Firebase.initializeApp(
|
await Firebase.initializeApp(
|
||||||
options: DefaultFirebaseOptions.currentPlatform,
|
options: DefaultFirebaseOptions.currentPlatform,
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import 'package:flutter_app/app/models/cart.dart';
|
|||||||
import 'package:flutter_app/app/models/cart_line_item.dart';
|
import 'package:flutter_app/app/models/cart_line_item.dart';
|
||||||
import 'package:flutter_app/app/models/checkout_session.dart';
|
import 'package:flutter_app/app/models/checkout_session.dart';
|
||||||
import 'package:flutter_app/bootstrap/app_helper.dart';
|
import 'package:flutter_app/bootstrap/app_helper.dart';
|
||||||
|
import 'package:flutter_app/bootstrap/helpers.dart';
|
||||||
import 'package:flutter_app/bootstrap/shared_pref/sp_auth.dart';
|
import 'package:flutter_app/bootstrap/shared_pref/sp_auth.dart';
|
||||||
import 'package:woosignal/models/payload/order_wc.dart';
|
import 'package:woosignal/models/payload/order_wc.dart';
|
||||||
import 'package:woosignal/models/response/tax_rate.dart';
|
import 'package:woosignal/models/response/tax_rate.dart';
|
||||||
@ -51,7 +52,7 @@ Future<OrderWC> buildOrderWC({TaxRate? taxRate, bool markPaid = true}) async {
|
|||||||
tmpLineItem.variationId = cartItem.variationId;
|
tmpLineItem.variationId = cartItem.variationId;
|
||||||
}
|
}
|
||||||
|
|
||||||
tmpLineItem.subtotal = cartItem.subtotal;
|
tmpLineItem.subtotal = (parseWcPrice(cartItem.subtotal) * parseWcPrice(cartItem.quantity.toString())).toString();
|
||||||
lineItems.add(tmpLineItem);
|
lineItems.add(tmpLineItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
import 'package:flutter_app/app/models/user.dart';
|
||||||
import 'package:flutter_app/app/networking/api_service.dart';
|
import 'package:flutter_app/app/networking/api_service.dart';
|
||||||
import 'package:flutter_app/app/networking/dio/base_api_service.dart';
|
import 'package:flutter_app/app/networking/dio/base_api_service.dart';
|
||||||
|
|
||||||
@ -12,6 +13,7 @@ import 'package:flutter_app/app/networking/dio/base_api_service.dart';
|
|||||||
|
|
||||||
final Map<Type, dynamic> modelDecoders = {
|
final Map<Type, dynamic> modelDecoders = {
|
||||||
// ...
|
// ...
|
||||||
|
User: (data) => User.fromJson(data)
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@ -15,4 +15,5 @@ import 'package:nylo_framework/nylo_framework.dart';
|
|||||||
final Map<Type, NyEvent> events = {
|
final Map<Type, NyEvent> events = {
|
||||||
LoginEvent: LoginEvent(),
|
LoginEvent: LoginEvent(),
|
||||||
LogoutEvent: LogoutEvent(),
|
LogoutEvent: LogoutEvent(),
|
||||||
|
AuthUserEvent: AuthUserEvent(),
|
||||||
};
|
};
|
||||||
|
|||||||
@ -8,10 +8,10 @@
|
|||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_app/app/controllers/account_order_detail_controller.dart';
|
import 'package:flutter_app/app/controllers/account_order_detail_controller.dart';
|
||||||
import 'package:flutter_app/bootstrap/helpers.dart';
|
import 'package:flutter_app/bootstrap/helpers.dart';
|
||||||
import 'package:flutter_app/resources/widgets/app_loader_widget.dart';
|
|
||||||
import 'package:flutter_app/resources/widgets/safearea_widget.dart';
|
import 'package:flutter_app/resources/widgets/safearea_widget.dart';
|
||||||
import 'package:flutter_app/resources/widgets/woosignal_ui.dart';
|
import 'package:flutter_app/resources/widgets/woosignal_ui.dart';
|
||||||
import 'package:nylo_framework/nylo_framework.dart';
|
import 'package:nylo_framework/nylo_framework.dart';
|
||||||
@ -29,10 +29,14 @@ class AccountOrderDetailPage extends NyStatefulWidget {
|
|||||||
class _AccountOrderDetailPageState extends NyState<AccountOrderDetailPage> {
|
class _AccountOrderDetailPageState extends NyState<AccountOrderDetailPage> {
|
||||||
int? _orderId;
|
int? _orderId;
|
||||||
Order? _order;
|
Order? _order;
|
||||||
bool _isLoading = true;
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
init() async {
|
init() async {
|
||||||
|
super.init();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
boot() async {
|
||||||
_orderId = widget.controller.data();
|
_orderId = widget.controller.data();
|
||||||
await _fetchOrder();
|
await _fetchOrder();
|
||||||
}
|
}
|
||||||
@ -48,149 +52,160 @@ class _AccountOrderDetailPageState extends NyState<AccountOrderDetailPage> {
|
|||||||
),
|
),
|
||||||
margin: EdgeInsets.only(left: 0),
|
margin: EdgeInsets.only(left: 0),
|
||||||
),
|
),
|
||||||
title: Text("${trans("Order").capitalize()} #${_orderId.toString()}"),
|
title: afterNotNull(_orderId, child: () => Text("${trans("Order").capitalize()} #${_orderId.toString()}"), loadingPlaceholder: CupertinoActivityIndicator()),
|
||||||
centerTitle: true,
|
centerTitle: true,
|
||||||
),
|
),
|
||||||
resizeToAvoidBottomInset: false,
|
resizeToAvoidBottomInset: false,
|
||||||
body: SafeAreaWidget(
|
body: SafeAreaWidget(
|
||||||
child: _isLoading
|
child: afterLoad(child: () => Column(
|
||||||
? AppLoaderWidget()
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
: Column(
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
children: <Widget>[
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
Padding(
|
||||||
|
padding: EdgeInsets.only(top: 8),
|
||||||
|
child: Text(
|
||||||
|
"${trans("Date Ordered").capitalize()}: ${dateFormatted(
|
||||||
|
date: _order?.dateCreated ?? "",
|
||||||
|
formatType: formatForDateTime(FormatType.date),
|
||||||
|
)}",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
margin: EdgeInsets.only(top: 10, bottom: 10),
|
||||||
|
padding: EdgeInsets.symmetric(horizontal: 16, vertical: 16),
|
||||||
|
child: Row(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
Padding(
|
Flexible(
|
||||||
padding: EdgeInsets.only(top: 8),
|
child: Text("${trans("Ships to").capitalize()}:"),
|
||||||
|
),
|
||||||
|
Flexible(
|
||||||
child: Text(
|
child: Text(
|
||||||
"${trans("Date Ordered").capitalize()}: ${dateFormatted(
|
[
|
||||||
date: _order?.dateCreated ?? "",
|
[
|
||||||
formatType: formatForDateTime(FormatType.date),
|
_order!.shipping!.firstName,
|
||||||
)}",
|
_order!.shipping!.lastName
|
||||||
),
|
].where((t) => t != null).toList().join(" "),
|
||||||
),
|
_order!.shipping!.address1,
|
||||||
Container(
|
_order!.shipping!.address2,
|
||||||
margin: EdgeInsets.only(top: 10, bottom: 10),
|
_order!.shipping!.city,
|
||||||
padding: EdgeInsets.symmetric(horizontal: 16, vertical: 16),
|
_order!.shipping!.state,
|
||||||
child: Row(
|
_order!.shipping!.postcode,
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
_order!.shipping!.country,
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
]
|
||||||
children: <Widget>[
|
.where((t) => (t != "" && t != null))
|
||||||
Flexible(
|
.toList()
|
||||||
child: Text("${trans("Ships to").capitalize()}:"),
|
.join("\n"),
|
||||||
),
|
textAlign: TextAlign.right,
|
||||||
Flexible(
|
|
||||||
child: Text(
|
|
||||||
[
|
|
||||||
[
|
|
||||||
_order!.shipping!.firstName,
|
|
||||||
_order!.shipping!.lastName
|
|
||||||
].where((t) => t != null).toList().join(" "),
|
|
||||||
_order!.shipping!.address1,
|
|
||||||
_order!.shipping!.address2,
|
|
||||||
_order!.shipping!.city,
|
|
||||||
_order!.shipping!.state,
|
|
||||||
_order!.shipping!.postcode,
|
|
||||||
_order!.shipping!.country,
|
|
||||||
]
|
|
||||||
.where((t) => (t != "" && t != null))
|
|
||||||
.toList()
|
|
||||||
.join("\n"),
|
|
||||||
textAlign: TextAlign.right,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
borderRadius: BorderRadius.circular(8),
|
|
||||||
boxShadow:
|
|
||||||
(Theme.of(context).brightness == Brightness.light)
|
|
||||||
? wsBoxShadow()
|
|
||||||
: null,
|
|
||||||
color: (Theme.of(context).brightness == Brightness.light)
|
|
||||||
? Colors.white
|
|
||||||
: Color(0xFF2C2C2C),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Expanded(
|
|
||||||
child: ListView.builder(
|
|
||||||
itemBuilder: (cxt, i) {
|
|
||||||
LineItems lineItem = _order!.lineItems![i];
|
|
||||||
return Card(
|
|
||||||
child: ListTile(
|
|
||||||
contentPadding: EdgeInsets.only(
|
|
||||||
top: 5, bottom: 5, left: 8, right: 6),
|
|
||||||
title: Container(
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
border: Border(
|
|
||||||
bottom: BorderSide(
|
|
||||||
color: Color(0xFFFCFCFC), width: 1),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
child: Row(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
|
||||||
mainAxisAlignment:
|
|
||||||
MainAxisAlignment.spaceBetween,
|
|
||||||
children: <Widget>[
|
|
||||||
Flexible(
|
|
||||||
child: Text(
|
|
||||||
lineItem.name!,
|
|
||||||
maxLines: 1,
|
|
||||||
overflow: TextOverflow.ellipsis,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Text(
|
|
||||||
formatStringCurrency(total: lineItem.price)
|
|
||||||
.capitalize(),
|
|
||||||
maxLines: 1,
|
|
||||||
overflow: TextOverflow.ellipsis,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
subtitle: Padding(
|
|
||||||
padding: const EdgeInsets.only(top: 10),
|
|
||||||
child: Row(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
|
||||||
mainAxisAlignment:
|
|
||||||
MainAxisAlignment.spaceBetween,
|
|
||||||
children: <Widget>[
|
|
||||||
Column(
|
|
||||||
crossAxisAlignment:
|
|
||||||
CrossAxisAlignment.start,
|
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
|
||||||
children: <Widget>[
|
|
||||||
Text(
|
|
||||||
formatStringCurrency(
|
|
||||||
total: lineItem.total,
|
|
||||||
),
|
|
||||||
style: Theme.of(context)
|
|
||||||
.textTheme
|
|
||||||
.bodyMedium!
|
|
||||||
.copyWith(
|
|
||||||
fontWeight: FontWeight.w600,
|
|
||||||
),
|
|
||||||
textAlign: TextAlign.left,
|
|
||||||
),
|
|
||||||
Text(
|
|
||||||
"x${lineItem.quantity.toString()}",
|
|
||||||
style: Theme.of(context)
|
|
||||||
.textTheme
|
|
||||||
.bodyLarge,
|
|
||||||
textAlign: TextAlign.left,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
itemCount: _order!.lineItems!.length,
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
borderRadius: BorderRadius.circular(8),
|
||||||
|
boxShadow:
|
||||||
|
(Theme.of(context).brightness == Brightness.light)
|
||||||
|
? wsBoxShadow()
|
||||||
|
: null,
|
||||||
|
color: (Theme.of(context).brightness == Brightness.light)
|
||||||
|
? Colors.white
|
||||||
|
: Color(0xFF2C2C2C),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
child: ListView.builder(
|
||||||
|
itemBuilder: (cxt, i) {
|
||||||
|
LineItems lineItem = _order!.lineItems![i];
|
||||||
|
return Card(
|
||||||
|
child: ListTile(
|
||||||
|
contentPadding: EdgeInsets.only(
|
||||||
|
top: 5, bottom: 5, left: 8, right: 6),
|
||||||
|
title: Container(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
border: Border(
|
||||||
|
bottom: BorderSide(
|
||||||
|
color: Color(0xFFFCFCFC), width: 1),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
child: Row(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
|
mainAxisAlignment:
|
||||||
|
MainAxisAlignment.spaceBetween,
|
||||||
|
children: <Widget>[
|
||||||
|
Flexible(
|
||||||
|
child: Text(
|
||||||
|
lineItem.name!,
|
||||||
|
maxLines: 2,
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
width: 70,
|
||||||
|
alignment: Alignment.topRight,
|
||||||
|
child: Text(
|
||||||
|
formatStringCurrency(total: lineItem.total)
|
||||||
|
.capitalize(),
|
||||||
|
maxLines: 1,
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
|
style: TextStyle(
|
||||||
|
fontWeight: FontWeight.bold
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
subtitle: Container(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
border: Border(
|
||||||
|
top: BorderSide(color: Colors.grey[100]!)
|
||||||
|
)
|
||||||
|
),
|
||||||
|
padding: const EdgeInsets.only(top: 10),
|
||||||
|
margin: EdgeInsets.only(top: 4),
|
||||||
|
child: Row(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
|
mainAxisAlignment:
|
||||||
|
MainAxisAlignment.spaceBetween,
|
||||||
|
children: <Widget>[
|
||||||
|
Column(
|
||||||
|
crossAxisAlignment:
|
||||||
|
CrossAxisAlignment.start,
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: <Widget>[
|
||||||
|
Text(
|
||||||
|
formatStringCurrency(
|
||||||
|
total: lineItem.price,
|
||||||
|
),
|
||||||
|
style: Theme.of(context)
|
||||||
|
.textTheme
|
||||||
|
.bodyMedium!
|
||||||
|
.copyWith(
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
),
|
||||||
|
textAlign: TextAlign.left,
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
"x ${lineItem.quantity.toString()}",
|
||||||
|
style: Theme.of(context)
|
||||||
|
.textTheme
|
||||||
|
.bodyLarge,
|
||||||
|
textAlign: TextAlign.left,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
itemCount: _order?.lineItems?.length ?? 0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
)),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -201,13 +216,6 @@ class _AccountOrderDetailPageState extends NyState<AccountOrderDetailPage> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_fetchOrder() async {
|
_fetchOrder() async {
|
||||||
_order = await (appWooSignal((api) {
|
_order = await (appWooSignal((api) => api.retrieveOrder(_orderId!)));
|
||||||
return api.retrieveOrder(_orderId!);
|
|
||||||
}));
|
|
||||||
if (_order != null) {
|
|
||||||
setState(() {
|
|
||||||
_isLoading = false;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -58,7 +58,6 @@ class CheckoutConfirmationPageState extends NyState<CheckoutConfirmationPage> {
|
|||||||
CheckoutSession.getInstance.paymentType = paymentTypes.firstWhere(
|
CheckoutSession.getInstance.paymentType = paymentTypes.firstWhere(
|
||||||
(paymentType) => paymentType?.id == 20,
|
(paymentType) => paymentType?.id == 20,
|
||||||
orElse: () => paymentTypes.first);
|
orElse: () => paymentTypes.first);
|
||||||
print(CheckoutSession.getInstance.paymentType?.name);
|
|
||||||
}
|
}
|
||||||
_getTaxes();
|
_getTaxes();
|
||||||
}
|
}
|
||||||
@ -203,126 +202,124 @@ class CheckoutConfirmationPageState extends NyState<CheckoutConfirmationPage> {
|
|||||||
resizeToAvoidBottomInset: false,
|
resizeToAvoidBottomInset: false,
|
||||||
body: SafeAreaWidget(
|
body: SafeAreaWidget(
|
||||||
child: Container(
|
child: Container(
|
||||||
child: Column(
|
child: ListView(
|
||||||
mainAxisAlignment: MainAxisAlignment.start,
|
shrinkWrap: true,
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
Expanded(
|
ListView(
|
||||||
child: ListView(
|
shrinkWrap: true,
|
||||||
shrinkWrap: true,
|
physics: NeverScrollableScrollPhysics(),
|
||||||
children: [
|
children: [
|
||||||
CheckoutStoreHeadingWidget(),
|
CheckoutStoreHeadingWidget(),
|
||||||
CheckoutUserDetailsWidget(
|
CheckoutUserDetailsWidget(
|
||||||
context: context,
|
context: context,
|
||||||
checkoutSession: checkoutSession,
|
checkoutSession: checkoutSession,
|
||||||
resetState: () {
|
resetState: () {
|
||||||
setState(() {
|
setState(() {
|
||||||
_showFullLoader = true;
|
_showFullLoader = true;
|
||||||
});
|
});
|
||||||
_getTaxes();
|
_getTaxes();
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
CheckoutPaymentTypeWidget(
|
CheckoutPaymentTypeWidget(
|
||||||
|
context: context,
|
||||||
|
checkoutSession: checkoutSession,
|
||||||
|
resetState: () => setState(() {}),
|
||||||
|
),
|
||||||
|
CheckoutShippingTypeWidget(
|
||||||
|
context: context,
|
||||||
|
checkoutSession: checkoutSession,
|
||||||
|
resetState: () => setState(() {}),
|
||||||
|
wooSignalApp: _wooSignalApp,
|
||||||
|
),
|
||||||
|
if (_wooSignalApp!.couponEnabled == true)
|
||||||
|
CheckoutSelectCouponWidget(
|
||||||
context: context,
|
context: context,
|
||||||
checkoutSession: checkoutSession,
|
checkoutSession: checkoutSession,
|
||||||
resetState: () => setState(() {}),
|
resetState: () => setState(() {}),
|
||||||
),
|
),
|
||||||
CheckoutShippingTypeWidget(
|
Container(
|
||||||
context: context,
|
decoration: BoxDecoration(
|
||||||
checkoutSession: checkoutSession,
|
boxShadow: wsBoxShadow(),
|
||||||
resetState: () => setState(() {}),
|
color: Colors.white,
|
||||||
wooSignalApp: _wooSignalApp,
|
// borderRadius: BorderRadius.circular(16)
|
||||||
),
|
),
|
||||||
if (_wooSignalApp!.couponEnabled == true)
|
padding: EdgeInsets.symmetric(vertical: 16),
|
||||||
CheckoutSelectCouponWidget(
|
margin: EdgeInsets.only(top: 20),
|
||||||
context: context,
|
child: Column(
|
||||||
checkoutSession: checkoutSession,
|
children: [
|
||||||
resetState: () => setState(() {}),
|
Container(
|
||||||
),
|
padding: EdgeInsets.symmetric(horizontal: 8),
|
||||||
Container(
|
child: Row(
|
||||||
decoration: BoxDecoration(
|
|
||||||
boxShadow: wsBoxShadow(),
|
|
||||||
color: Colors.white,
|
|
||||||
// borderRadius: BorderRadius.circular(16)
|
|
||||||
),
|
|
||||||
padding: EdgeInsets.symmetric(vertical: 16),
|
|
||||||
margin: EdgeInsets.only(top: 20),
|
|
||||||
child: Column(
|
|
||||||
children: [
|
|
||||||
Container(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 8),
|
|
||||||
child: Row(
|
|
||||||
children: [
|
|
||||||
Icon(Icons.receipt),
|
|
||||||
Padding(padding: EdgeInsets.only(right: 8),),
|
|
||||||
Text(trans("Order Summary")).fontWeightBold()
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Column(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
mainAxisAlignment: MainAxisAlignment.end,
|
|
||||||
children: [
|
children: [
|
||||||
Padding(padding: EdgeInsets.only(top: 16)),
|
Icon(Icons.receipt),
|
||||||
CheckoutSubtotal(
|
Padding(padding: EdgeInsets.only(right: 8),),
|
||||||
title: trans("Subtotal"),
|
Text(trans("Order Summary")).fontWeightBold()
|
||||||
),
|
|
||||||
CheckoutCouponAmountWidget(
|
|
||||||
checkoutSession: checkoutSession),
|
|
||||||
if (_wooSignalApp!.disableShipping != 1)
|
|
||||||
CheckoutMetaLine(
|
|
||||||
title: trans("Shipping fee"),
|
|
||||||
amount: CheckoutSession
|
|
||||||
.getInstance.shippingType ==
|
|
||||||
null
|
|
||||||
? trans("Select shipping")
|
|
||||||
: CheckoutSession
|
|
||||||
.getInstance.shippingType!
|
|
||||||
.getTotal(withFormatting: true)),
|
|
||||||
if (_taxRate != null)
|
|
||||||
CheckoutTaxTotal(taxRate: _taxRate),
|
|
||||||
Padding(padding: EdgeInsets.only(top: 8, left: 8, right: 8)),
|
|
||||||
Padding(padding: EdgeInsets.symmetric(horizontal: 8), child: RichText(
|
|
||||||
textAlign: TextAlign.left,
|
|
||||||
text: TextSpan(
|
|
||||||
text:
|
|
||||||
'${trans('By completing this order, I agree to all')} ',
|
|
||||||
style: Theme.of(context).textTheme.bodySmall!.copyWith(
|
|
||||||
fontSize: 12,
|
|
||||||
),
|
|
||||||
children: <TextSpan>[
|
|
||||||
TextSpan(
|
|
||||||
recognizer: TapGestureRecognizer()..onTap = _openTermsLink,
|
|
||||||
text: trans("Terms and conditions").toLowerCase(),
|
|
||||||
style: Theme.of(context)
|
|
||||||
.textTheme
|
|
||||||
.bodySmall!
|
|
||||||
.copyWith(
|
|
||||||
color: ThemeColor.get(context)
|
|
||||||
.primaryAccent,
|
|
||||||
fontSize: 12,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
TextSpan(
|
|
||||||
text: ".",
|
|
||||||
style: Theme.of(context)
|
|
||||||
.textTheme
|
|
||||||
.bodySmall!
|
|
||||||
.copyWith(
|
|
||||||
color: Colors.black87,
|
|
||||||
fontSize: 12,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
)),
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
],
|
),
|
||||||
),
|
Column(
|
||||||
)
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
],
|
mainAxisAlignment: MainAxisAlignment.end,
|
||||||
),
|
children: [
|
||||||
|
Padding(padding: EdgeInsets.only(top: 16)),
|
||||||
|
CheckoutSubtotal(
|
||||||
|
title: trans("Subtotal"),
|
||||||
|
),
|
||||||
|
CheckoutCouponAmountWidget(
|
||||||
|
checkoutSession: checkoutSession),
|
||||||
|
if (_wooSignalApp!.disableShipping != 1)
|
||||||
|
CheckoutMetaLine(
|
||||||
|
title: trans("Shipping fee"),
|
||||||
|
amount: CheckoutSession
|
||||||
|
.getInstance.shippingType ==
|
||||||
|
null
|
||||||
|
? trans("Select shipping")
|
||||||
|
: CheckoutSession
|
||||||
|
.getInstance.shippingType!
|
||||||
|
.getTotal(withFormatting: true)),
|
||||||
|
if (_taxRate != null)
|
||||||
|
CheckoutTaxTotal(taxRate: _taxRate),
|
||||||
|
Padding(padding: EdgeInsets.only(top: 8, left: 8, right: 8)),
|
||||||
|
Padding(padding: EdgeInsets.symmetric(horizontal: 8), child: RichText(
|
||||||
|
textAlign: TextAlign.left,
|
||||||
|
text: TextSpan(
|
||||||
|
text:
|
||||||
|
'${trans('By completing this order, I agree to all')} ',
|
||||||
|
style: Theme.of(context).textTheme.bodySmall!.copyWith(
|
||||||
|
fontSize: 12,
|
||||||
|
),
|
||||||
|
children: <TextSpan>[
|
||||||
|
TextSpan(
|
||||||
|
recognizer: TapGestureRecognizer()..onTap = _openTermsLink,
|
||||||
|
text: trans("Terms and conditions").toLowerCase(),
|
||||||
|
style: Theme.of(context)
|
||||||
|
.textTheme
|
||||||
|
.bodySmall!
|
||||||
|
.copyWith(
|
||||||
|
color: ThemeColor.get(context)
|
||||||
|
.primaryAccent,
|
||||||
|
fontSize: 12,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
TextSpan(
|
||||||
|
text: ".",
|
||||||
|
style: Theme.of(context)
|
||||||
|
.textTheme
|
||||||
|
.bodySmall!
|
||||||
|
.copyWith(
|
||||||
|
color: Colors.black87,
|
||||||
|
fontSize: 12,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
),
|
),
|
||||||
Container(
|
Container(
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
|
|||||||
@ -34,6 +34,7 @@ class _CheckoutStatusState extends NyState<CheckoutStatusPage> {
|
|||||||
_order = widget.controller.data();
|
_order = widget.controller.data();
|
||||||
await Cart.getInstance.clear();
|
await Cart.getInstance.clear();
|
||||||
CheckoutSession.getInstance.clear();
|
CheckoutSession.getInstance.clear();
|
||||||
|
setState(() { });
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -161,7 +162,7 @@ class _CheckoutStatusState extends NyState<CheckoutStatusPage> {
|
|||||||
),
|
),
|
||||||
Text(
|
Text(
|
||||||
formatStringCurrency(
|
formatStringCurrency(
|
||||||
total: lineItem.total.toString(),
|
total: lineItem.subtotal.toString(),
|
||||||
),
|
),
|
||||||
style: Theme.of(context).textTheme.bodyLarge,
|
style: Theme.of(context).textTheme.bodyLarge,
|
||||||
)
|
)
|
||||||
|
|||||||
@ -179,7 +179,7 @@ class _CouponPageState extends State<CouponPage> {
|
|||||||
if (minimumAmount != 0 && doubleSubtotal < minimumAmount) {
|
if (minimumAmount != 0 && doubleSubtotal < minimumAmount) {
|
||||||
_showAlert(
|
_showAlert(
|
||||||
message: trans("Spend a minimum of minimumAmount to redeem",
|
message: trans("Spend a minimum of minimumAmount to redeem",
|
||||||
arguments: {"minimumAmount": minimumAmount.toString()}),
|
arguments: {"minimumAmount": formatStringCurrency(total: minimumAmount.toString())}),
|
||||||
style: ToastNotificationStyleType.DANGER);
|
style: ToastNotificationStyleType.DANGER);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -189,7 +189,7 @@ class _CouponPageState extends State<CouponPage> {
|
|||||||
if (maximumAmount != 0 && doubleSubtotal > maximumAmount) {
|
if (maximumAmount != 0 && doubleSubtotal > maximumAmount) {
|
||||||
_showAlert(
|
_showAlert(
|
||||||
message: trans("Spend less than maximumAmount to redeem",
|
message: trans("Spend less than maximumAmount to redeem",
|
||||||
arguments: {"maximumAmount": maximumAmount.toString()}),
|
arguments: {"maximumAmount": formatStringCurrency(total: maximumAmount.toString())}),
|
||||||
style: ToastNotificationStyleType.DANGER);
|
style: ToastNotificationStyleType.DANGER);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -84,7 +84,7 @@ class _ProductDetailState extends NyState<ProductDetailPage> {
|
|||||||
"${trans("Select a")} ${_product!.attributes[attributeIndex].name}",
|
"${trans("Select a")} ${_product!.attributes[attributeIndex].name}",
|
||||||
bodyWidget: ListView.separated(
|
bodyWidget: ListView.separated(
|
||||||
itemCount: _product!.attributes[attributeIndex].options!.length,
|
itemCount: _product!.attributes[attributeIndex].options!.length,
|
||||||
separatorBuilder: (BuildContext context, int index) => Divider(),
|
separatorBuilder: (BuildContext context, int index) => Divider(color: Colors.black12),
|
||||||
itemBuilder: (BuildContext context, int index) {
|
itemBuilder: (BuildContext context, int index) {
|
||||||
return ListTile(
|
return ListTile(
|
||||||
title: Text(
|
title: Text(
|
||||||
|
|||||||
@ -6,31 +6,45 @@ import 'package:nylo_framework/nylo_framework.dart';
|
|||||||
/// light_theme_colors.dart and dark_theme_colors.dart.
|
/// light_theme_colors.dart and dark_theme_colors.dart.
|
||||||
abstract class ColorStyles extends BaseColorStyles {
|
abstract class ColorStyles extends BaseColorStyles {
|
||||||
// general
|
// general
|
||||||
|
@override
|
||||||
Color get background;
|
Color get background;
|
||||||
Color get backgroundContainer;
|
Color get backgroundContainer;
|
||||||
|
@override
|
||||||
Color get primaryContent;
|
Color get primaryContent;
|
||||||
|
@override
|
||||||
Color get primaryAccent;
|
Color get primaryAccent;
|
||||||
|
|
||||||
|
@override
|
||||||
Color get surfaceBackground;
|
Color get surfaceBackground;
|
||||||
|
@override
|
||||||
Color get surfaceContent;
|
Color get surfaceContent;
|
||||||
|
|
||||||
// app bar
|
// app bar
|
||||||
|
@override
|
||||||
Color get appBarBackground;
|
Color get appBarBackground;
|
||||||
|
@override
|
||||||
Color get appBarPrimaryContent;
|
Color get appBarPrimaryContent;
|
||||||
|
|
||||||
// buttons
|
// buttons
|
||||||
|
@override
|
||||||
Color get buttonBackground;
|
Color get buttonBackground;
|
||||||
|
@override
|
||||||
Color get buttonPrimaryContent;
|
Color get buttonPrimaryContent;
|
||||||
|
|
||||||
// bottom tab bar
|
// bottom tab bar
|
||||||
|
@override
|
||||||
Color get bottomTabBarBackground;
|
Color get bottomTabBarBackground;
|
||||||
|
|
||||||
// bottom tab bar - icons
|
// bottom tab bar - icons
|
||||||
|
@override
|
||||||
Color get bottomTabBarIconSelected;
|
Color get bottomTabBarIconSelected;
|
||||||
|
@override
|
||||||
Color get bottomTabBarIconUnselected;
|
Color get bottomTabBarIconUnselected;
|
||||||
|
|
||||||
// bottom tab bar - label
|
// bottom tab bar - label
|
||||||
|
@override
|
||||||
Color get bottomTabBarLabelUnselected;
|
Color get bottomTabBarLabelUnselected;
|
||||||
|
@override
|
||||||
Color get bottomTabBarLabelSelected;
|
Color get bottomTabBarLabelSelected;
|
||||||
|
|
||||||
Color get inputPrimaryContent;
|
Color get inputPrimaryContent;
|
||||||
|
|||||||
@ -27,10 +27,11 @@ class CheckoutSelectCouponWidget extends StatelessWidget {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
bool hasCoupon = checkoutSession.coupon != null;
|
bool hasCoupon = checkoutSession.coupon != null;
|
||||||
return InkWell(
|
return Container(
|
||||||
onTap: _actionCoupon,
|
height: 50,
|
||||||
child: Container(
|
padding: EdgeInsets.symmetric(vertical: 5),
|
||||||
padding: EdgeInsets.symmetric(vertical: 5),
|
child: InkWell(
|
||||||
|
onTap: _actionCoupon,
|
||||||
child: Row(
|
child: Row(
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
|||||||
@ -138,72 +138,69 @@ class CheckoutRowLine extends StatelessWidget {
|
|||||||
final bool showBorderBottom;
|
final bool showBorderBottom;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) => Flexible(
|
Widget build(BuildContext context) => Container(
|
||||||
child: InkWell(
|
height: 125,
|
||||||
child: Container(
|
padding: EdgeInsets.all(8),
|
||||||
height: 125,
|
decoration: showBorderBottom == true
|
||||||
child: Column(
|
? BoxDecoration(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
border: Border(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
bottom: BorderSide(color: Colors.black12, width: 1),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
: BoxDecoration(),
|
||||||
|
child: InkWell(
|
||||||
|
onTap: action,
|
||||||
|
borderRadius: BorderRadius.circular(8),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: <Widget>[
|
||||||
|
Padding(
|
||||||
|
child: Text(
|
||||||
|
heading,
|
||||||
|
style: Theme.of(context)
|
||||||
|
.textTheme
|
||||||
|
.bodyMedium!
|
||||||
|
.copyWith(fontSize: 16, fontWeight: FontWeight.bold),
|
||||||
|
),
|
||||||
|
padding: EdgeInsets.only(bottom: 8),
|
||||||
|
),
|
||||||
|
Flexible(
|
||||||
|
child: Row(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
Padding(
|
|
||||||
child: Text(
|
|
||||||
heading,
|
|
||||||
style: Theme.of(context)
|
|
||||||
.textTheme
|
|
||||||
.bodyMedium!
|
|
||||||
.copyWith(fontSize: 16, fontWeight: FontWeight.bold),
|
|
||||||
),
|
|
||||||
padding: EdgeInsets.only(bottom: 8),
|
|
||||||
),
|
|
||||||
Flexible(
|
Flexible(
|
||||||
child: Row(
|
child: Row(
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
Flexible(
|
leadImage,
|
||||||
child: Row(
|
Expanded(
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
child: Container(
|
||||||
mainAxisAlignment: MainAxisAlignment.start,
|
child: Text(
|
||||||
children: <Widget>[
|
leadTitle!,
|
||||||
leadImage,
|
style:
|
||||||
Expanded(
|
Theme.of(context).textTheme.titleMedium,
|
||||||
child: Container(
|
maxLines: 2,
|
||||||
child: Text(
|
overflow: TextOverflow.ellipsis,
|
||||||
leadTitle!,
|
softWrap: false,
|
||||||
style:
|
),
|
||||||
Theme.of(context).textTheme.titleMedium,
|
padding: EdgeInsets.only(left: 15),
|
||||||
maxLines: 2,
|
margin: EdgeInsets.only(right: 10),
|
||||||
overflow: TextOverflow.ellipsis,
|
|
||||||
softWrap: false,
|
|
||||||
),
|
|
||||||
padding: EdgeInsets.only(left: 15),
|
|
||||||
margin: EdgeInsets.only(right: 10),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Icon(Icons.arrow_forward_ios),
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
)
|
),
|
||||||
|
Icon(Icons.arrow_forward_ios),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
padding: EdgeInsets.all(8),
|
)
|
||||||
decoration: showBorderBottom == true
|
],
|
||||||
? BoxDecoration(
|
),
|
||||||
border: Border(
|
),
|
||||||
bottom: BorderSide(color: Colors.black12, width: 1),
|
);
|
||||||
),
|
|
||||||
)
|
|
||||||
: BoxDecoration(),
|
|
||||||
),
|
|
||||||
onTap: action,
|
|
||||||
borderRadius: BorderRadius.circular(8),
|
|
||||||
),
|
|
||||||
flex: 3,
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class TextEditingRow extends StatelessWidget {
|
class TextEditingRow extends StatelessWidget {
|
||||||
|
|||||||
@ -189,10 +189,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: device_info_plus
|
name: device_info_plus
|
||||||
sha256: "499c61743e13909c13374a8c209075385858c614b9c0f2487b5f9995eeaf7369"
|
sha256: "2c35b6d1682b028e42d07b3aee4b98fa62996c10bc12cb651ec856a80d6a761b"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "9.0.1"
|
version: "9.0.2"
|
||||||
device_info_plus_platform_interface:
|
device_info_plus_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -269,10 +269,10 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: firebase_messaging
|
name: firebase_messaging
|
||||||
sha256: "77d93f897c893fa7c8de433f6950123bd9c56f27fd7f88a032a53102ca23fcee"
|
sha256: "7a09d8c21147f009882a27c96de1918ea283f974d73cb6fae1d234bb9ec18d8b"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "14.6.3"
|
version: "14.6.4"
|
||||||
firebase_messaging_platform_interface:
|
firebase_messaging_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -457,10 +457,10 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: flutter_widget_from_html_core
|
name: flutter_widget_from_html_core
|
||||||
sha256: "77f05cd7a738078dcdbe07741140d58b2fe7509197f3855a91269fb5a90f4bee"
|
sha256: "60485f3c562c46783ea3e6cd344dc3fc2d51444bda42ffc4b8e11abdc10837e1"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.10.1"
|
version: "0.10.2"
|
||||||
fluttertoast:
|
fluttertoast:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -617,18 +617,18 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: nylo_framework
|
name: nylo_framework
|
||||||
sha256: "905f0f013413ab07433b37aeab2ac05865dea0dc7c2cf93336b881cd5eeb32e4"
|
sha256: a10e1ea240e04aa64a90a6170bc2eebd585b9c0f85b1557e323c5a49312add2b
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "5.1.0"
|
version: "5.1.1"
|
||||||
nylo_support:
|
nylo_support:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: nylo_support
|
name: nylo_support
|
||||||
sha256: "7324d3fccb315619a28ce292d15f8ac1150aa6111faddbf1de991305fdf80479"
|
sha256: "09c5eace0c4fa4cef5148b3b7820fd0a8b24154c964c34c1396372315ef815d6"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "5.3.0"
|
version: "5.3.1"
|
||||||
octo_image:
|
octo_image:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -817,10 +817,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: shared_preferences
|
name: shared_preferences
|
||||||
sha256: "16d3fb6b3692ad244a695c0183fca18cf81fd4b821664394a781de42386bf022"
|
sha256: "0344316c947ffeb3a529eac929e1978fcd37c26be4e8468628bac399365a3ca1"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.1"
|
version: "2.2.0"
|
||||||
shared_preferences_android:
|
shared_preferences_android:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -849,10 +849,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: shared_preferences_platform_interface
|
name: shared_preferences_platform_interface
|
||||||
sha256: fb5cf25c0235df2d0640ac1b1174f6466bd311f621574997ac59018a6664548d
|
sha256: "23b052f17a25b90ff2b61aad4cc962154da76fb62848a9ce088efe30d7c50ab1"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.0"
|
version: "2.3.0"
|
||||||
shared_preferences_web:
|
shared_preferences_web:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -1142,10 +1142,10 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: woosignal
|
name: woosignal
|
||||||
sha256: "985313603ad26dbb48420ce1b9029ebec7b6681861bab094c5f89d1710281ac3"
|
sha256: "2daf353de3ff3e6b2087bf886fc9cd66effc8e78e3e1c71eee755ec978204a6b"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.5.0"
|
version: "3.6.1"
|
||||||
wp_json_api:
|
wp_json_api:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
# Official WooSignal App Template for WooCommerce
|
# Official WooSignal App Template for WooCommerce
|
||||||
|
|
||||||
# Label StoreMax
|
# Label StoreMax
|
||||||
# Version: 6.7.0
|
# Version: 6.8.0
|
||||||
# Author: Anthony Gordon
|
# Author: Anthony Gordon
|
||||||
# Homepage: https://woosignal.com
|
# Homepage: https://woosignal.com
|
||||||
# Documentation: https://woosignal.com/docs/app/label-storemax
|
# Documentation: https://woosignal.com/docs/app/label-storemax
|
||||||
@ -29,14 +29,14 @@ dependencies:
|
|||||||
google_fonts: ^4.0.5
|
google_fonts: ^4.0.5
|
||||||
analyzer: ^5.12.0
|
analyzer: ^5.12.0
|
||||||
intl: ^0.18.0
|
intl: ^0.18.0
|
||||||
nylo_framework: ^5.1.0
|
nylo_framework: ^5.1.1
|
||||||
woosignal: ^3.5.0
|
woosignal: ^3.6.1
|
||||||
wp_json_api: ^3.3.2
|
wp_json_api: ^3.3.2
|
||||||
cached_network_image: ^3.2.3
|
cached_network_image: ^3.2.3
|
||||||
package_info_plus: ^4.0.2
|
package_info_plus: ^4.0.2
|
||||||
money_formatter: ^0.0.3
|
money_formatter: ^0.0.3
|
||||||
flutter_web_browser: ^0.17.1
|
flutter_web_browser: ^0.17.1
|
||||||
webview_flutter: ^3.0.4
|
webview_flutter: 3.0.4
|
||||||
pull_to_refresh_flutter3: 2.0.1
|
pull_to_refresh_flutter3: 2.0.1
|
||||||
url_launcher: ^6.1.6
|
url_launcher: ^6.1.6
|
||||||
bubble_tab_indicator: ^0.1.5
|
bubble_tab_indicator: ^0.1.5
|
||||||
@ -46,11 +46,11 @@ dependencies:
|
|||||||
flutter_spinkit: ^5.1.0
|
flutter_spinkit: ^5.1.0
|
||||||
auto_size_text: ^3.0.0
|
auto_size_text: ^3.0.0
|
||||||
html: ^0.15.1
|
html: ^0.15.1
|
||||||
flutter_widget_from_html_core: ^0.10.0
|
flutter_widget_from_html_core: ^0.10.2
|
||||||
flutter_rating_bar: ^4.0.1
|
flutter_rating_bar: ^4.0.1
|
||||||
flutter_staggered_grid_view: ^0.6.2
|
flutter_staggered_grid_view: ^0.6.2
|
||||||
flutter_swiper_view: ^1.1.8
|
flutter_swiper_view: ^1.1.8
|
||||||
firebase_messaging: ^14.6.3
|
firebase_messaging: ^14.6.4
|
||||||
firebase_core: ^2.14.0
|
firebase_core: ^2.14.0
|
||||||
flutter:
|
flutter:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
|
|||||||
@ -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
|
- Change app name, logo, customize default language, currency + more
|
||||||
- Light and dark mode
|
- Light and dark mode
|
||||||
- Theme customization
|
- Theme customization
|
||||||
- Stripe, Cash On Delivery, PayPal
|
- Stripe, Cash On Delivery, PayPal, RazorPay
|
||||||
- Localized for en, es, pt, it, hi, fr, zh, tr, nl
|
- Localized for en, es, pt, it, hi, fr, zh, tr, nl
|
||||||
- Orders show as normal in WooCommerce
|
- Orders show as normal in WooCommerce
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user