NativeScript / NativeScript/angular

Outlets freeze when navigate to a nested route from another tab, only on Android

未關閉
#60 0 則留言 1 個 reaction 已指派 0 人 在 GitHub 檢視

還沒有人認領這個 Issue。

bug-pending-triage
主要語言
TypeScript
星號
55
分支
13
平均合併
16 分鐘
30 天內合併 PR
1

描述

Issue Description

Outlets freeze when we navigate to a nested route from another TabView only on Android. We have 5 tabs and 2 of them has nested routes. We use page-router-outlet and native/core TabView component.

Steps to reproduce:
Go to Tab 5 -> drill down 3 levels to the nested route -> click the button to navigate to Tab 2, which takes you to Tab 2 w/o any issues-> Go back to Tab 5, you are on the last screen (nested route) but it freezes. You can't go back or can't do anything on the screen. However on iOS, instead of freezing, it goes all the way back to the main outlet.
So apparently the iOS behavior is the intentional behavior of tabView, because tabView keeps only 1 view alive and it's the main outlets in our case?

Our tabView has the androidTabsPosition="bottom" option and we realized that this sets androidOffscreenTabLimit to 1 automatically, so it means only the current tab is alive. I tried adding the androidOffscreenTabLimit="3" option to the tabView (because we have max 3 level nested navigation on Tab 5) , the tabs are not frozen anymore, BUT now the interface jumps back to the main outlet (just like iOS). Any idea how to solve this ?

Also a side note, this started happening after NativeScript 8 upgrade. We were using bottomnavigationbar with NS7 but we had to change to tabView with NS8. We didn't have any freezing or jumping back to the main outlet issues before the update.

Any insight will be appreciated, thanks so much!

Reproduction

No response

Relevant log output (if applicable)

No response

Environment
node: 14.15.0
npm: 7.6.1
nativescript: 8.1.2

### Dependencies

```json
"dependencies": {
  "@angular/animations": "~13.1.1",
  "@angular/common": "~13.1.1",
  "@angular/compiler": "~13.1.1",
  "@angular/core": "~13.1.1",
  "@angular/forms": "~13.1.1",
  "@angular/platform-browser": "~13.1.1",
  "@angular/platform-browser-dynamic": "~13.1.1",
  "@angular/router": "~13.1.1",
  "@nativescript-community/ui-material-bottomnavigationbar": "^6.2.5",
  "@nativescript/angular": "^13.0.0",
  "@nativescript/core": "~8.1.1",
  "@nativescript/email": "^2.0.5",
  "@nativescript/geolocation": "^8.0.2",
  "@nativescript/theme": "~3.0.1",
  "@nstudio/nativescript-cardview": "^2.0.1",
  "@nstudio/nativescript-floatingactionbutton": "^3.0.4",
  "moment": "^2.29.1",
  "nativescript-mapbox-sdk": "file:../well-finder-smartphone-app-.nativescript-mapbox-sdk/src",
  "nativescript-ripple": "^4.0.1",
  "nativescript-ui-sidedrawer": "^10.0.2",
  "nativescript-windowed-modal": "^7.0.0",
  "rxjs": "~7.4.0",
  "zone.js": "~0.11.4"
},
"devDependencies": {
  "@angular-devkit/build-angular": "~13.1.1",
  "@angular/compiler-cli": "~13.1.1",
  "@nativescript/android": "8.1.1",
  "@nativescript/debug-ios": "^1.0.0",
  "@nativescript/ios": "8.1.0",
  "@nativescript/types": "~8.1.1",
  "@nativescript/webpack": "~5.0.0",
  "@ngtools/webpack": "~13.1.1",
  "@types/geojson": "^7946.0.8",
  "node-sass": "^7.0.1",
  "typescript": "~4.4.4"
}
Please accept these terms

貢獻指南

開啟貢獻指南

從這裡開始

  1. 先讀完整個 Issue,再讀專案的貢獻指南。
  2. 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
  3. Fork 儲存庫,在一個分支上完成修改。
  4. 送出 Pull Request,並在描述裡引用這個 Issue 編號。

研究方向

首先,使用 NativeScript 8.1.2、原生/core TabView、page-router-outlet、五個分頁以及 Android 上的巢狀路由,重現回報的流程。比較 androidOffscreenTabLimit 為 1 和 3 時的情況,然後確認從 Tab 2 返回巢狀的 Tab 5 路由時,既不會凍結,也不會意外返回 main outlet。

由索引模型根據 Issue 內容生成。

評估

技術堆疊
angular, typescript
領域
frontend, mobile-dev
Issue 類型
缺陷
難度
4/5
預估耗時
3-5 天
活躍度
停滯
描述清晰度
基本清楚
新手友好度
35/100

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。