-
-
Notifications
You must be signed in to change notification settings - Fork 9
Description
Hi,
I've come across and issue where the frameStack
is empty on some Android devices. I'm not sure if this an issue for nativescript-vue-navigator
or nativescript-vue
or neither and something else is in my code is causing this issue. But I'll explain anyway and hopefully it'll help others at least.
Starting here
nativescript-vue-navigator/index.js
Lines 73 to 74 in 5f80c73
When this.$navigate
is called we go into its definition at https://github.com/nativescript-vue/nativescript-vue/blob/c0e6f959096e81dd544cee01f8be4cebfd89eb87/platform/nativescript/plugins/navigator-plugin.js#L69.
On line 77 (https://github.com/nativescript-vue/nativescript-vue/blob/c0e6f959096e81dd544cee01f8be4cebfd89eb87/platform/nativescript/plugins/navigator-plugin.js#L77), we call getFrameInstance
. Then go to its definition at https://github.com/nativescript-vue/nativescript-vue/blob/c0e6f959096e81dd544cee01f8be4cebfd89eb87/platform/nativescript/plugins/navigator-plugin.js#L37.
On line 32 (https://github.com/nativescript-vue/nativescript-vue/blob/c0e6f959096e81dd544cee01f8be4cebfd89eb87/platform/nativescript/plugins/navigator-plugin.js#L32), when the result of require('@nativescript/core').Frame.getFrameById(frame)
is undefined
, causing undefined
to be assigned to the frame
variable.
The later call involving frame.id
(https://github.com/nativescript-vue/nativescript-vue/blob/c0e6f959096e81dd544cee01f8be4cebfd89eb87/platform/nativescript/plugins/navigator-plugin.js#L37) throws an error Cannot read property 'id' of undefined
and causes the navigation to never work.
Work around:
/// navigation.mixin.js import { isAndroid } from '@nativescript/core'; import Vue, { navigateTo, NavigationEntryVue } from 'nativescript-vue'; import Component from 'vue-class-component'; @Component export default class NavigationMixin extends Vue { public $navigator_navigate_override( route: string, options: NavigationEntryVue ): navigateTo { if (isAndroid) { // HACK: Android is broken on some devices options = { ...options, frame: { nativeView: { id: options.frame || 'navigator' } } }; } return this.$navigator.navigate(route, { ...options }); } }
Which will get around frame.id
being undefined when the navigator
frame should always be defined when using the nativescript-vue-navigator
plugin.
Possibly associated to: