Merge pull request #21 from woosignal/master

5.5.0 - updates
This commit is contained in:
Anthony Gordon 2021-12-17 20:58:41 +00:00 committed by GitHub
commit 4ed12dc24a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
38 changed files with 324 additions and 123 deletions

View File

@ -1,3 +1,12 @@
## [5.5.0] - 2021-12-17
* Change font from WooSignal dashboard
* Change font colors from WooSignal dashboard
* Add social media links from WooSignal dashboard
* Notification stubs added to boot.dart
* Upgrade WooSignal API to v3.0.0
* Pubspec.yaml dependency updates
## [5.4.0] - 2021-12-10 ## [5.4.0] - 2021-12-10
* New localization keys added * New localization keys added

View File

@ -4,7 +4,7 @@
# WooCommerce App: Label StoreMax # WooCommerce App: Label StoreMax
### Label StoreMax - v5.4.0 ### Label StoreMax - v5.5.0
[Official WooSignal WooCommerce App](https://woosignal.com) [Official WooSignal WooCommerce App](https://woosignal.com)

View File

@ -190,5 +190,6 @@
"Please enter a valid billing email": "Bitte geben Sie eine gültige Rechnungs-E-Mail-Adresse ein", "Please enter a valid billing email": "Bitte geben Sie eine gültige Rechnungs-E-Mail-Adresse ein",
"Please enter a valid shipping email": "Bitte geben Sie eine gültige Versand-E-Mail ein", "Please enter a valid shipping email": "Bitte geben Sie eine gültige Versand-E-Mail ein",
"Free postage": "Portofrei", "Free postage": "Portofrei",
"PROCESSING": "WIRD BEARBEITET" "PROCESSING": "WIRD BEARBEITET",
"Social": "Sozial"
} }

View File

@ -190,5 +190,6 @@
"Please enter a valid billing email": "Please enter a valid billing email", "Please enter a valid billing email": "Please enter a valid billing email",
"Please enter a valid shipping email": "Please enter a valid shipping email", "Please enter a valid shipping email": "Please enter a valid shipping email",
"Free postage": "Free postage", "Free postage": "Free postage",
"PROCESSING": "PROCESSING" "PROCESSING": "PROCESSING",
"Social": "Social"
} }

View File

@ -190,5 +190,6 @@
"Please enter a valid billing email": "Ingrese un correo electrónico de facturación válido", "Please enter a valid billing email": "Ingrese un correo electrónico de facturación válido",
"Please enter a valid shipping email": "Ingrese un correo electrónico de envío válido", "Please enter a valid shipping email": "Ingrese un correo electrónico de envío válido",
"Free postage": "Gastos de envío gratis", "Free postage": "Gastos de envío gratis",
"PROCESSING": "PROCESANDO" "PROCESSING": "PROCESANDO",
"Social": "Social"
} }

View File

@ -190,5 +190,6 @@
"Please enter a valid billing email": "Veuillez saisir une adresse e-mail de facturation valide", "Please enter a valid billing email": "Veuillez saisir une adresse e-mail de facturation valide",
"Please enter a valid shipping email": "Veuillez saisir un e-mail de livraison valide", "Please enter a valid shipping email": "Veuillez saisir un e-mail de livraison valide",
"Free postage": "Sans frais de port", "Free postage": "Sans frais de port",
"PROCESSING": "EN TRAITEMENT" "PROCESSING": "EN TRAITEMENT",
"Social": "Social"
} }

View File

@ -190,5 +190,6 @@
"Please enter a valid billing email": "krpaya ek maany biling eemel darj karen", "Please enter a valid billing email": "krpaya ek maany biling eemel darj karen",
"Please enter a valid shipping email": "krpaya ek maany shiping eemel darj karen", "Please enter a valid shipping email": "krpaya ek maany shiping eemel darj karen",
"Free postage": "mupht daak", "Free postage": "mupht daak",
"PROCESSING": "prasanskaran" "PROCESSING": "prasanskaran",
"Social": "saamaajik"
} }

View File

@ -190,5 +190,6 @@
"Please enter a valid billing email": "Si prega di inserire un'e-mail di fatturazione valida", "Please enter a valid billing email": "Si prega di inserire un'e-mail di fatturazione valida",
"Please enter a valid shipping email": "Si prega di inserire un'e-mail di spedizione valida", "Please enter a valid shipping email": "Si prega di inserire un'e-mail di spedizione valida",
"Free postage": "Spedizione gratuita", "Free postage": "Spedizione gratuita",
"PROCESSING": "IN LAVORAZIONE" "PROCESSING": "IN LAVORAZIONE",
"Social": "Sociale"
} }

View File

@ -190,5 +190,6 @@
"Please enter a valid billing email": "Por favor, insira um e-mail de faturamento válido", "Please enter a valid billing email": "Por favor, insira um e-mail de faturamento válido",
"Please enter a valid shipping email": "Por favor, insira um e-mail de envio válido", "Please enter a valid shipping email": "Por favor, insira um e-mail de envio válido",
"Free postage": "Postagem grátis", "Free postage": "Postagem grátis",
"PROCESSING": "EM PROCESSAMENTO" "PROCESSING": "EM PROCESSAMENTO",
"Social": "Social"
} }

View File

@ -190,5 +190,6 @@
"Please enter a valid billing email": "请输入有效的结算电子邮件", "Please enter a valid billing email": "请输入有效的结算电子邮件",
"Please enter a valid shipping email": "请输入有效的送货电子邮件", "Please enter a valid shipping email": "请输入有效的送货电子邮件",
"Free postage": "免邮费", "Free postage": "免邮费",
"PROCESSING": "加工" "PROCESSING": "加工",
"Social": "社会的"
} }

View File

@ -13,5 +13,7 @@ import 'package:flutter/widgets.dart';
class AccountOrderDetailController extends Controller { class AccountOrderDetailController extends Controller {
@override @override
construct(BuildContext context) {} construct(BuildContext context) {
super.construct(context);
}
} }

View File

@ -13,5 +13,7 @@ import 'package:flutter/widgets.dart';
class BrowseCategoryController extends Controller { class BrowseCategoryController extends Controller {
@override @override
construct(BuildContext context) {} construct(BuildContext context) {
super.construct(context);
}
} }

View File

@ -13,5 +13,7 @@ import 'package:flutter/widgets.dart';
class BrowseSearchController extends Controller { class BrowseSearchController extends Controller {
@override @override
construct(BuildContext context) {} construct(BuildContext context) {
super.construct(context);
}
} }

View File

@ -13,5 +13,7 @@ import 'package:flutter/widgets.dart';
class CheckoutStatusController extends Controller { class CheckoutStatusController extends Controller {
@override @override
construct(BuildContext context) {} construct(BuildContext context) {
super.construct(context);
}
} }

View File

@ -8,10 +8,16 @@
// 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/material.dart';
import 'package:nylo_support/controllers/controller.dart'; import 'package:nylo_support/controllers/controller.dart';
/// Base Controller for the Nylo /// Base Controller for the Nylo
/// See more on controllers here - https://nylo.dev/docs/1.x/controllers /// See more on controllers here - https://nylo.dev/docs/2.x/controllers
class Controller extends BaseController { class Controller extends BaseController {
Controller(); Controller();
@override
construct(BuildContext context) {
super.construct(context);
}
} }

View File

@ -16,7 +16,9 @@ import 'package:flutter/widgets.dart';
class ProductDetailController extends Controller { class ProductDetailController extends Controller {
@override @override
construct(BuildContext context) {} construct(BuildContext context) {
super.construct(context);
}
viewExternalProduct(Product product) { viewExternalProduct(Product product) {
if (product.externalUrl != null && product.externalUrl.isNotEmpty) { if (product.externalUrl != null && product.externalUrl.isNotEmpty) {

View File

@ -13,5 +13,7 @@ import 'package:flutter/widgets.dart';
class ProductImageViewerController extends Controller { class ProductImageViewerController extends Controller {
@override @override
construct(BuildContext context) {} construct(BuildContext context) {
super.construct(context);
}
} }

View File

@ -34,7 +34,7 @@ class AppBuild extends StatelessWidget {
Key key, Key key,
this.initialRoute, this.initialRoute,
this.title, this.title,
@required this.locale, this.locale,
this.themeData, this.themeData,
@required this.onGenerateRoute, @required this.onGenerateRoute,
this.navigatorKey, this.navigatorKey,
@ -66,7 +66,7 @@ class AppBuild extends StatelessWidget {
child: ThemeConsumer( child: ThemeConsumer(
child: Builder( child: Builder(
builder: (themeContext) => ValueListenableBuilder( builder: (themeContext) => ValueListenableBuilder(
valueListenable: ValueNotifier(locale), valueListenable: ValueNotifier(locale ?? NyLocalization.instance.locale),
builder: (context, Locale locale, _) => MaterialApp( builder: (context, Locale locale, _) => MaterialApp(
navigatorKey: navigatorKey, navigatorKey: navigatorKey,
themeMode: themeMode, themeMode: themeMode,

View File

@ -0,0 +1,76 @@
// import 'package:firebase_core/firebase_core.dart';
// import 'package:firebase_messaging/firebase_messaging.dart';
// import 'package:flutter_app/firebase_options.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_app/bootstrap/app_helper.dart';
import 'package:flutter_app/bootstrap/helpers.dart';
import 'package:flutter_app/config/app_localization.dart';
import 'package:nylo_framework/nylo_framework.dart';
import 'package:woosignal/models/response/woosignal_app.dart';
import 'package:woosignal/woosignal.dart';
import 'package:wp_json_api/wp_json_api.dart';
/// boot application
Future<void> boot() async {
await SystemChrome.setPreferredOrientations([
DeviceOrientation.portraitUp,
]);
await WooSignal.instance.init(appKey: getEnv('APP_KEY'), debugMode: getEnv('APP_DEBUG'));
// Notifications
/// await Firebase.initializeApp(
/// options: DefaultFirebaseOptions.currentPlatform,
/// );
///
/// FirebaseMessaging messaging = FirebaseMessaging.instance;
///
/// NotificationSettings settings = await messaging.requestPermission(
/// alert: true,
/// announcement: false,
/// badge: true,
/// carPlay: false,
/// criticalAlert: false,
/// provisional: false,
/// sound: true,
/// );
///
/// if (settings.authorizationStatus == AuthorizationStatus.authorized) {
/// String token = await messaging.getToken();
/// WooSignal.instance.setFcmToken(token);
/// AppHelper.instance.fcmToken = token;
/// }
// WooSignal Setup
WooSignalApp wooSignalApp = await appWooSignal((api) => api.getApp());
Locale locale = Locale('en');
if (wooSignalApp != null) {
AppHelper.instance.appConfig = wooSignalApp;
if (wooSignalApp.wpLoginEnabled == 1) {
WPJsonAPI.instance.initWith(
baseUrl: wooSignalApp.wpLoginBaseUrl,
shouldDebug: getEnv('APP_DEBUG'),
wpJsonPath: wooSignalApp.wpLoginWpApiPath,
);
}
if (getEnv('DEFAULT_LOCALE', defaultValue: null) == null && wooSignalApp.locale != null) {
locale = Locale(wooSignalApp.locale);
} else {
locale = Locale(envVal('DEFAULT_LOCALE', defaultValue: 'en'));
}
}
/// NyLocalization
await NyLocalization.instance.init(
localeType: localeType,
languageCode: locale.languageCode,
languagesList: languagesList,
assetsDirectory: assetsDirectory,
valuesAsMap: valuesAsMap
);
}

View File

@ -45,11 +45,7 @@ Future<User> getUser() async =>
(await NyStorage.read<User>(SharedKey.authUser, model: User())); (await NyStorage.read<User>(SharedKey.authUser, model: User()));
appWooSignal(Function(WooSignal) api) async { appWooSignal(Function(WooSignal) api) async {
WooSignal wooSignal = await WooSignal.getInstance(config: { return await api(WooSignal.instance);
"appKey": getEnv('APP_KEY'),
"debugMode": getEnv('APP_DEBUG', defaultValue: true)
});
return await api(wooSignal);
} }
/// helper to find correct color from the [context]. /// helper to find correct color from the [context].

View File

@ -1,10 +0,0 @@
import 'package:flutter/services.dart';
/// boot application
Future<void> boot() async {
await SystemChrome.setPreferredOrientations([
DeviceOrientation.portraitUp,
]);
}

View File

@ -3,7 +3,7 @@
| CURRENCY | CURRENCY
| |
| Configure which currency you want to use. | Configure which currency you want to use.
| Docs here: https://woosignal.com/docs/app/ios/label-storemax | Docs here: https://woosignal.com/docs/app/label-storemax
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
*/ */

View File

@ -13,7 +13,7 @@ import 'package:google_fonts/google_fonts.dart';
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
*/ */
final TextStyle appFont = GoogleFonts.poppins(); TextStyle appFont = GoogleFonts.poppins();
// e.g. custom font in pubspec.yaml - https://flutter.dev/docs/cookbook/design/fonts // e.g. custom font in pubspec.yaml - https://flutter.dev/docs/cookbook/design/fonts
// final TextStyle appThemeFont = TextStyle(fontFamily: "ZenTokyoZoo"); // final TextStyle appThemeFont = TextStyle(fontFamily: "ZenTokyoZoo");

View File

@ -9,7 +9,7 @@ import 'package:flutter_app/bootstrap/helpers.dart';
| PAYMENT GATEWAYS | PAYMENT GATEWAYS
| |
| Configure which payment gateways you want to use. | Configure which payment gateways you want to use.
| Docs here: https://woosignal.com/docs/app/ios/label-storemax | Docs here: https://woosignal.com/docs/app/label-storemax
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
*/ */

View File

@ -1,52 +1,20 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_app/bootstrap/app.dart'; import 'package:flutter_app/bootstrap/app.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/boot.dart';
import 'package:flutter_app/bootstrap/setup.dart';
import 'package:flutter_app/config/app_localization.dart';
import 'package:flutter_app/routes/router.dart'; import 'package:flutter_app/routes/router.dart';
import 'package:nylo_framework/nylo_framework.dart'; import 'package:nylo_framework/nylo_framework.dart';
import 'package:woosignal/models/response/woosignal_app.dart';
import 'package:wp_json_api/wp_json_api.dart';
void main() async { void main() async {
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
Nylo nylo = await Nylo.init(router: appRouter(), setup: boot); Nylo nylo = await Nylo.init(router: appRouter(), setup: boot);
String initialRoute = '/no-connection'; String initialRoute = AppHelper.instance.appConfig != null ? '/home' : '/no-connection';
WooSignalApp wooSignalApp = await appWooSignal((api) => api.getApp());
Locale locale;
if (wooSignalApp != null) {
initialRoute = "/home";
AppHelper.instance.appConfig = wooSignalApp;
AppHelper.instance.themeType = wooSignalApp.theme;
if (wooSignalApp.wpLoginEnabled == 1) {
WPJsonAPI.instance.initWith(
baseUrl: wooSignalApp.wpLoginBaseUrl,
shouldDebug: (wooSignalApp.appDebug == 1),
wpJsonPath: wooSignalApp.wpLoginWpApiPath,
);
}
locale = Locale((getEnv('DEFAULT_LOCALE', defaultValue: null) == null && wooSignalApp.locale != null) ? wooSignalApp.locale : envVal('DEFAULT_LOCALE', defaultValue: 'en'));
}
/// NyLocalization
await NyLocalization.instance.init(
localeType: localeType,
languageCode: locale != null ? locale.languageCode : Locale(getEnv('DEFAULT_LOCALE', defaultValue: 'en')),
languagesList: languagesList,
assetsDirectory: assetsDirectory,
valuesAsMap: valuesAsMap
);
runApp( runApp(
AppBuild( AppBuild(
navigatorKey: nylo.router.navigatorKey, navigatorKey: nylo.router.navigatorKey,
onGenerateRoute: nylo.router.generator(), onGenerateRoute: nylo.router.generator(),
locale: locale,
initialRoute: initialRoute, initialRoute: initialRoute,
debugShowCheckedModeBanner: false, debugShowCheckedModeBanner: false,
), ),

View File

@ -9,6 +9,8 @@
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
import 'dart:math';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_app/app/models/user.dart'; import 'package:flutter_app/app/models/user.dart';
import 'package:flutter_app/bootstrap/app_helper.dart'; import 'package:flutter_app/bootstrap/app_helper.dart';
@ -18,7 +20,6 @@ import 'package:flutter_app/resources/widgets/buttons.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';
import 'package:woosignal/helpers/shared_pref.dart';
import 'package:woosignal/models/response/woosignal_app.dart'; import 'package:woosignal/models/response/woosignal_app.dart';
import 'package:wp_json_api/exceptions/empty_username_exception.dart'; import 'package:wp_json_api/exceptions/empty_username_exception.dart';
import 'package:wp_json_api/exceptions/existing_user_email_exception.dart'; import 'package:wp_json_api/exceptions/existing_user_email_exception.dart';
@ -176,7 +177,7 @@ class _AccountRegistrationPageState extends State<AccountRegistrationPage> {
}); });
String username = String username =
(email.replaceAll(new RegExp(r'([@.])'), "")) + randomStr(4); (email.replaceAll(new RegExp(r'([@.])'), "")) + _randomStr(4);
WPUserRegisterResponse wpUserRegisterResponse; WPUserRegisterResponse wpUserRegisterResponse;
try { try {
@ -265,13 +266,23 @@ class _AccountRegistrationPageState extends State<AccountRegistrationPage> {
); );
} }
String _randomStr(int strLen) {
const chars = "abcdefghijklmnopqrstuvwxyz0123456789";
Random rnd = Random(DateTime.now().millisecondsSinceEpoch);
String result = "";
for (var i = 0; i < strLen; i++) {
result += chars[rnd.nextInt(chars.length)];
}
return result;
}
void _viewTermsConditions() { void _viewTermsConditions() {
Navigator.pop(context); Navigator.pop(context);
openBrowserTab(url: _wooSignalApp.appTermslink); openBrowserTab(url: _wooSignalApp.appTermsLink);
} }
void _viewPrivacyPolicy() { void _viewPrivacyPolicy() {
Navigator.pop(context); Navigator.pop(context);
openBrowserTab(url: _wooSignalApp.appPrivacylink); openBrowserTab(url: _wooSignalApp.appPrivacyLink);
} }
} }

View File

@ -1,8 +1,10 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_app/bootstrap/app_helper.dart';
import 'package:flutter_app/config/app_font.dart'; import 'package:flutter_app/config/app_font.dart';
import 'package:flutter_app/resources/themes/styles/base_styles.dart'; import 'package:flutter_app/resources/themes/styles/base_styles.dart';
import 'package:flutter_app/resources/themes/text_theme/default_text_theme.dart'; import 'package:flutter_app/resources/themes/text_theme/default_text_theme.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:nylo_framework/nylo_framework.dart'; import 'package:nylo_framework/nylo_framework.dart';
/* /*
@ -14,6 +16,14 @@ import 'package:nylo_framework/nylo_framework.dart';
*/ */
ThemeData darkTheme(BaseColorStyles darkColors) { ThemeData darkTheme(BaseColorStyles darkColors) {
try {
appFont = GoogleFonts.getFont(AppHelper.instance.appConfig.themeFont ?? "Poppins");
} on Exception catch(e) {
if (getEnv('APP_DEBUG') == true) {
NyLogger.error(e.toString());
}
}
TextTheme darkTheme = TextTheme darkTheme =
getAppTextTheme(appFont, defaultTextTheme.merge(_darkTextTheme(darkColors))); getAppTextTheme(appFont, defaultTextTheme.merge(_darkTextTheme(darkColors)));
return ThemeData( return ThemeData(

View File

@ -1,8 +1,10 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_app/bootstrap/app_helper.dart';
import 'package:flutter_app/config/app_font.dart'; import 'package:flutter_app/config/app_font.dart';
import 'package:flutter_app/resources/themes/styles/base_styles.dart'; import 'package:flutter_app/resources/themes/styles/base_styles.dart';
import 'package:flutter_app/resources/themes/text_theme/default_text_theme.dart'; import 'package:flutter_app/resources/themes/text_theme/default_text_theme.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:nylo_framework/nylo_framework.dart'; import 'package:nylo_framework/nylo_framework.dart';
/* /*
@ -14,6 +16,14 @@ import 'package:nylo_framework/nylo_framework.dart';
*/ */
ThemeData lightTheme(BaseColorStyles lightColors) { ThemeData lightTheme(BaseColorStyles lightColors) {
try {
appFont = GoogleFonts.getFont(AppHelper.instance.appConfig.themeFont ?? "Poppins");
} on Exception catch(e) {
if (getEnv('APP_DEBUG') == true) {
NyLogger.error(e.toString());
}
}
TextTheme lightTheme = TextTheme lightTheme =
getAppTextTheme(appFont, defaultTextTheme.merge(_lightTextTheme(lightColors))); getAppTextTheme(appFont, defaultTextTheme.merge(_lightTextTheme(lightColors)));

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_app/bootstrap/app_helper.dart';
import 'package:flutter_app/resources/themes/styles/base_styles.dart'; import 'package:flutter_app/resources/themes/styles/base_styles.dart';
/* /*
@ -9,24 +10,24 @@ import 'package:flutter_app/resources/themes/styles/base_styles.dart';
class DarkThemeColors implements BaseColorStyles { class DarkThemeColors implements BaseColorStyles {
// general // general
Color get background => const Color(0xFF212121); Color get background => Color(int.parse(AppHelper.instance.appConfig.themeColors['dark']['background']));
Color get backgroundContainer => const Color(0xFF4a4a4a); Color get backgroundContainer => const Color(0xFF4a4a4a);
Color get primaryContent => const Color(0xFFE1E1E1); Color get primaryContent => Color(int.parse(AppHelper.instance.appConfig.themeColors['dark']['primary_text']));
Color get primaryAccent => const Color(0xFF818181); Color get primaryAccent => const Color(0xFF818181);
Color get surfaceBackground => Color(0xFF818181); Color get surfaceBackground => Color(0xFF818181);
Color get surfaceContent => Colors.black; Color get surfaceContent => Colors.black;
// app bar // app bar
Color get appBarBackground => const Color(0xFF2C2C2C); Color get appBarBackground => Color(int.parse(AppHelper.instance.appConfig.themeColors['dark']['app_bar_background']));
Color get appBarPrimaryContent => Colors.white; Color get appBarPrimaryContent => Color(int.parse(AppHelper.instance.appConfig.themeColors['dark']['app_bar_text']));
Color get inputPrimaryContent => Colors.white; Color get inputPrimaryContent => Colors.white;
// buttons // buttons
Color get buttonBackground => Colors.white60; Color get buttonBackground => Color(int.parse(AppHelper.instance.appConfig.themeColors['dark']['button_background']));
Color get buttonPrimaryContent => const Color(0xFF232c33); Color get buttonPrimaryContent => Color(int.parse(AppHelper.instance.appConfig.themeColors['dark']['button_text']));
// bottom tab bar // bottom tab bar
Color get bottomTabBarBackground => const Color(0xFF232c33); Color get bottomTabBarBackground => const Color(0xFF232c33);

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_app/bootstrap/app_helper.dart';
import 'package:flutter_app/resources/themes/styles/base_styles.dart'; import 'package:flutter_app/resources/themes/styles/base_styles.dart';
/* /*
@ -9,23 +10,24 @@ import 'package:flutter_app/resources/themes/styles/base_styles.dart';
class LightThemeColors implements BaseColorStyles { class LightThemeColors implements BaseColorStyles {
// general // general
Color get background => const Color(0xFFFFFFFF);
Color get background => Color(int.parse(AppHelper.instance.appConfig.themeColors['light']['background']));
Color get backgroundContainer => Colors.white; Color get backgroundContainer => Colors.white;
Color get primaryContent => const Color(0xFF000000); Color get primaryContent => Color(int.parse(AppHelper.instance.appConfig.themeColors['light']['primary_text']));
Color get primaryAccent => const Color(0xFF87c694); Color get primaryAccent => const Color(0xFF87c694);
Color get surfaceBackground => Colors.white; Color get surfaceBackground => Colors.white;
Color get surfaceContent => Colors.black; Color get surfaceContent => Colors.black;
// app bar // app bar
Color get appBarBackground => Colors.white; Color get appBarBackground => Color(int.parse(AppHelper.instance.appConfig.themeColors['light']['app_bar_background']));
Color get appBarPrimaryContent => const Color(0xFF3a3d40); Color get appBarPrimaryContent => Color(int.parse(AppHelper.instance.appConfig.themeColors['light']['app_bar_text']));
Color get inputPrimaryContent => Colors.black; Color get inputPrimaryContent => Colors.black;
// buttons // buttons
Color get buttonBackground => const Color(0xFF529cda); Color get buttonBackground => Color(int.parse(AppHelper.instance.appConfig.themeColors['light']['button_background']));
Color get buttonPrimaryContent => Colors.white; Color get buttonPrimaryContent => Color(int.parse(AppHelper.instance.appConfig.themeColors['light']['button_text']));
// bottom tab bar // bottom tab bar
Color get bottomTabBarBackground => Colors.white; Color get bottomTabBarBackground => Colors.white;

View File

@ -10,6 +10,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_app/bootstrap/app_helper.dart';
import 'package:flutter_app/bootstrap/helpers.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:flutter_app/resources/widgets/app_version_widget.dart'; import 'package:flutter_app/resources/widgets/app_version_widget.dart';
@ -17,6 +18,7 @@ import 'package:flutter_app/resources/widgets/woosignal_ui.dart';
import 'package:nylo_framework/theme/helper/ny_theme.dart'; import 'package:nylo_framework/theme/helper/ny_theme.dart';
import 'package:nylo_support/helpers/helper.dart'; import 'package:nylo_support/helpers/helper.dart';
import 'package:woosignal/models/response/woosignal_app.dart'; import 'package:woosignal/models/response/woosignal_app.dart';
import 'package:url_launcher/url_launcher.dart';
class HomeDrawerWidget extends StatefulWidget { class HomeDrawerWidget extends StatefulWidget {
const HomeDrawerWidget({Key key, @required this.wooSignalApp}) const HomeDrawerWidget({Key key, @required this.wooSignalApp})
@ -29,6 +31,16 @@ class HomeDrawerWidget extends StatefulWidget {
} }
class _HomeDrawerWidgetState extends State<HomeDrawerWidget> { class _HomeDrawerWidgetState extends State<HomeDrawerWidget> {
Map<String, dynamic> _socialLinks = {};
@override
void initState() {
super.initState();
_socialLinks = AppHelper.instance.appConfig.socialLinks ?? {};
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
bool isDark = (Theme.of(context).brightness == Brightness.dark); bool isDark = (Theme.of(context).brightness == Brightness.dark);
@ -66,7 +78,7 @@ class _HomeDrawerWidgetState extends State<HomeDrawerWidget> {
leading: Icon(Icons.shopping_cart), leading: Icon(Icons.shopping_cart),
onTap: _actionCart, onTap: _actionCart,
), ),
if (widget.wooSignalApp.appTermslink != null && widget.wooSignalApp.appPrivacylink != null) if (widget.wooSignalApp.appTermsLink != null && widget.wooSignalApp.appPrivacyLink != null)
Padding( Padding(
child: Text( child: Text(
trans("About Us"), trans("About Us"),
@ -74,8 +86,8 @@ class _HomeDrawerWidgetState extends State<HomeDrawerWidget> {
), ),
padding: EdgeInsets.only(left: 16, top: 8, bottom: 8), padding: EdgeInsets.only(left: 16, top: 8, bottom: 8),
), ),
if (widget.wooSignalApp.appTermslink != null && if (widget.wooSignalApp.appTermsLink != null &&
widget.wooSignalApp.appTermslink.isNotEmpty) widget.wooSignalApp.appTermsLink.isNotEmpty)
ListTile( ListTile(
title: Text(trans("Terms and conditions"), title: Text(trans("Terms and conditions"),
style: Theme.of(context).textTheme.bodyText2.copyWith( style: Theme.of(context).textTheme.bodyText2.copyWith(
@ -85,8 +97,8 @@ class _HomeDrawerWidgetState extends State<HomeDrawerWidget> {
trailing: Icon(Icons.keyboard_arrow_right_rounded), trailing: Icon(Icons.keyboard_arrow_right_rounded),
onTap: _actionTerms, onTap: _actionTerms,
), ),
if (widget.wooSignalApp.appPrivacylink != null && if (widget.wooSignalApp.appPrivacyLink != null &&
widget.wooSignalApp.appPrivacylink.isNotEmpty) widget.wooSignalApp.appPrivacyLink.isNotEmpty)
ListTile( ListTile(
title: Text(trans("Privacy policy"), style: Theme.of(context).textTheme.bodyText2.copyWith( title: Text(trans("Privacy policy"), style: Theme.of(context).textTheme.bodyText2.copyWith(
fontSize: 16 fontSize: 16
@ -109,6 +121,26 @@ class _HomeDrawerWidgetState extends State<HomeDrawerWidget> {
}); });
}, },
), ),
if (_socialLinks.isNotEmpty)
Padding(
child: Text(
trans("Social"),
style: Theme.of(context).textTheme.subtitle2,
),
padding: EdgeInsets.only(left: 16, top: 8, bottom: 8),
),
..._socialLinks.entries.where((element) => element != null && element.value != "").map((socialLink) => ListTile(
title: Text(
capitalize(socialLink.key),
style: Theme.of(context).textTheme.bodyText2.copyWith(
fontSize: 16
)
),
leading: Image.asset(getImageAsset(socialLink.key) + '.png', height: 25, width: 25),
onTap: () async {
await launch(socialLink.value);
},
)).toList(),
ListTile( ListTile(
title: AppVersionWidget(), title: AppVersionWidget(),
), ),
@ -118,9 +150,9 @@ class _HomeDrawerWidgetState extends State<HomeDrawerWidget> {
); );
} }
_actionTerms() => openBrowserTab(url: widget.wooSignalApp.appTermslink); _actionTerms() => openBrowserTab(url: widget.wooSignalApp.appTermsLink);
_actionPrivacy() => openBrowserTab(url: widget.wooSignalApp.appPrivacylink); _actionPrivacy() => openBrowserTab(url: widget.wooSignalApp.appPrivacyLink);
_actionProfile() async { _actionProfile() async {
Navigator.pop(context); Navigator.pop(context);
@ -136,4 +168,6 @@ class _HomeDrawerWidgetState extends State<HomeDrawerWidget> {
Navigator.pop(context); Navigator.pop(context);
Navigator.pushNamed(context, "/cart"); Navigator.pushNamed(context, "/cart");
} }
String capitalize(String s) => s[0].toUpperCase() + s.substring(1);
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

View File

@ -70,7 +70,7 @@ packages:
name: cached_network_image name: cached_network_image
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.1.0+1" version: "3.2.0"
cached_network_image_platform_interface: cached_network_image_platform_interface:
dependency: transitive dependency: transitive
description: description:
@ -154,7 +154,7 @@ packages:
name: device_info name: device_info
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.2" version: "2.0.3"
device_info_platform_interface: device_info_platform_interface:
dependency: transitive dependency: transitive
description: description:
@ -168,7 +168,7 @@ packages:
name: dio name: dio
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "4.0.1" version: "4.0.4"
fake_async: fake_async:
dependency: transitive dependency: transitive
description: description:
@ -222,7 +222,7 @@ packages:
name: flutter_cache_manager name: flutter_cache_manager
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.1.2" version: "3.3.0"
flutter_dotenv: flutter_dotenv:
dependency: transitive dependency: transitive
description: description:
@ -461,14 +461,14 @@ packages:
name: nylo_framework name: nylo_framework
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.1.1" version: "2.1.3"
nylo_support: nylo_support:
dependency: transitive dependency: transitive
description: description:
name: nylo_support name: nylo_support
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.2.1" version: "2.3.1"
octo_image: octo_image:
dependency: transitive dependency: transitive
description: description:
@ -615,6 +615,20 @@ packages:
name: shared_preferences name: shared_preferences
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.11"
shared_preferences_android:
dependency: transitive
description:
name: shared_preferences_android
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.9"
shared_preferences_ios:
dependency: transitive
description:
name: shared_preferences_ios
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.8" version: "2.0.8"
shared_preferences_linux: shared_preferences_linux:
dependency: transitive dependency: transitive
@ -768,6 +782,62 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.3.0" version: "1.3.0"
url_launcher:
dependency: "direct main"
description:
name: url_launcher
url: "https://pub.dartlang.org"
source: hosted
version: "6.0.17"
url_launcher_android:
dependency: transitive
description:
name: url_launcher_android
url: "https://pub.dartlang.org"
source: hosted
version: "6.0.13"
url_launcher_ios:
dependency: transitive
description:
name: url_launcher_ios
url: "https://pub.dartlang.org"
source: hosted
version: "6.0.13"
url_launcher_linux:
dependency: transitive
description:
name: url_launcher_linux
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.2"
url_launcher_macos:
dependency: transitive
description:
name: url_launcher_macos
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.2"
url_launcher_platform_interface:
dependency: transitive
description:
name: url_launcher_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.4"
url_launcher_web:
dependency: transitive
description:
name: url_launcher_web
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.5"
url_launcher_windows:
dependency: transitive
description:
name: url_launcher_windows
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.2"
uuid: uuid:
dependency: transitive dependency: transitive
description: description:
@ -837,7 +907,7 @@ packages:
name: woosignal name: woosignal
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.2.1" version: "3.0.0"
wp_json_api: wp_json_api:
dependency: "direct main" dependency: "direct main"
description: description:

View File

@ -1,7 +1,7 @@
# Official WooSignal App Template for WooCommerce # Official WooSignal App Template for WooCommerce
# Label StoreMax # Label StoreMax
# Version: 5.4.0 # Version: 5.5.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,11 +29,11 @@ dependencies:
analyzer: ^1.5.0 analyzer: ^1.5.0
intl: ^0.17.0 intl: ^0.17.0
page_transition: ^2.0.4 page_transition: ^2.0.4
nylo_framework: ^2.1.1 nylo_framework: ^2.1.3
woosignal: ^2.2.1 woosignal: ^3.0.0
flutter_stripe: ^2.0.2 flutter_stripe: ^2.0.2
wp_json_api: ^3.1.3 wp_json_api: ^3.1.3
cached_network_image: ^3.1.0+1 cached_network_image: ^3.2.0
package_info: ^2.0.2 package_info: ^2.0.2
money_formatter: ^0.0.3 money_formatter: ^0.0.3
platform_alert_dialog: ^1.0.0+2 platform_alert_dialog: ^1.0.0+2
@ -41,6 +41,7 @@ dependencies:
webview_flutter: ^2.3.1 webview_flutter: ^2.3.1
pull_to_refresh: 2.0.0 pull_to_refresh: 2.0.0
flutter_swiper: ^1.1.6 flutter_swiper: ^1.1.6
url_launcher: ^6.0.17
flutter_styled_toast: ^2.0.0 flutter_styled_toast: ^2.0.0
animate_do: ^2.0.0 animate_do: ^2.0.0
bubble_tab_indicator: ^0.1.5 bubble_tab_indicator: ^0.1.5
@ -52,6 +53,8 @@ dependencies:
auto_size_text: ^3.0.0 auto_size_text: ^3.0.0
html: ^0.15.0 html: ^0.15.0
flutter_staggered_grid_view: ^0.4.1 flutter_staggered_grid_view: ^0.4.1
# firebase_messaging: ^11.2.3
# firebase_core: ^1.10.5
flutter: flutter:
sdk: flutter sdk: flutter
flutter_localizations: flutter_localizations:
@ -84,13 +87,8 @@ flutter:
# To add assets to your application, add an assets section, like this: # To add assets to your application, add an assets section, like this:
assets: assets:
- public/assets/fonts/ - public/assets/fonts/
- public/assets/images/camion.gif - public/
- public/assets/images/credit_cards.png - public/assets/json/
- public/assets/images/shipping_icon.png - public/assets/images/
- public/assets/images/dark_powered_by_stripe.png
- public/assets/images/cash_on_delivery.jpeg
- public/assets/images/razorpay.png
- public/assets/images/paypal_logo.png
- public/assets/json/default_shipping.json
- lang/ - lang/
- .env - .env

View File

@ -4,7 +4,7 @@
# WooCommerce App: Label StoreMax # WooCommerce App: Label StoreMax
### Label StoreMax - v5.4.0 ### Label StoreMax - v5.5.0
[Official WooSignal WooCommerce App](https://woosignal.com) [Official WooSignal WooCommerce App](https://woosignal.com)