直接呼叫 Button.new(),內距、高度與換行就會在不同畫面之間一點一點走樣。
這種走樣在程式碼審查時看不出來,在螢幕截圖裡卻一目了然。
| 群組 | 函式 |
|---|---|
| 結構 | column row wrap_row padding spacer divider responsive_grid aspect foldable |
| 文字 | label label_key line section typography |
| 按鈕 | button button_key icon_button list_button list_row apply_icon style_choice_card style_chip_button style_chip_label |
| 輸入 | line_edit textarea toggle checkbox slider picker select dropdown radio_group segmented choice_grid |
| 顯示 | card chip hud_panel chip_panel avatar skeleton alert table tabs breadcrumb progress empty_state |
| 介面零件 | surface box floating disc face_padding |
| 輔助 | form fit_words natural_width tooltip_node card_body let_input_through |
box() 一律回傳 StyleBoxFlat,因為呼叫端拿到它之後會去
調整 bg_color 或 corner_radius。當自訂形狀必須保留時,
請改用 surface()。
帶說明的清單列
GoStyle.list_button(GoIconSet.SWORD, "守誓者", _inspect, Color.TRANSPARENT,
"長劍 / 攻擊 42", false)
有第二行的列會得到上下相等的內距,比單行的列更寬鬆,而標題與說明這一組會 在圖示旁邊保持垂直置中 — 即使容器把這一列拉高,或說明換行成好幾行,也一樣。 整列仍然是單一個點擊目標。
medieval_light 底下呼叫的是同一批工廠函式。會換行的列
把控制項放進 wrap_row 時,讓它們維持自然寬度。若放著換行不管,按鈕的最小寬度
會掉到幾乎為零,而該列就用這個值決定儲存格大小 — 標籤於是縮成一行一個字。
工廠函式替你擋掉了這件事。
永遠別讓空清單真的空著
page.add_child(GoStyle.empty_state(GoIconSet.BOX, "這裡還沒有東西"))
人看到一片空白的畫面,會讀成壞掉了。
子類別掛鉤
每一個會建立子控制項的地方,都經過一個可覆寫的方法,所以繼承了 gohud 型別的專案, 不必複製程式碼就能把自己的子類別放進控制項內部。
| 掛鉤 | 控制項 | 預設 |
|---|---|---|
_make_scroll() | GoCoachMark、GoSurface | GoScroll.new() |
_make_close_button() | GoPromptCard、GoSurface | GoIconButton.new() |
_make_surface() | GoSheet、GoDialogs | GoSurface.new() |
_should_pause() | GoCoachMark | 有互動視窗開著時隱藏卡片 |