Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Material designのWindow size classについて
Search
oyuk
June 20, 2023
Programming
1.5k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Material designのWindow size classについて
oyuk
June 20, 2023
More Decks by oyuk
See All by oyuk
Shorebird について
oyuk
0
500
Swiftでなんで[weak self]するのか?
oyuk
2
5.3k
LLVMについて調べた
oyuk
0
220
Swiftのmapからその次へ
oyuk
1
1.4k
Other Decks in Programming
See All in Programming
AIが無かった頃の素敵な出会いの話
codmoninc
1
390
複数の Claude Code が"放置"されてしまう問題をCLI ダッシュボードを自作して解決した話
sumihiro3
1
670
React本体のコードリーディング
high_g_engineer
1
140
Google Apps Script で Ruby を動かす
kawahara
0
140
PHP に部分適用が来るぞ!……ところで何それ?おいしいの? #phpcon / phpcon-2026
shogogg
0
600
JAWS-UG横浜 #102 AWSサ終供養LT会 成仏できない AWS サービスたち 〜本日、三体供養します〜
maroon1st
0
340
AWS DevOps AgentのAzure接続機能を検証して見えた活用法/Use Cases Verified for the AWS DevOps Agent's Azure Connectivity Feature
masakiokuda
1
220
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
12
18k
進化を続けるGo toolsの現在地 / The Current State of Ever-Evolving Go Tools
hond0413
0
160
VibeCodingからAgenticWorkflowへ
starfish719
0
330
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
460
言葉の格闘技のススメ~紙とペンと言葉から始める、キャリアの描き方~
progresscicada
2
140
Featured
See All Featured
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
YesSQL, Process and Tooling at Scale
rocio
174
15k
How STYLIGHT went responsive
nonsquared
100
6.2k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.5k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
440
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
650
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.9k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
Skip the Path - Find Your Career Trail
mkilby
1
180
Transcript
Material designのWindow size classについて potatotips #82 2023/6/20 oyuk
自己紹介 oyuk(@oydku) プログラマ 株式会社RelicでFlutterやってます。
Window size classとは? 画面サイズ毎に分割した区分の事 [1] https://m3.material.io/foundations/layout/applying-layout/window-size-classes#6e960b82-eff3-4f1b-92d3- 5edb5e338f49
Window size classとは? [2] https://m3.material.io/foundations/layout/applying-layout/window-size-classes
Window size classの用途 Window classに応じてコンポーネントの配置、表示状態を変更する事でより良いユーザー体 験を提供できる。 [3] https://m3.material.io/foundations/layout/applying-layout/window-size-classes#6e960b82-eff3-4f1b-92d3- 5edb5e338f49
Window size classの用途 Window class毎のデザイン作成方法 1. まず一つWindow classのデザインを作成する。 2. 次の5つの質問に回答していき、次のWindow
class sizeを作っていく。 i. 何が表示されるべきか? ii. 画面をどのように分割するか? iii. 何のサイズを変える必要があるか? iv. 何の位置を変える必要があるか? v. 何を交換する必要があるか?
Window size classの用途 1 何が表示されるべきか? 小さい画面では表示されていないコンポーネントが大きい画面では表示したほうが良い場合 がある。 画像ではpaneが表示状態がcompact、expandedで違っている。 [4] https://m3.material.io/foundations/layout/applying-layout/window-size-classes
Window size classの用途 2 画面をどのように分割するか? 一つのpaneはcompact,medium、二つのpaneはexpandedで使用すると良い。 [5] https://m3.material.io/foundations/layout/applying-layout/window-size-classes#64506ae2-f4c1-4810-8ee9- d2434ab8616c
Window size classの用途 3 何のサイズを変える必要があるか? compactでのコンポーネントのサイズはmedium,expandedでは大きくする事が可能である。 [6] https://m3.material.io/foundations/layout/applying-layout/window-size-classes#69b87bd8-6ed7-4df5-a91d- 04247c47ebe1
Window size classの用途 4 何の位置を変える必要があるか? Window classが大きくなればよりスペースが大きくなる。これに合わせてコンポーネントの 位置を変える事を検討する。 例 Cardの位置を変更する
コンテンツに二つ目のカラムを追加する
Window size classの用途 5 何を交換する必要があるか? Window classが変わると同様の機能を持つコンポーネントを交換する事ができる場合があ る。図はnavigation barをnavigation railに置き換えた例。
[7] https://m3.material.io/foundations/layout/applying-layout/window-size-classes#9a45abd4-d1cf-4001-a63b- dd5c4e823bd5
実装方法 AdaptiveScaffoldとAdaptiveLayoutというAPIが提供されている。 AdaptiveLayoutの方がカスタマイズ性が高い。 https://github.com/flutter/packages/tree/main/packages/flutter_adaptive_scaffold
実装方法 これらのコンポーネントが画面サイズに応じて何を表示するかを指定する。 [8] https://github.com/flutter/packages/tree/main/packages/flutter_adaptive_scaffold#adaptivelayout
実装方法 bodyを指定する場合 AdaptiveLayout( body: SlotLayout( config: <Breakpoint, SlotLayoutConfig>{ Breakpoints.small: SlotLayout.from(
key: const Key('Body Small'), builder: (_) => ListView.builder( itemCount: children.length, itemBuilder: (BuildContext context, int index) => children[index], ), ), Breakpoints.medium: SlotLayout.from( key: const Key('Body Medium'), builder: (_) => GridView.count(crossAxisCount: 2, children: children), ) }, ),
実装方法 topNavigation等も設定可能。 const AdaptiveLayout({ super.key, this.topNavigation, this.primaryNavigation, this.secondaryNavigation, this.bottomNavigation, this.body,
this.secondaryBody, this.bodyRatio, this.internalAnimations = true, this.bodyOrientation = Axis.horizontal, });
実装方法 画面サイズに応じてコンポーネントの出し分けができている。 small medium
実装方法 large