From c96e22231acaa56bd7d73fb46803f3d6b3e96ff9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johnny=20S=C3=B8rensen?= Date: Tue, 14 Sep 2021 17:44:58 +0200 Subject: [PATCH] feat: add `platformOverride` in NStackAppOpen widget --- example/lib/main.dart | 1 + example/lib/nstack.dart | 12 +++++++----- lib/nstack.dart | 8 ++++---- lib/src/nstack_builder.dart | 8 +++++--- 4 files changed, 17 insertions(+), 12 deletions(-) diff --git a/example/lib/main.dart b/example/lib/main.dart index 4ce65c5..5d9c236 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -18,6 +18,7 @@ class MainScreen extends StatelessWidget { @override Widget build(BuildContext context) { return NStackAppOpen( + platformOverride: "android", child: Scaffold( appBar: AppBar( title: Text(context.localization.test.testDollarSign), diff --git a/example/lib/nstack.dart b/example/lib/nstack.dart index fd212f8..77088d6 100644 --- a/example/lib/nstack.dart +++ b/example/lib/nstack.dart @@ -29,7 +29,7 @@ class _DefaultSection extends SectionKeyDelegate { class _Test extends SectionKeyDelegate { const _Test(): super('test'); - String get testDollarSign => get('testDollarSign', "\$testing change back"); + String get testDollarSign => get('testDollarSign', "\$testing again"); String get testSingleQuotationMark => get('testSingleQuotationMark', "\'testing\'"); String get testDoubleQuotationMark => get('testDoubleQuotationMark', "\"testing\""); String get testMultipleLines => get('testMultipleLines', "testing\nmultiple\nlines"); @@ -43,7 +43,7 @@ final _languages = [ ]; const _bundledTranslations = { - 'en-EN': r'''{"data":{"default":{"title":"NStack SDK Demo","test":"test"},"test":{"testDollarSign":"$testing change back","testSingleQuotationMark":"'testing'","testDoubleQuotationMark":"\"testing\"","testMultipleLines":"testing\nmultiple\nlines"}},"meta":{"language":{"id":56,"name":"English","locale":"en-EN","direction":"LRM","is_default":false,"is_best_fit":false},"platform":{"id":515,"slug":"mobile"}}}''', + 'en-EN': r'''{"data":{"default":{"title":"NStack SDK Demo","test":"test"},"test":{"testDollarSign":"$testing again","testSingleQuotationMark":"'testing'","testDoubleQuotationMark":"\"testing\"","testMultipleLines":"testing\nmultiple\nlines"}},"meta":{"language":{"id":56,"name":"English","locale":"en-EN","direction":"LRM","is_default":false,"is_best_fit":false},"platform":{"id":515,"slug":"mobile"}}}''', 'de-AT': r'''{"data":{"default":{"title":"NStack SDK Demo","test":"test"},"test":{"testDollarSign":"__testDollarSign","testSingleQuotationMark":"__testSingleQuotationMark","testDoubleQuotationMark":"__testDoubleQuotationMark","testMultipleLines":"__testMultipleLines"}},"meta":{"language":{"id":7,"name":"German (Austria)","locale":"de-AT","direction":"LRM","is_default":false,"is_best_fit":false},"platform":{"id":515,"slug":"mobile"}}}''', }; @@ -90,8 +90,8 @@ class NStackState extends State { await _nstack.changeLocalization(locale).whenComplete(() => setState(() {})); } - Future appOpen(Locale locale) async { - await _nstack.appOpen(locale).whenComplete(() => setState(() {})); + Future appOpen(Locale locale, {String? platformOverride}) async { + await _nstack.appOpen(locale, platformOverride: platformOverride).whenComplete(() => setState(() {})); } @override @@ -105,10 +105,12 @@ class NStackAppOpen extends StatefulWidget { Key? key, required this.child, this.onComplete, + this.platformOverride }) : super(key: key); final Widget child; final VoidCallback? onComplete; + final String? platformOverride; @override _NStackAppOpenState createState() => _NStackAppOpenState(); @@ -121,7 +123,7 @@ class _NStackAppOpenState extends State { Widget build(BuildContext context) { if (!_initializedNStack) { NStackScope.of(context) - .appOpen(Localizations.localeOf(context)) + .appOpen(Localizations.localeOf(context), platformOverride: widget.platformOverride) .whenComplete(() => widget.onComplete?.call()); _initializedNStack = true; } diff --git a/lib/nstack.dart b/lib/nstack.dart index 237ad85..526afeb 100644 --- a/lib/nstack.dart +++ b/lib/nstack.dart @@ -59,7 +59,7 @@ class NStack { ); } - Future _setupAppOpenData() async { + Future _setupAppOpenData(String? platformOverride) async { WidgetsFlutterBinding.ensureInitialized(); final prefs = await SharedPreferences.getInstance(); String projectVersion; @@ -97,7 +97,7 @@ class NStack { } _appOpenData = NStackAppOpenData( - platform: platform, + platform: platformOverride ?? platform, guid: guid, lastUpdated: lastUpdated, oldVersion: projectVersion, @@ -171,14 +171,14 @@ class NStack { } } - Future appOpen(Locale locale) async { + Future appOpen(Locale locale, {String? platformOverride}) async { try { if (_appOpenCalled) { _log("NStack.appOpen() has already been called, returning early..."); return AppOpenResult.success; } - await _setupAppOpenData(); + await _setupAppOpenData(platformOverride); // Has user selected a language in the app? final prefs = await SharedPreferences.getInstance(); diff --git a/lib/src/nstack_builder.dart b/lib/src/nstack_builder.dart index d7230e6..b35112b 100644 --- a/lib/src/nstack_builder.dart +++ b/lib/src/nstack_builder.dart @@ -262,8 +262,8 @@ class NStackState extends State { await _nstack.changeLocalization(locale).whenComplete(() => setState(() {})); } - Future appOpen(Locale locale) async { - await _nstack.appOpen(locale).whenComplete(() => setState(() {})); + Future appOpen(Locale locale, {String? platformOverride}) async { + await _nstack.appOpen(locale, platformOverride: platformOverride).whenComplete(() => setState(() {})); } @override @@ -277,10 +277,12 @@ class NStackAppOpen extends StatefulWidget { Key? key, required this.child, this.onComplete, + this.platformOverride }) : super(key: key); final Widget child; final VoidCallback? onComplete; + final String? platformOverride; @override _NStackAppOpenState createState() => _NStackAppOpenState(); @@ -293,7 +295,7 @@ class _NStackAppOpenState extends State { Widget build(BuildContext context) { if (!_initializedNStack) { NStackScope.of(context) - .appOpen(Localizations.localeOf(context)) + .appOpen(Localizations.localeOf(context), platformOverride: widget.platformOverride) .whenComplete(() => widget.onComplete?.call()); _initializedNStack = true; }