Skip to content

Commit

Permalink
feat: add platformOverride in NStackAppOpen widget
Browse files Browse the repository at this point in the history
  • Loading branch information
johsoe committed Sep 14, 2021
1 parent 0117f3e commit c96e222
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 12 deletions.
1 change: 1 addition & 0 deletions example/lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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),
Expand Down
12 changes: 7 additions & 5 deletions example/lib/nstack.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand All @@ -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"}}}''',
};

Expand Down Expand Up @@ -90,8 +90,8 @@ class NStackState extends State<NStackWidget> {
await _nstack.changeLocalization(locale).whenComplete(() => setState(() {}));
}

Future<void> appOpen(Locale locale) async {
await _nstack.appOpen(locale).whenComplete(() => setState(() {}));
Future<void> appOpen(Locale locale, {String? platformOverride}) async {
await _nstack.appOpen(locale, platformOverride: platformOverride).whenComplete(() => setState(() {}));
}

@override
Expand All @@ -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();
Expand All @@ -121,7 +123,7 @@ class _NStackAppOpenState extends State<NStackAppOpen> {
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;
}
Expand Down
8 changes: 4 additions & 4 deletions lib/nstack.dart
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ class NStack<T> {
);
}

Future<void> _setupAppOpenData() async {
Future<void> _setupAppOpenData(String? platformOverride) async {
WidgetsFlutterBinding.ensureInitialized();
final prefs = await SharedPreferences.getInstance();
String projectVersion;
Expand Down Expand Up @@ -97,7 +97,7 @@ class NStack<T> {
}

_appOpenData = NStackAppOpenData(
platform: platform,
platform: platformOverride ?? platform,
guid: guid,
lastUpdated: lastUpdated,
oldVersion: projectVersion,
Expand Down Expand Up @@ -171,14 +171,14 @@ class NStack<T> {
}
}

Future<AppOpenResult> appOpen(Locale locale) async {
Future<AppOpenResult> 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();
Expand Down
8 changes: 5 additions & 3 deletions lib/src/nstack_builder.dart
Original file line number Diff line number Diff line change
Expand Up @@ -262,8 +262,8 @@ class NStackState extends State<NStackWidget> {
await _nstack.changeLocalization(locale).whenComplete(() => setState(() {}));
}
Future<void> appOpen(Locale locale) async {
await _nstack.appOpen(locale).whenComplete(() => setState(() {}));
Future<void> appOpen(Locale locale, {String? platformOverride}) async {
await _nstack.appOpen(locale, platformOverride: platformOverride).whenComplete(() => setState(() {}));
}
@override
Expand All @@ -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();
Expand All @@ -293,7 +295,7 @@ class _NStackAppOpenState extends State<NStackAppOpen> {
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;
}
Expand Down

0 comments on commit c96e222

Please sign in to comment.