Compose 修飾符清單

動作

範圍:任何
Modifier.clickable(
    enabled: Boolean,
    onClickLabel: String?,
    role: Role?,
    onClick: () -> Unit
)

設定元件以透過輸入或無障礙功能「按一下」事件接收按一下。

範圍:任何
Modifier.clickable(
    interactionSource: MutableInteractionSource,
    indication: Indication?,
    enabled: Boolean,
    onClickLabel: String?,
    role: Role?,
    onClick: () -> Unit
)

設定元件以透過輸入或無障礙功能「按一下」事件接收按一下。

範圍:任何
@ExperimentalFoundationApi 
Modifier.combinedClickable(
    enabled: Boolean,
    onClickLabel: String?,
    role: Role?,
    onLongClickLabel: String?,
    onLongClick: () -> Unit,
    onDoubleClick: () -> Unit,
    onClick: () -> Unit
)

設定元件以透過輸入或無障礙功能「按一下」事件接收按一下、按兩下和長按一下。

範圍:任何
@ExperimentalFoundationApi 
Modifier.combinedClickable(
    interactionSource: MutableInteractionSource,
    indication: Indication?,
    enabled: Boolean,
    onClickLabel: String?,
    role: Role?,
    onLongClickLabel: String?,
    onLongClick: () -> Unit,
    onDoubleClick: () -> Unit,
    onClick: () -> Unit
)

設定元件以透過輸入或無障礙功能「按一下」事件接收按一下、按兩下和長按一下。

範圍:任何
Modifier.draggable(
    state: DraggableState,
    orientation: Orientation,
    enabled: Boolean,
    interactionSource: MutableInteractionSource?,
    startDragImmediately: Boolean,
    onDragStarted: suspend CoroutineScope.(Offset) -> Unit,
    onDragStopped: suspend CoroutineScope.(Float) -> Unit,
    reverseDirection: Boolean
)

為單一 Orientation 中的使用者介面元素設定觸控拖曳功能。

範圍:任何
Modifier.selectable(
    selected: Boolean,
    enabled: Boolean,
    role: Role?,
    onClick: () -> Unit
)

將元件設定為可供選取,通常作為互斥群組的一部分,而且在任何時間點,都是一次只能選取一個項目。

範圍:任何
Modifier.selectable(
    selected: Boolean,
    interactionSource: MutableInteractionSource,
    indication: Indication?,
    enabled: Boolean,
    role: Role?,
    onClick: () -> Unit
)

將元件設定為可供選取,通常作為互斥群組的一部分,而且在任何時間點,都是一次只能選取一個項目。

範圍:任何

使用此修飾符,針對無障礙功能將 selectable 項目的清單 (例如分頁或圓鈕) 分為一組。

範圍:任何
@ExperimentalMaterialApi 
<T : Any?> Modifier.swipeable(
    state: SwipeableState<T>,
    anchors: Map<Float, T>,
    orientation: Orientation,
    enabled: Boolean,
    reverseDirection: Boolean,
    interactionSource: MutableInteractionSource?,
    thresholds: (from, to) -> ThresholdConfig,
    resistance: ResistanceConfig?,
    velocityThreshold: Dp
)

在一組預先定義的狀態中啟用滑動手勢。

範圍:任何
Modifier.toggleable(
    value: Boolean,
    enabled: Boolean,
    role: Role?,
    onValueChange: (Boolean) -> Unit
)

將元件設定為可透過輸入和無障礙事件進行切換

範圍:任何
Modifier.toggleable(
    value: Boolean,
    interactionSource: MutableInteractionSource,
    indication: Indication?,
    enabled: Boolean,
    role: Role?,
    onValueChange: (Boolean) -> Unit
)

將元件設定為可透過輸入和無障礙事件進行切換。

範圍:任何
Modifier.triStateToggleable(
    state: ToggleableState,
    enabled: Boolean,
    role: Role?,
    onClick: () -> Unit
)

將元件設定為可透過輸入和無障礙事件三種狀態:「開啟」、「關閉」和「不確定」來進行切換。

範圍:任何
Modifier.triStateToggleable(
    state: ToggleableState,
    interactionSource: MutableInteractionSource,
    indication: Indication?,
    enabled: Boolean,
    role: Role?,
    onClick: () -> Unit
)

將元件設定為可透過輸入和無障礙事件三種狀態:「開啟」、「關閉」和「不確定」來進行切換。

對齊方式

範圍: BoxScope
@Stable 
Modifier.align(alignment: Alignment)

將內容元素置入到 Box 中的特定 Alignment

範圍: RowScope
@Stable 

Row 中垂直對齊元素。

範圍: RowScope
@Stable 

垂直放置元素,讓其 alignmentLine 與同樣設定為 alignBy 的同層級元素對齊。

範圍: RowScope
@Stable 
Modifier.alignBy(alignmentLineBlock: (Measured) -> Int)

垂直放置元素,讓 alignmentLineBlock 決定的內容的對齊線和同樣設定為 alignBy 的同層級元素對齊。

範圍: RowScope
@Stable 

垂直放置元素,讓第一個基準和同樣設定為 alignByBaselinealignBy 的同層級元素對齊。

範圍: ColumnScope
@Stable 

Column 中水平對齊元素。

範圍: ColumnScope
@Stable 

水平放置元素,讓其 alignmentLine 和同樣設定為 alignBy 的同層級元素對齊。

範圍: ColumnScope
@Stable 
Modifier.alignBy(alignmentLineBlock: (Measured) -> Int)

水平放置元素,讓 alignmentLineBlock 決定的內容的對齊線和同樣設定為 alignBy 的同層級元素對齊。

動畫

open

animateEnterExit 修飾符可用於 AnimatedVisibility 的任何直接或間接子項,以建立與 AnimatedVisibility 中指定的不同的進入/結束動畫。

框線

範圍:任何
Modifier.border(border: BorderStroke, shape: Shape)

修改元素以新增使用 bordershape 指定的外觀框線,並進行裁剪。

範圍:任何
Modifier.border(width: Dp, color: Color, shape: Shape)

修改元素以新增使用 widthcolorshape 指定的外觀框線,並進行裁剪。

範圍:任何
Modifier.border(width: Dp, brush: Brush, shape: Shape)

修改元素以新增使用 widthbrushshape 指定的外觀框線,並進行裁剪。

繪圖

範圍:任何
@Stable 
Modifier.alpha(alpha: Float)

繪製修改 alpha 值可能小於 1 的內容。

範圍:任何
Modifier.background(color: Color, shape: Shape)

在內容下方使用單色 color 繪製 shape

範圍:任何
Modifier.background(brush: Brush, shape: Shape, alpha: Float)

在內容下方使用 brush 繪製 shape

範圍:任何
@Stable 
Modifier.clip(shape: Shape)

將內容剪輯至 shape

範圍:任何
@Stable 

將內容剪輯至在此修飾符定義的圖層邊界。

範圍:任何
Modifier.drawBehind(onDraw: DrawScope.() -> Unit)

在經過修改的內容下方的 Canvas 進行繪圖。

範圍:任何
Modifier.drawWithCache(
    onBuildDrawCache: CacheDrawScope.() -> DrawResult
)

在繪製呼叫之間存續的內容的 DrawScope 中進行繪圖,條件為繪圖區域的大小相同,或者所讀取的任何狀態物件都沒有改變。

範圍:任何

建立 DrawModifier,讓開發人員可在版面配置內容之前或之後進行繪製。

範圍:任何
Modifier.indication(
    interactionSource: InteractionSource,
    indication: Indication?
)

在發生互動時對此元件繪製視覺效果。

範圍:任何
Modifier.paint(
    painter: Painter,
    sizeToIntrinsics: Boolean,
    alignment: Alignment,
    contentScale: ContentScale,
    alpha: Float,
    colorFilter: ColorFilter?
)

使用 painter 繪製內容。

範圍:任何
@Stable 
Modifier.shadow(elevation: Dp, shape: Shape, clip: Boolean)

建立 GraphicsLayerModifier 以用來繪製陰影。

範圍:任何
@Stable 
Modifier.zIndex(zIndex: Float)

建立修飾符以控制相同版面配置父項的子項繪製順序。

無點

範圍:任何

此函式已淘汰不用。已由 focusTarget 取代

範圍:任何
Modifier.focusOrder(focusOrderReceiver: FocusOrder.() -> Unit)

使用此修飾符指定自訂焦點周遊順序。

範圍:任何
Modifier.focusOrder(focusRequester: FocusRequester)

此修飾符可讓您針對目前的可組合項目指定 FocusRequester,以便其他可組合項目可使用此 focusRequester 來指定自訂焦點順序。

範圍:任何
Modifier.focusOrder(
    focusRequester: FocusRequester,
    focusOrderReceiver: FocusOrder.() -> Unit
)

此修飾符可讓您針對目前的可組合項目指定 FocusRequester 以及 focusOrder

範圍:任何

對元件新增此修飾符以觀察焦點狀態的變更。

範圍:任何

對元件新增此修飾符使其可設定焦點。

範圍:任何
Modifier.focusable(
    enabled: Boolean,
    interactionSource: MutableInteractionSource?
)

將元件設定為可透過焦點系統或無障礙功能「焦點」事件而可設定焦點。

範圍:任何
Modifier.onFocusChanged(onFocusChanged: (FocusState) -> Unit)

對元件新增此修飾以觀察焦點狀態事件。

範圍:任何
Modifier.onFocusEvent(onFocusEvent: (FocusState) -> Unit)

對元件新增此修飾以觀察焦點狀態事件。

圖像

範圍:任何
@Stable 
Modifier.graphicsLayer(
    scaleX: Float,
    scaleY: Float,
    alpha: Float,
    translationX: Float,
    translationY: Float,
    shadowElevation: Float,
    rotationX: Float,
    rotationY: Float,
    rotationZ: Float,
    cameraDistance: Float,
    transformOrigin: TransformOrigin,
    shape: Shape,
    clip: Boolean
)

Modifier.Element 可讓內容繪製到繪圖圖層中。

範圍:任何
@Stable 

Modifier.Element 可讓內容繪製到繪圖圖層中。

範圍:任何
@Stable 

Modifier.Element 可新增繪圖圖層,讓工具能夠識別已繪製圖片中的元素。

鍵盤

範圍:任何
Modifier.onKeyEvent(onKeyEvent: (KeyEvent) -> Boolean)

將此 modifier 新增至元件的 modifier 參數,讓該元件可攔截硬體按鍵事件。

範圍:任何
Modifier.onPreviewKeyEvent(onPreviewKeyEvent: (KeyEvent) -> Boolean)

將此 modifier 新增至元件的 modifier 參數,讓該元件可攔截硬體按鍵事件。

版面配置

範圍:任何

建立 LayoutModifier,以允許變更包裝元素的測量和佈置的方式。

範圍:任何
@Stable 
Modifier.layoutId(layoutId: Any)

使用 layoutId 來標記元素,以識別其父項中的元素。

範圍:任何
@Stable 
Modifier.onGloballyPositioned(
    onGloballyPositioned: (LayoutCoordinates) -> Unit
)

當內容的全域位置可能已經變更時,使用元素的 LayoutCoordinates 來叫用 onGloballyPositioned

邊框間距

範圍:任何
@Stable 
Modifier.absolutePadding(left: Dp, top: Dp, right: Dp, bottom: Dp)

使用 Dp: lefttoprightbottom,在內容的每個邊緣增加額外的空間。

範圍:任何
@Stable 
Modifier.padding(start: Dp, top: Dp, end: Dp, bottom: Dp)

使用 Dp: starttopendbottom,在內容的每個邊緣增加額外的空間。

範圍:任何
@Stable 
Modifier.padding(horizontal: Dp, vertical: Dp)

在內容的左邊邊緣和右邊邊緣加入 horizontal dp 空間,以及在頂端邊緣和底端邊緣加入 vertical dp 空間。

範圍:任何
@Stable 

在內容的左邊邊緣、頂端邊緣、右邊邊緣和底端邊緣加入 all dp 的額外空間。

範圍:任何
@Stable 
Modifier.padding(paddingValues: PaddingValues)

對元件套用 PaddingValues,作為內容左邊邊緣、頂端邊緣、右邊邊緣和底端邊緣的額外空間。

範圍:任何
@Stable 
Modifier.paddingFrom(alignmentLine: AlignmentLine, before: Dp, after: Dp)

Modifier 可根據其邊界到 alignment line 的指定距離來加入邊框間距,以放置內容。

範圍:任何
@Stable 
Modifier.paddingFrom(
    alignmentLine: AlignmentLine,
    before: TextUnit,
    after: TextUnit
)

Modifier 可根據其邊界到 alignment line 的指定距離來加入邊框間距,以放置內容。

範圍:任何
@Stable 
Modifier.paddingFromBaseline(top: Dp, bottom: Dp)

Modifier 可將內容依下列方式放置在版面配置中:版面配置頂端到baseline of the first line of text in the content 的距離為 topbaseline of the last line of text in the content 到版面配置底端的距離為 bottom

範圍:任何
@Stable 

Modifier 可將內容依下列方式放置在版面配置中:版面配置頂端到 baseline of the first line of text in the content 的距離為 topbaseline of the last line of text in the content 到版面配置底端的距離為 bottom

指標

範圍:任何
Modifier.pointerInput(block: suspend PointerInputScope.() -> Unit)

此函式已淘汰不用。Modifier.pointerInput 必須提供一或多個「鍵」參數以定義修飾符的身分識別,以及判斷何時應該取消其舊的輸入處理協同程式,並對新鍵啟動新效果。

範圍:任何
Modifier.pointerInput(
    key1: Any?,
    block: suspend PointerInputScope.() -> Unit
)

建立修飾符以便在已修改的元素的區域內處理指標輸入。

範圍:任何
Modifier.pointerInput(
    key1: Any?,
    key2: Any?,
    block: suspend PointerInputScope.() -> Unit
)

建立修飾符以便在已修改的元素的區域內處理指標輸入。

範圍:任何
Modifier.pointerInput(
    keys: vararg Any?,
    block: suspend PointerInputScope.() -> Unit
)

建立修飾符以便在已修改的元素的區域內處理指標輸入。

範圍:任何
@ExperimentalComposeUiApi 
Modifier.pointerInteropFilter(
    requestDisallowInterceptTouchEvent: RequestDisallowInterceptTouchEvent?,
    onTouchEvent: (MotionEvent) -> Boolean
)

這個特別的 PointerInputModifier 可用來存取最初派送給 Compose 的基礎 MotionEvent

定位

範圍:任何
@Stable 

將內容位移 (x dp, y dp)。

範圍:任何

將內容位移 offset 個像素。

範圍:任何
@Stable 
Modifier.offset(x: Dp, y: Dp)

將內容位移 (x dp, y dp)。

範圍:任何
Modifier.offset(offset: Density.() -> IntOffset)

將內容位移 offset 個像素。

範圍: TabRowDefaults
Modifier.tabIndicatorOffset(currentTabPosition: TabPosition)

Modifier 會取用 TabRow 內的所有可用寬度,然後移動其所套用的指標的偏移 (視 currentTabPosition 而定)。

語意

範圍:任何

清除所有子系節點的語意並設定新的語意。

範圍:任何
@Stable 
Modifier.progressSemantics(
    value: Float,
    valueRange: ClosedFloatingPointRange<Float>,
    steps: Int
)

包含已確定的進度指標或滑桿的進度部分所需的 semantics,,表示 valueRange 中的進度。

範圍:任何
@Stable 

包含未確定的進度指標所需的 semantics,表示實際正在執行作業。

範圍:任何
Modifier.semantics(
    mergeDescendants: Boolean,
    properties: SemanticsPropertyReceiver.() -> Unit
)

對版面配置節點新增語意鍵/值組,以用於測試、無障礙功能等。

捲動

範圍:任何
Modifier.horizontalScroll(
    state: ScrollState,
    enabled: Boolean,
    flingBehavior: FlingBehavior?,
    reverseScrolling: Boolean
)

修改元素,以允許當內容的寬度大於允許的上限條件時進行水平捲動。

範圍:任何
Modifier.nestedScroll(
    connection: NestedScrollConnection,
    dispatcher: NestedScrollDispatcher?
)

修改元素讓其加入巢狀捲動階層。

範圍:任何
@ExperimentalComposeUiApi 

此修飾符可用來傳送重新定位要求。

範圍:任何
Modifier.scrollable(
    state: ScrollableState,
    orientation: Orientation,
    enabled: Boolean,
    reverseDirection: Boolean,
    flingBehavior: FlingBehavior?,
    interactionSource: MutableInteractionSource?
)

對單一 Orientation 的使用者介面元素設定觸控捲動和快速滑過功能。

範圍:任何
Modifier.verticalScroll(
    state: ScrollState,
    enabled: Boolean,
    flingBehavior: FlingBehavior?,
    reverseScrolling: Boolean
)

修改元素,以允許當內容的高度大於允許的上限條件時進行垂直捲動。

大小

範圍:任何
Modifier.animateContentSize(
    animationSpec: FiniteAnimationSpec<IntSize>,
    finishedListener: (IntSizeIntSize) -> Unit
)

此修飾符在其子項修飾符 (如果已經位於鏈結的尾部,則為子項可組合項目) 改變大小時,會改變本身的大小。

範圍:任何
@Stable 
Modifier.aspectRatio(ratio: Float, matchHeightConstraintsFirst: Boolean)

透過嘗試依照下列順序比對其中一個傳入限制條件,來嘗試讓內容的大小符合指定的長寬比:Constraints.maxWidthConstraints.maxHeightConstraints.minWidthConstraints.minHeight (如果 matchHeightConstraintsFirstfalse 的話,這是預設值),或者 Constraints.maxHeightConstraints.maxWidthConstraints.minHeightConstraints.minWidth (如果 matchHeightConstraintsFirsttrue 的話)。

範圍:任何
@Stable 
Modifier.defaultMinSize(minWidth: Dp, minHeight: Dp)

只有在已包裝版面配置不受限制的情況下才限制已包裝版面配置的大小:僅限於傳入的對應限制條件為 0 時,才套用 minWidthminHeight 限制條件。

範圍:任何
@Stable 

透過設定 minimum height 以及 maximum height 等於 maximum height 並乘以 fraction,來讓內容填滿 (可能只有部分) 傳入度量限制條件的 Constraints.maxHeight

範圍:任何
@Stable 
Modifier.fillMaxSize(fraction: Float)

透過將 minimum widthmaximum width 設定為等於 maximum width 乘以 fraction,以及 minimum heightmaximum height 等於 maximum height 乘以 fraction,來讓內容填滿 (可能只有部分) 傳入度量限制條件的 Constraints.maxWidthConstraints.maxHeight

範圍:任何
@Stable 

透過設定 minimum width 以及 maximum width 等於 maximum width 並乘以 fraction,來讓內容填滿 (可能只有部分) 傳入度量限制條件的 Constraints.maxWidth

範圍:任何
@Stable 
Modifier.height(intrinsicSize: IntrinsicSize)

將內容的偏好高度宣告為和內容的最小或最大內建高度相同。

範圍:任何
@Stable 
Modifier.height(height: Dp)

將內容的偏好高度宣告為剛好 heightdp。

範圍:任何
@Stable 
Modifier.heightIn(min: Dp, max: Dp)

根據傳入度量 Constraints 所允許那樣,將內容的高度限制在 mindp 到 maxdp 之間。

範圍:任何
@Stable 
Modifier.onSizeChanged(onSizeChanged: (IntSize) -> Unit)

在位於其正後方的修飾符大小已經變更時,立即叫用 onSizeChanged

範圍:任何
@Stable 

將內容的高度宣告為和內容最小或最大內建高度完全相同。

範圍:任何
@Stable 

將內容的高度宣告為剛好 heightdp。

範圍:任何
@Stable 
Modifier.requiredHeightIn(min: Dp, max: Dp)

將內容的高度限制在 mindp 到 maxdp 之間。

範圍:任何
@Stable 

將內容的寬度和高度宣告為剛好 sizedp。

範圍:任何
@Stable 
Modifier.requiredSize(width: Dp, height: Dp)

將內容的大小宣告剛好 widthdp 和 heightdp。

範圍:任何
@Stable 
Modifier.requiredSizeIn(
    minWidth: Dp,
    minHeight: Dp,
    maxWidth: Dp,
    maxHeight: Dp
)

將內容的寬度限制在 minWidthdp 到 maxWidthdp 之間,並將內容的高度限制在 minHeightdp 和 maxHeightdp 之間。

範圍:任何
@Stable 

將內容的寬度宣告為和內容的最小或最大內建寬度完全相同。

範圍:任何
@Stable 

將內容的寬度宣告為剛好 widthdp。

範圍:任何
@Stable 
Modifier.requiredWidthIn(min: Dp, max: Dp)

將內容的寬度限制在 mindp 到 maxdp 之間。

範圍:任何
@Stable 
Modifier.size(size: Dp)

將內容的偏好大小指定為宣告為剛好 sizedp 的正方形。

範圍:任何
@Stable 
Modifier.size(width: Dp, height: Dp)

將內容的偏好大小宣告為剛好 widthdp x heightdp。

範圍:任何
@Stable 
Modifier.sizeIn(minWidth: Dp, minHeight: Dp, maxWidth: Dp, maxHeight: Dp)

根據傳入度量 Constraints 所允許那樣,將內容的寬度限制為 minWidthdp 到 maxWidthdp 之間,以及內容的高度限制為 minHeightdp 到maxHeightdp 之間。

範圍:任何
@Stable 
Modifier.width(intrinsicSize: IntrinsicSize)

將內容的偏好寬度宣告為和內容的最小或最大內建寬度相同。

範圍:任何
@Stable 
Modifier.width(width: Dp)

內容的偏好寬度宣告為剛好 widthdp。

範圍:任何
@Stable 
Modifier.widthIn(min: Dp, max: Dp)

根據傳入度量 Constraints 所允許那樣,將內容的寬度限制在 mindp 到 maxdp 之間。

範圍:任何
@Stable 
Modifier.wrapContentHeight(
    align: Alignment.Vertical,
    unbounded: Boolean
)

允許內容依本身所要的高度 (不必考慮傳入度量 minimum height constraint) 進行測量;而且,如果 unbounded 為 true,則還不必考慮傳入度量 maximum height constraint

範圍:任何
@Stable 
Modifier.wrapContentSize(align: Alignment, unbounded: Boolean)

允許內容根據本身所要的大小 (不必考慮傳入度量 minimum widthminimum height 限制條件) 進行測量;而且,如果 unbounded 為 true,則還不必考慮傳入最大限制條件。

範圍:任何
@Stable 
Modifier.wrapContentWidth(
    align: Alignment.Horizontal,
    unbounded: Boolean
)

允許內容根據本身所要的大小 (不考慮傳入度量 minimum width constraint) 進行測量;而且,如果 unbounded 為 true,則還不必考慮傳入度量 maximum width constraint

範圍: LazyItemScope

透過將 minimum height 設定為等於 maximum height 乘以 fraction,讓內容填入傳入度量 Constraints.maxHeight

範圍: LazyItemScope

透過將 minimum width 設定為等於 maximum width 乘以 fraction,以及 minimum height 設定為等於 maximum height 乘以 fraction,讓內容填入父項度量 Constraints.maxWidthConstraints.maxHeight

範圍: LazyItemScope

透過將 minimum width 設定為 maximum width 乘以 fraction,讓內容填滿父項度量限制條件 Constraints.maxWidth

範圍: BoxScope
@Stable 

在完成測量所有其他內容元素後,調整元素大小以符合 Box 的大小。

範圍: RowScope
@Stable 
Modifier.weight(weight: Float, fill: Boolean)

依據 weight 按比例調整元素的寬度,並相對於 Row 中其他加權的同層級元素。

範圍: ColumnScope
@Stable 
Modifier.weight(weight: Float, fill: Boolean)

依據 weight 按比例調整元素的高度,並相對於 Column 中的其他加權同層級元素。

測試

範圍:任何
@Stable 

套用標記以允許已修改的元素出現在測試中。

轉換

範圍:任何
@Stable 
Modifier.rotate(degrees: Float)

設定檢視畫面沿著可組合項目的中心旋轉的角度。

範圍:任何
@Stable 
Modifier.scale(scaleX: Float, scaleY: Float)

依據下列縮放比例係數,分別沿著水平軸和垂直軸調整可組合項目的內容的比例。

範圍:任何
@Stable 
Modifier.scale(scale: Float)

依據相同的縮放比例係數,均勻地調整水平軸和垂直軸內容的比例。

範圍:任何
Modifier.transformable(
    state: TransformableState,
    lockRotationOnZoomPan: Boolean,
    enabled: Boolean
)

對已修改使用者介面元素啟用轉換手勢。

其他

範圍:任何
Modifier.composed(
    inspectorInfo: InspectorInfo.() -> Unit,
    factory: Modifier.() -> Modifier
)

宣告 Modifier 的及時組合,以針對其修飾的毎個元素進行組合。

範圍:任何

將任何執行個體專用的 composed modifiers 具體化,以便套用至原始樹狀節點。