---
# System prepended metadata

title: 月言錢包 消解DialogPage v1.3
tags: [mooneen wallet]

---

# 月言錢包 消解DialogPage v1.3

[toc]

## ✅消解DialogPage
因原先專案內的路由方式，是用類似Dialog 的方式達成，但這樣的做法會讓Navigator 難以追蹤、全事件的彈窗顯示在Dialog 底下、路由結構不明確

故需要將使用Dialog Push 的頁面Route 邏輯重新爬梳，整理出Route 表後，再指派ParentNavigatorKey 使返回事件及NavBar 可以正常顯示和作動

![image](https://hackmd.io/_uploads/BklWycVWR.png)

![image](https://hackmd.io/_uploads/B1__7qEbA.png)

- 背景：
之前的路由方式是透過 `MyDialog` 下的 `showCustomDialogView` 方法達成，這個方法是 `PageRoute` 的wrapper，這個wrapper 嵌套了一層 `CustomView` 。
若前往的頁面需要二次驗證，則會在這方法上額外設定flag `shouldVerify` 和 `confirmType`，然後用遞迴的方式，再次呼叫`showCustomDialogView` 方法，顯示 SecondPassword 頁面。

- 問題：
這個路由方式有以下問題

    1. 回傳值為dynamic：
        因為原先的開發者並沒有指定return type，這樣的行為會造成技術債累積。而且查詢push  return value 的錯誤非常困難
    2. 傳入context
        這個方法是`PageRoute` 的wrapper，context 不需要傳入 (無效傳入)
    3. ui 遮擋
        這是最嚴重的問題。
        由於本專案有使用GoRouter 作為Route 控制，主要的畫面都是透過GoRouter 的`StatefulShellRoute` 來實作，但各個子頁面卻是用`NavigatorState` 實作，這會讓子頁面會顯示`StatefulShellRoute` 的`NavigationBar`

- 實作改變：
因為專案已使用了GoRouter 作為Route 控制，所以將

    1. 所有頁面重新使用GoRoute 控制。
    2. 針對不顯示`NavigationBar` 的頁面(或是其`ShellRoute`)指定`parentNavigatorKey` 為 `rootNavigatorKey` 
    3. 刪除`showCustomDialogView`，不依賴`push` 的return value


## ui調整

ui 調整列表

### ✅解鎖頁面

| 預期                                               | 現況                                               |
|:-------------------------------------------------- |:-------------------------------------------------- |
| ![image](https://hackmd.io/_uploads/rkLsPi4W0.png) | ![image](https://hackmd.io/_uploads/HyxG-nE-C.png) |
| ![image](https://hackmd.io/_uploads/H10FvjVZR.png) | ![image](https://hackmd.io/_uploads/HyvXb24b0.png) |

### ✅設定pin 碼頁
`6de469a07a85f717bca489a0dc175ff43da7eba9`

| 預期                                               | 現況                                               |
|:-------------------------------------------------- |:-------------------------------------------------- |
| ![image](https://hackmd.io/_uploads/BJw71nVW0.png) | ![image](https://hackmd.io/_uploads/Hkmwy3NZR.png) |
| ![image](https://hackmd.io/_uploads/B1MZzbHZR.png) | ![image](https://hackmd.io/_uploads/Skwzg3E-C.png) |
| ![image](https://hackmd.io/_uploads/rJCzMZrbA.png) | ![image](https://hackmd.io/_uploads/rynVg3NbR.png) |
| ![image](https://hackmd.io/_uploads/B1NX_jN-R.png) | ![image](https://hackmd.io/_uploads/S16LenN-C.png) |

### ✅導入代幣頁
`dc47175eb68da0927377d93ec0d71a520005aac5`

| 預期                                               | 現況                                               |
|:-------------------------------------------------- |:-------------------------------------------------- |
| ![image](https://hackmd.io/_uploads/Sk_o_oVWR.png) | ![image](https://hackmd.io/_uploads/Skc5ps4-0.png) |

### 接收QR頁
`c921fd1a916e081cbe4f7a3992b2903988894e5a`
於部分手機會出現跑版

| 預期                                               | 現況                                               |
|:-------------------------------------------------- |:-------------------------------------------------- |
| ![image](https://hackmd.io/_uploads/S1Pxl9dbA.png) | ![image](https://hackmd.io/_uploads/r1EEl5d-R.png) |



### ✅資產設定頁 Overflow
`8ac198cb0e684adc916759a49923d7089822e80d`
![image](https://hackmd.io/_uploads/H1lMqjVbA.png)

### ✅回復錢包 輸入助記詞 Overflow
問題已無法復現
![image](https://hackmd.io/_uploads/HJOjCj4-C.png)

### ✅日文介面的錢包重設Bottom Sheet Overflow
`8a9ecb24a81a2e582e5947149af8e213c65dd352`
![image](https://hackmd.io/_uploads/Bkq3xqdZA.png)

### ✅日文介面的錢包歡迎頁 Overflow
`c2f35f85e750946b7fdf609f57f41953c2c50c09`
![image](https://hackmd.io/_uploads/rJF1Dj_W0.png)

## buglist

Bug列表

### ✅導入代幣頁若輸入錯誤過，無法成功送出正確資料
`dc47175eb68da0927377d93ec0d71a520005aac5`
如題

**情境**
當發生過輸入錯誤，改正後

**現況**
無法成功送出資料

**預期**
需送出資料


### ✅傳送資產頁的聯絡人列表異常
`775fdc54a7998044b984c5b7c01ede138f32242a`

**情境**
當只有一個聯絡人時

**現況**
無法顯示

**預期**
顯示一位聯絡人

### ✅生物驗證listTile 無互動反應
`3460051dc253433926152a8fa725a803c8b67553`

**情境**
點擊ListTile 時

**現況**
沒有觸發改變生物驗證按鈕狀態

**預期**
觸發改變生物驗證按鈕狀態

### 語言沒有反應到首頁

**情境**
更換語言後，將錢包重置後

**現況**
錢包重置後的第一個畫面為中文

**預期**
錢包重置後的第一個畫面為先前更換的語言
