SlideShare una empresa de Scribd logo
1 de 20
Descargar para leer sin conexión
flutter_screenutilを実業務で使ってみた
〜デザインを画面サイズごとに反映させるTips〜
内容
飲食店アプリ実装の中で学んだことではあるが.....
飲食店アプリ固有の話
デザインを綺麗に、かつ簡単に反映させる方法
+アルファ 業務で試してみてどうだったかの話
※かなり、Figmaに偏った情報を元に話します。
flutter_screenutilとは?
アプリ開発でネックになりがちな「画面サイズの違い」を、調整して
くれるライブラリ。
例)横幅・縦幅・フォントサイズなど
https://pub.dev/packages/flutter_screenutil
例 以下のFigmaの画面を元に実装する
※フレーム「750 × 1624」
(そもそもデバイスサイズと合ってないのです
が、それでも実装可能)
○ フレームサイズを確認して、
一番親Widgetとして設定したScreenUtilInitに値を記入
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return ScreenUtilInit(
designSize: const Size(750, 1624),
minTextAdapt: true,
splitScreenMode: true,
useInheritedMediaQuery
: true,
builder: (context, child) {
return MaterialApp(
○ 要素のサイズを確認して、値を設定する。
横サイズを基準とする場合は「.w」縦サイズを基準とする場合は「.h」をつける
child: Column(
children: [
SizedBox(
width: 700.w,
height: 700.h,
child: Image.asset(
'assets/coupon_sample.png'
,
fit: BoxFit.fill,
),
),
…
○ 余白を確認して、値を設定する。
横サイズを基準とする場合は「.w」縦サイズを基準とする場合は「.h」をつける
...
child: const Center(
child: Text(
'2022年12月31日まで有効',
// style: TextStyle(fontSize: 26.sp),
),
),
),
SizedBox(
height: 40.h,
),
Container(
width: 700.w,
height: 100.h,
...
○ 丸みを持たせた要素などは、radius (半径)を確認して
サイズに「.r」をつける
...
Container(
width: 700.w,
height: 100.h,
decoration: BoxDecoration (
color: const Color(0xFF909090),
borderRadius:
BorderRadius .circular(10.r),
),
child: const Center(
child: Text(
'使用する',
style: TextStyle(color: Colors.white),
),
),
),
...
○ フォントサイズも画面サイズに合わせて変化させたい場合は
「.sp」を値につける
...
child: const Center(
child: Text(
'2022年12月31日まで有効',
// style: TextStyle(fontSize: 26.sp),
),
),
),
実装結果
A. Figmaの値をそのまま設定した場合 B. flutter_screenutiで設定した場合
iPhone 13 Pro(390.0 × 844.0)
※Device Previewの画面
元デザイン
実装結果
A B
Sony Xperia 1 II(411.0 × 960.0)
元デザイン
デザインをそのままソースコードに落とし込める!!
機械的に実装できる上、綺麗!!
機械的に機械的に実装...
(業務で使ってみて)落とし穴にハマる
○縦横比率が大事な要素
例)画像素材などの表示
A. Figmaの値をそのまま設定した場合 B. flutter_screenutiで設定した場合
画面のサイズに合わせてサイズ変更するからこそ、
比率がおかしくなって画像が綺麗に表示されない
iPad Pro(11-inch)
(834 × 1194)
flutter_screenutilを使いつつ、
縦横比率を保つには?
height・widthを「.w」か「.h」に統一する
child: Column(
children: [
SizedBox(
width: 700.w,
height: 700.w,
child: Image.asset(
'assets/character_sports_soccer..png'
,
fit: BoxFit.fill,
),
),
…
所感)
デザインが縦向きなら「
.w」でいいのではないかと思っている。
余白は「.h」で対応した。
+ アルファ 画面の向きの変更 → 今回の案件では「縦固定」とした。
.w .h を活用している場合 .w のみの場合
.h のみの場合
※
明確な答えは出せてないです。
横向きを許容する場合は、ご注意ください
ちなみにpub.devにも
Noteで縦横比率に関わる「正方形」の表示の仕方が書いてありました。
flutter_screenutilを使ってみて
良いところ
・デザイナーとの協業がしやすい。
・デザイン再現度が上がった。
・実装速度も(体感)上がった。
注意が必要なところ
・縦横比率が大事な場合(画像・動画は特に注意!)
・画面の向き変更を許容する場合
Github
https://github.com/beeeyan/flutter_screenutil_sample

Más contenido relacionado

La actualidad más candente

エスイーが要件定義でやるべきたったひとつのこと
エスイーが要件定義でやるべきたったひとつのことエスイーが要件定義でやるべきたったひとつのこと
エスイーが要件定義でやるべきたったひとつのこと
Yoshitaka Kawashima
 
日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについて
kumake
 

La actualidad más candente (20)

ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説
 
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
 
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
 
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞いiOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
 
継承やめろマジやめろ。 なぜイケないのか 解説する
継承やめろマジやめろ。 なぜイケないのか 解説する継承やめろマジやめろ。 なぜイケないのか 解説する
継承やめろマジやめろ。 なぜイケないのか 解説する
 
Azure Search 大全
Azure Search 大全Azure Search 大全
Azure Search 大全
 
DDDオンライン勉強会#2 「集約・境界付けられたコンテキスト」
DDDオンライン勉強会#2 「集約・境界付けられたコンテキスト」 DDDオンライン勉強会#2 「集約・境界付けられたコンテキスト」
DDDオンライン勉強会#2 「集約・境界付けられたコンテキスト」
 
VIPER アーキテクチャによる iOS アプリの設計
VIPER アーキテクチャによる iOS アプリの設計VIPER アーキテクチャによる iOS アプリの設計
VIPER アーキテクチャによる iOS アプリの設計
 
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみようドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
 
Cloud Nativeとは?
Cloud Nativeとは?Cloud Nativeとは?
Cloud Nativeとは?
 
エスイーが要件定義でやるべきたったひとつのこと
エスイーが要件定義でやるべきたったひとつのことエスイーが要件定義でやるべきたったひとつのこと
エスイーが要件定義でやるべきたったひとつのこと
 
トランクベース開発を活用して爆速に開発した話
トランクベース開発を活用して爆速に開発した話トランクベース開発を活用して爆速に開発した話
トランクベース開発を活用して爆速に開発した話
 
Jenkins と groovy
Jenkins と groovyJenkins と groovy
Jenkins と groovy
 
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Springドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
 
Kotlinアンチパターン
KotlinアンチパターンKotlinアンチパターン
Kotlinアンチパターン
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
T119_5年間の試行錯誤で進化したMVPVMパターン
T119_5年間の試行錯誤で進化したMVPVMパターンT119_5年間の試行錯誤で進化したMVPVMパターン
T119_5年間の試行錯誤で進化したMVPVMパターン
 
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しようCognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しよう
 
日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについて
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
 

Similar a flutter_screenutilを実業務で使ってみた.pdf

Eggplant Functional - Lesson 10 (Japanese slides)
Eggplant Functional - Lesson 10 (Japanese slides)Eggplant Functional - Lesson 10 (Japanese slides)
Eggplant Functional - Lesson 10 (Japanese slides)
Eggplant
 
スマートフォン・タブレット UIガイドライン
スマートフォン・タブレット UIガイドラインスマートフォン・タブレット UIガイドライン
スマートフォン・タブレット UIガイドライン
MultiDeviceLab
 
【17-E-4】 未来はどこにいても誰にでも平等にある。 未来を創るのは自分自身だ。 ~SIerの中で生きるということ~
【17-E-4】 未来はどこにいても誰にでも平等にある。 未来を創るのは自分自身だ。 ~SIerの中で生きるということ~【17-E-4】 未来はどこにいても誰にでも平等にある。 未来を創るのは自分自身だ。 ~SIerの中で生きるということ~
【17-E-4】 未来はどこにいても誰にでも平等にある。 未来を創るのは自分自身だ。 ~SIerの中で生きるということ~
Yoshitaka Kawashima
 

Similar a flutter_screenutilを実業務で使ってみた.pdf (20)

(デ部発表用抜粋版)プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
(デ部発表用抜粋版)プログラマとデザイナが共有すべきUIに関するAndroidの10の機能(デ部発表用抜粋版)プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
(デ部発表用抜粋版)プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
 
Eggplant Functional - Lesson 10 (Japanese slides)
Eggplant Functional - Lesson 10 (Japanese slides)Eggplant Functional - Lesson 10 (Japanese slides)
Eggplant Functional - Lesson 10 (Japanese slides)
 
プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
プログラマとデザイナが共有すべきUIに関するAndroidの10の機能プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
 
iPlotzで手書き風ワイヤーフレーム
iPlotzで手書き風ワイヤーフレームiPlotzで手書き風ワイヤーフレーム
iPlotzで手書き風ワイヤーフレーム
 
アプリリリース後に後悔しないための20のこと
アプリリリース後に後悔しないための20のことアプリリリース後に後悔しないための20のこと
アプリリリース後に後悔しないための20のこと
 
市場動向並びに弊社製品の今後の展望について
市場動向並びに弊社製品の今後の展望について市場動向並びに弊社製品の今後の展望について
市場動向並びに弊社製品の今後の展望について
 
スマートフォン・タブレット UIガイドライン
スマートフォン・タブレット UIガイドラインスマートフォン・タブレット UIガイドライン
スマートフォン・タブレット UIガイドライン
 
ユーザーストーリーワークショップ実践編
ユーザーストーリーワークショップ実践編ユーザーストーリーワークショップ実践編
ユーザーストーリーワークショップ実践編
 
SCENARIOS, STORIES, USE CASES 10章
SCENARIOS, STORIES, USE CASES 10章SCENARIOS, STORIES, USE CASES 10章
SCENARIOS, STORIES, USE CASES 10章
 
MTプラグイン入門以前
MTプラグイン入門以前MTプラグイン入門以前
MTプラグイン入門以前
 
デベロッパーも 知ってると便利 デザインの基本
デベロッパーも 知ってると便利 デザインの基本デベロッパーも 知ってると便利 デザインの基本
デベロッパーも 知ってると便利 デザインの基本
 
Indigo Studio で作るプロトタイプ
Indigo Studio で作るプロトタイプIndigo Studio で作るプロトタイプ
Indigo Studio で作るプロトタイプ
 
【schoo WEB-campus】どうすれば小さなチームでも大きな成果を出せるのか
【schoo WEB-campus】どうすれば小さなチームでも大きな成果を出せるのか【schoo WEB-campus】どうすれば小さなチームでも大きな成果を出せるのか
【schoo WEB-campus】どうすれば小さなチームでも大きな成果を出せるのか
 
Metrostyleappに挑戦してみた
Metrostyleappに挑戦してみたMetrostyleappに挑戦してみた
Metrostyleappに挑戦してみた
 
DELPHI BOOT CAMP / DELPHIでビジュアル開発に挑戦しよう ◆ DAY2: DELPHIでUI設計のポイントを学ぼう
DELPHI BOOT CAMP / DELPHIでビジュアル開発に挑戦しよう ◆ DAY2: DELPHIでUI設計のポイントを学ぼうDELPHI BOOT CAMP / DELPHIでビジュアル開発に挑戦しよう ◆ DAY2: DELPHIでUI設計のポイントを学ぼう
DELPHI BOOT CAMP / DELPHIでビジュアル開発に挑戦しよう ◆ DAY2: DELPHIでUI設計のポイントを学ぼう
 
市場動向並びに弊社製品の今後の展望について
市場動向並びに弊社製品の今後の展望について市場動向並びに弊社製品の今後の展望について
市場動向並びに弊社製品の今後の展望について
 
個人開発のオープンソースで起業&マネタイズ.pptx
個人開発のオープンソースで起業&マネタイズ.pptx個人開発のオープンソースで起業&マネタイズ.pptx
個人開発のオープンソースで起業&マネタイズ.pptx
 
Appsheet基礎講座.pptx
Appsheet基礎講座.pptxAppsheet基礎講座.pptx
Appsheet基礎講座.pptx
 
【17-E-4】 未来はどこにいても誰にでも平等にある。 未来を創るのは自分自身だ。 ~SIerの中で生きるということ~
【17-E-4】 未来はどこにいても誰にでも平等にある。 未来を創るのは自分自身だ。 ~SIerの中で生きるということ~【17-E-4】 未来はどこにいても誰にでも平等にある。 未来を創るのは自分自身だ。 ~SIerの中で生きるということ~
【17-E-4】 未来はどこにいても誰にでも平等にある。 未来を創るのは自分自身だ。 ~SIerの中で生きるということ~
 
アプリ・サービスのUI/UXのモックアップ(ワイヤフレーム)の簡単な描き方
アプリ・サービスのUI/UXのモックアップ(ワイヤフレーム)の簡単な描き方アプリ・サービスのUI/UXのモックアップ(ワイヤフレーム)の簡単な描き方
アプリ・サービスのUI/UXのモックアップ(ワイヤフレーム)の簡単な描き方
 

flutter_screenutilを実業務で使ってみた.pdf