LogoSkills

inspector:ui

Widget tree runtime inspection and analysis

ํ•ญ๋ชฉ๋‚ด์šฉ
Invoke/inspector:ui
Categorykobic-development
Complexitysimple
MCP Serversflutter-inspector

/inspector:ui โ€” ํ™”๋ฉด ๊ตฌ์กฐ ๋“ค์—ฌ๋‹ค๋ณด๊ธฐ#

ํ•œ๋งˆ๋””๋กœ#

์‹คํ–‰ ์ค‘์ธ ์•ฑ ํ™”๋ฉด์ด ์–ด๋–ค ๋ถ€ํ’ˆ(์œ„์ ฏ)๋“ค๋กœ ์–ด๋–ป๊ฒŒ ์Œ“์—ฌ ์žˆ๋Š”์ง€ ๋“ค์—ฌ๋‹ค๋ณด๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์ง‘์˜ ์„ค๊ณ„๋„๋ฅผ ํŽผ์ณ ๋ณด๋ฉด์„œ "์–ด๋””๊ฐ€ ์‚์ ธ๋‚˜์™”๋Š”์ง€, ์–ด๋–ค ๋ฐฉ์ด ์–ด๋””์— ์žˆ๋Š”์ง€" ํ™•์ธํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์•„์š”.

๋ˆ„๊ฐ€ยท์–ธ์ œ ์“ฐ๋‚˜์š”#

  • ํ™”๋ฉด ์š”์†Œ๊ฐ€ ํ™”๋ฉด ๋ฐ–์œผ๋กœ ์‚์ ธ๋‚˜์˜ค๋Š” ๋ ˆ์ด์•„์›ƒ ๊นจ์ง(overflow) ์ด ์ƒ๊ฒผ์„ ๋•Œ
  • "์žˆ์–ด์•ผ ํ•  ๋ฒ„ํŠผยท๊ธ€์ž๊ฐ€ ํ™”๋ฉด์— ์•ˆ ๋ณด์ธ๋‹ค" ํ•˜๊ณ  ์œ„์ ฏ์ด ์‚ฌ๋ผ์ง„ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ผ ๋•Œ
  • ํ™”๋ฉด์ด ๋А๋ฆฌ๊ฑฐ๋‚˜, ์ž‘์€ ํ™”๋ฉดยทํฐ ํ™”๋ฉด์—์„œ ๋ ˆ์ด์•„์›ƒ์ด ์ œ๋Œ€๋กœ ์•ˆ ๋งž์„ ๋•Œ

์ฃผ๋กœ ๊ฐœ๋ฐœ์ž๋‚˜ AI๊ฐ€ ์•ฑ์„ ์ง์ ‘ ์‹คํ–‰ํ•ด ๋†“๊ณ  ํ™”๋ฉด ๋ฌธ์ œ๋ฅผ ์ง„๋‹จํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋ฌด์—‡์„ ํ•ด์ฃผ๋‚˜์š”#

์‹คํ–‰ ์ค‘์ธ ์•ฑ์—์„œ ๋‹ค์Œ์„ ๋ฝ‘์•„๋‚ด ๋ณด์—ฌ ์ค๋‹ˆ๋‹ค.

  • ํ™”๋ฉด ๊ตฌ์กฐ ์ „์ฒด โ€” ์–ด๋–ค ๋ถ€ํ’ˆ๋“ค์ด ์–ด๋–ค ์ˆœ์„œ๋กœ ๊ฒน์ณ ์žˆ๋Š”์ง€(์œ„์ ฏ ํŠธ๋ฆฌ)
  • ์‚์ ธ๋‚˜์˜จ ์š”์†Œ ์ฐพ๊ธฐ โ€” ํ™”๋ฉด ๋ฐ–์œผ๋กœ ๋„˜์นœ ๋ถ€๋ถ„์ด ์–ด๋””์ธ์ง€(overflow ์œ„์น˜)
  • ํ˜„์žฌ ํ™”๋ฉด ์ •๋ณด โ€” ํ™”๋ฉด ํฌ๊ธฐ ๋“ฑ ๊ธฐ๋ณธ ์ •๋ณด
  • ํŠน์ • ๋ถ€ํ’ˆ ๊ฒ€์ƒ‰ โ€” ์›ํ•˜๋Š” ์ข…๋ฅ˜์˜ ์š”์†Œ(๋ฒ„ํŠผ, ๊ธ€์ž ๋“ฑ)๊ฐ€ ์‹ค์ œ๋กœ ์žˆ๋Š”์ง€
  • ํ™”๋ฉด ์† ๋ชจ๋“  ๊ธ€์ž โ€” ํ‘œ์‹œ๋˜๋Š” ํ…์ŠคํŠธ์™€ ๊ทธ ๋‚ด์šฉ ๋ชจ์Œ

์–ด๋–ป๊ฒŒ ์“ฐ๋‚˜์š”#

# ํ™”๋ฉด ๊ตฌ์กฐ(์œ„์ ฏ ํŠธ๋ฆฌ) ์ „์ฒด ๋ณด๊ธฐ
/inspector/ui tree

# ํ™”๋ฉด ๋ฐ–์œผ๋กœ ์‚์ ธ๋‚˜์˜จ ๋ถ€๋ถ„(overflow) ์ฐพ๊ธฐ
/inspector/ui overflow

# ํ˜„์žฌ ํ™”๋ฉด ์ •๋ณด ๋ณด๊ธฐ
/inspector/ui screen

# ํ™”๋ฉด์— ์žˆ๋Š” ๊ธ€์ž(ํ…์ŠคํŠธ) ๋ชจ๋‘ ์ฐพ๊ธฐ
/inspector/ui texts

์œ„ ๋„ค ๊ฐ€์ง€๋Š” ๋ฌธ์„œ์— ์‹ค์ œ๋กœ ์ •์˜๋œ ์‚ฌ์šฉ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค. ๋ณดํ†ต ๋ฌธ์ œ ์œ ํ˜•์— ๋งž๋Š” ํ•œ ๊ฐ€์ง€๋ฅผ ๊ณจ๋ผ ์‹คํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์•ˆ์—์„œ ๋ฌด์Šจ ์ผ์ด ๋ฒŒ์–ด์ง€๋‚˜์š”#

๋ฌธ์ œ ์ข…๋ฅ˜์— ๋”ฐ๋ผ ์ •ํ•ด์ง„ ์ง„๋‹จ ์ˆœ์„œ๋ฅผ ๋”ฐ๋ผ๊ฐ‘๋‹ˆ๋‹ค.

  • ๋ ˆ์ด์•„์›ƒ์ด ์‚์ ธ๋‚˜์™”์„ ๋•Œ โ€” ์‚์ ธ๋‚˜์˜จ ์œ„์ ฏ์„ ์ฐพ์•„ ๊ทธ ์œ„์น˜๋ฅผ ํ™•์ธํ•˜๊ณ , ์ •ํ•ด์ง„ ํฌ๊ธฐ์™€ ์‹ค์ œ ํฌ๊ธฐ๋ฅผ ๋น„๊ตํ•œ ๋’ค ExpandedยทFlexibleยทSingleChildScrollView ๊ฐ™์€ ํ•ด๊ฒฐ์ฑ…์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.
  • ์žˆ์–ด์•ผ ํ•  ์š”์†Œ๊ฐ€ ์•ˆ ๋ณด์ผ ๋•Œ โ€” ํ•ด๋‹น ์ข…๋ฅ˜์˜ ์œ„์ ฏ์„ ๊ฒ€์ƒ‰ํ•ด ์‹ค์ œ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๊ณ , ํ™”๋ฉด ๊ตฌ์กฐ ๊ฒฝ๋กœ๋ฅผ ๋”ฐ๋ผ๊ฐ€ ๋ณด๋ฉฐ ์กฐ๊ฑด๋ถ€๋กœ ๊ฐ€๋ ค์กŒ๋Š”์ง€ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค.
  • ํ™”๋ฉด์ด ๋А๋ฆด ๋•Œ โ€” ํ™”๋ฉด ๊ตฌ์กฐ์˜ ๊นŠ์ด๋ฅผ ๋ณด๊ณ  ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๊นŠ๊ฒŒ ์ค‘์ฒฉ๋œ ๊ณณ์„ ์ฐพ์€ ๋’ค, ๋‹ค์‹œ ๊ทธ๋ ค์ง€๋Š” ๋นˆ๋„๋ฅผ ์ ๊ฒ€ํ•ฉ๋‹ˆ๋‹ค.
  • ํ™”๋ฉด ํฌ๊ธฐ๋ณ„๋กœ ๊นจ์งˆ ๋•Œ โ€” ํ˜„์žฌ ํ™”๋ฉด ํฌ๊ธฐ๋ฅผ ํ™•์ธํ•˜๊ณ  ์—ฌ๋Ÿฌ ํฌ๊ธฐ์—์„œ ์‚์ ธ๋‚˜์˜ด์„ ๊ฒ€์‚ฌํ•ด, ํฌ๊ธฐ์— ๋”ฐ๋ผ ๋ถ„๊ธฐ๋˜๋Š” ์กฐ๊ฑด์„ ์ ๊ฒ€ํ•ฉ๋‹ˆ๋‹ค.

โš™๏ธ ์ƒ์„ธ ์˜ต์…˜ยท์‹คํ–‰ ๋ช…์„ธ (๊ฐœ๋ฐœ์ž / AI ์—์ด์ „ํŠธ์šฉ)

Triggers#

  • Layout overflow
  • Widget tree analysis
  • UI structure check

MCP Tools#

ui_get_widget_tree#

Returns the widget tree of the current screen.

Parameters:

  • depth: Tree depth (default 5)
  • includeRenderObjects: Include RenderObject info

Response example:

{
   " tree " : {
     " type " :  " MaterialApp " ,
     " children " : [
      {
         " type " :  " Scaffold " ,
         " children " : [
          { " type " :  " AppBar " ,  " properties " : { " title " :  " Home " } } ,
          { " type " :  " ListView " ,  " children " : [...]}
        ]
      }
    ]
  }
}

ui_find_widgets#

Searches for widgets by specific type.

Parameters:

  • type: Widget type name (e.g., Text, Container)
  • key: Widget Key value

ui_get_screen_info#

Returns current screen information.

ui_find_overflow#

Finds widgets with overflow issues.

ui_get_text_widgets#

Returns all text widgets and their content.

Common Diagnostics#

Layout overflow#

1. ui_find_overflow - >   Identify problem widget
2. Check the widget path
3. Compare constraints vs size
4. Suggest applying Expanded, Flexible, SingleChildScrollView

Widget not found#

1. ui_find_widgets type= " TargetWidget " 
 2. Verify widget existence
3. Trace widget tree path
4. Review conditional rendering logic

UI performance issues#

1. ui_get_widget_tree - >   Check depth
2. Identify unnecessarily deep nesting
3. Check const widget usage
4. Analyze rebuild frequency with /inspector/bloc

Responsive layout#

1. ui_get_screen_info - >   Check screen size
2. Run ui_find_overflow at various sizes
3. Review MediaQuery-based conditions

Examples#

Check widget tree#

/inspector/ui tree

Overflow inspection#

/inspector/ui overflow

Check screen info#

/inspector/ui screen

Find text widgets#

/inspector/ui texts

References#

  • Detailed implementation: .claude/agents/flutter-inspector-ui.md
  • Master inspector: .claude/commands/inspector.md
  • BLoC inspector: .claude/commands/inspector/bloc.md