@@ -249,8 +249,10 @@ class NStackScope extends InheritedWidget {
249249
250250class NStackWidget extends StatefulWidget {
251251 final Widget child;
252+ final AppOpenPlatform? platformOverride;
253+ final VoidCallback? onComplete;
252254
253- const NStackWidget({Key? key, required Widget child})
255+ const NStackWidget({Key? key, required Widget child, this.platformOverride, this.onComplete })
254256 : child = child,
255257 super(key: key);
256258
@@ -260,55 +262,38 @@ class NStackWidget extends StatefulWidget {
260262
261263class NStackState extends State<NStackWidget> {
262264 final NStack<Localization> nstack = _nstack;
265+ bool _initializedNStack = false;
266+
267+ late Future<bool> _nstackInitFuture;
263268
264269 @override
265270 void initState() {
266271 super.initState();
267- _nstack.initClientLocale ();
272+ _nstackInitFuture = _nstack.init ();
268273 }
269274
270275 changeLanguage(Locale locale) async {
271276 await _nstack.changeLocalization(locale).whenComplete(() => setState(() {}));
272277 }
273278
274- Future<void> appOpen(Locale locale, {AppOpenPlatform? platformOverride}) async {
275- await _nstack.appOpen(locale, platformOverride: platformOverride).whenComplete(() => setState(() {}));
276- }
277-
278- @override
279- Widget build(BuildContext context) {
280- return NStackScope(child: widget.child, state: this, nstack: this.nstack, checksum: nstack.checksum,);
281- }
282- }
283-
284- class NStackAppOpen extends StatefulWidget {
285- const NStackAppOpen({
286- Key? key,
287- required this.child,
288- this.onComplete,
289- this.platformOverride
290- }) : super(key: key);
291-
292- final Widget child;
293- final VoidCallback? onComplete;
294- final AppOpenPlatform? platformOverride;
295-
296- @override
297- _NStackAppOpenState createState() => _NStackAppOpenState();
298- }
299-
300- class _NStackAppOpenState extends State<NStackAppOpen> {
301- bool _initializedNStack = false;
302-
303279 @override
304280 Widget build(BuildContext context) {
305281 if (!_initializedNStack) {
306- NStackScope.of(context)
282+ _nstack
307283 .appOpen(Localizations.localeOf(context), platformOverride: widget.platformOverride)
308284 .whenComplete(() => widget.onComplete?.call());
309285 _initializedNStack = true;
310286 }
311- return widget.child;
287+
288+ return FutureBuilder(
289+ future: _nstackInitFuture,
290+ builder: (context, snapshot) {
291+ if(snapshot.connectionState == ConnectionState.done) {
292+ return NStackScope(child: widget.child, state: this, nstack: this.nstack, checksum: nstack.checksum,);
293+ } else {
294+ return SizedBox();
295+ }
296+ });
312297 }
313298}
314299
0 commit comments