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
Flutterハンズオン 5
Search
Aya Ebata
September 16, 2024
Technology
0
77
Flutterハンズオン 5
Aya Ebata
September 16, 2024
Tweet
Share
More Decks by Aya Ebata
See All by Aya Ebata
JEP 480: Structured Concurrency
aya_ebata
0
270
Flutterハンズオン 4
aya_ebata
0
140
Flutterハンズオン 3
aya_ebata
0
79
Flutterハンズオン 2
aya_ebata
0
84
Flutterハンズオン 1
aya_ebata
0
120
あたらしい もじれつの かきかた
aya_ebata
0
120
社内勉強会vol.3@ごーふぁー荘
aya_ebata
0
780
社内勉強会vol.2@ごーふぁー荘
aya_ebata
1
790
社内勉強会vol.1@ごーふぁー荘
aya_ebata
0
720
Other Decks in Technology
See All in Technology
Agile Leadership Summit Keynote 2026
m_seki
1
190
予期せぬコストの急増を障害のように扱う――「コスト版ポストモーテム」の導入とその後の改善
muziyoshiz
1
1.2k
コスト削減から「セキュリティと利便性」を担うプラットフォームへ
sansantech
PRO
3
1.1k
15 years with Rails and DDD (AI Edition)
andrzejkrzywda
0
160
制約が導く迷わない設計 〜 信頼性と運用性を両立するマイナンバー管理システムの実践 〜
bwkw
2
800
あたらしい上流工程の形。 0日導入からはじめるAI駆動PM
kumaiu
5
740
toCプロダクトにおけるAI機能開発のしくじりと学び / ai-product-failures-and-learnings
rince
6
5.4k
分析画面のクリック操作をそのままコード化 ! エンジニアとビジネスユーザーが共存するAI-ReadyなBI基盤
ikumi
0
130
M&A 後の統合をどう進めるか ─ ナレッジワーク × Poetics が実践した組織とシステムの融合
kworkdev
PRO
1
330
Webhook best practices for rock solid and resilient deployments
glaforge
1
210
Azure Durable Functions で作った NL2SQL Agent の精度向上に取り組んだ話/jat08
thara0402
0
120
Embedded SREの終わりを設計する 「なんとなく」から計画的な自立支援へ
sansantech
PRO
2
1.8k
Featured
See All Featured
Deep Space Network (abreviated)
tonyrice
0
44
So, you think you're a good person
axbom
PRO
2
1.9k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.1k
From π to Pie charts
rasagy
0
120
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.9k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
Building Applications with DynamoDB
mza
96
6.9k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
61
49k
GitHub's CSS Performance
jonrohan
1032
470k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
230
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
59
42k
WCS-LA-2024
lcolladotor
0
440
Transcript
Flutterハンズオン 5 2024/09/17 社内勉強会 えばた あや
今日話すこと 1. Webで実行 2. パッケージ管理 3. 画面遷移 4. 状態管理 5.
Widget Inspector 6. 実機でデバッグ(Android) 7. ノーコードツールの紹介 8. 自己勉強用資料の紹介
1. Webで実行
Webで実行 1. 使用するデバイスをChromeに変更する
Webで実行 2. 実行するとChromeが立ち上がる
2. パッケージ管理
パッケージ管理 1. パッケージをpub.devから検索する - https://pub.dev/ - 今回は例としてgoogle_fontsを入れる
パッケージ管理 2. Installingのタブへ移動するとインストール方法があるので確認する
パッケージ管理 3-1. コマンドラインからパッケージを追加する $ flutter pub add google_fonts
パッケージ管理 3-2. パッケージ管理ファイルpubspec.yamlから追加する 1. pubspec.yamlのdependenciesに以下のように追加 dependencies: google_fonts: ^6.2.1 2. flutter
pub getを実行 (VSCodeからだと右上のボタンを実行)
パッケージ管理 4. ReadmeやExampleのタブで使い方を確認する
パッケージ管理 5. 以下を適当なアプリに入れて反映されていることを確認する import 'package:google_fonts/google_fonts.dart'; Text( 'This is Google Fonts',
style: GoogleFonts.nerkoOne(), ),
パッケージ管理 元ネタのページ https://docs.flutter.dev/packages-and-plugins/using-packages
3. 画面遷移
画面遷移 - Flutterの画面遷移はNavigatorとRouterがある - Navigator - 小規模なアプリケーション向き - Router -
複雑なディープリンクとナビゲーションの要件がある アプリケーション向き - Web上で実行されているとき、アドレスバーとの同期を維持する ためにも使用
Navigator - Navigator.of().push()で画面遷移ができる ElevatedButton( child: const Text('Navigator'), onPressed: () {
Navigator.of(context).push( MaterialPageRoute(builder: (context) => const Placeholder()), ); }, ),
Router 1. Routerを使うためのルーティングパッケージを追加する - go_router、auto_route、beamerなど - 今回は公式の説明で使用されていたgo_routerで説明します 2. go_routerを追加する -
https://pub.dev/packages/go_router
Router 3. router用の変数を用意 final _router = GoRouter( routes: [ GoRoute(
path: '/', builder: (context, state) => const MyHomePage(title: 'Flutter Demo Home Page'), ), ], );
Router 4. MaterialAppをMaterialApp.routerに変更 MaterialApp.router( // ... );
Router 5. MaterialApp.router()の引数のhomeを削除し、routerConfigを追加 - ここまででRouterのベースが作成完了 MaterialApp.router( // ... home: const
MyHomePage(title: 'Flutter Demo Home Page'), routerConfig: _router, );
Router 6. 画面遷移のためのルーティングを追加 - _router変数のroutesに以下を追加 GoRoute( path: '/placeholder', builder: (context,
state) => const Placeholder(), ),
Router 7. 先ほど作成したElevatedButtonのonPressedを以下に変更 context.go('/placeholder');
画面遷移 元ネタのページ https://docs.flutter.dev/ui/navigation
4. 状態管理
状態管理 - 前回のハンズオンではStatefulWidgetを使って状態管理をしていた が、状態管理パッケージを導入して状態管理をしていくこともできる - 状態管理パッケージの一例 - Provider https://pub.dev/packages/provider -
GetIt https://pub.dev/packages/get_it - Riverpod https://pub.dev/packages/riverpod - Bloc https://pub.dev/packages/bloc - Rxdart https://pub.dev/packages/rxdart
状態管理 - StatefulWidgetを継承したWidgetにて状態管理をした場合、 そのWidgetで状態管理された値やメソッドを使用したいWidgetまで 渡していく必要がある - そのWidgetにたどり着くまでの全てのWidgetで値やメソッドを 持つ必要が出てきてしまう - それによって実際に再描画させたいWidgetまでの受け渡しに
使用したWidgetにも更新がかかる
状態管理 - 状態管理されている値が変更されると、3つのWidgetに再描画が かかる
状態管理 - 状態管理パッケージを使うことで状態管理がしやすくなる - どこからでも状態管理された値やメソッドを取得できるようになる - 再描画したいWidgetだけを更新できる
状態管理 参考資料 https://docs.flutter.dev/data-and-backend/state-mgmt/options
5. Widget Inspector
Widget Inspector - Widget Inspectorとは、既存のレイアウトを細かく確認したり、 レイアウトに問題がある場合に調査したりすることができるツール - Widget Tree: Widgetの階層を可視化する
- Layout Explorer: テキスト、ボタン、トグルなどの管理から、 中央揃え、パディング、行、列などのレイアウトまで確認できる
Widget Inspector - VSCodeからはアプリ起動後、以下の虫眼鏡ボタンをクリックすると 起動できる
Widget Inspector
Widget Inspector - Widget Tree
Widget Inspector - Layout Explorer
Widget Inspector - Select Widget Modeを使うと実際のアプリで表示されているWidget から詳細を確認できる
Widget Inspector - こんな感じに実際の アプリで選択して確認 できる
Widget Inspector 元ネタのページ https://docs.flutter.dev/tools/devtools/inspector
6. 実機でデバッグ(Android)
実機でデバッグ(Android) 1. Android端末にて「開発者向けオプション」を有効にする ※ 端末によってやり方が違うのでやり方は検索してください 2. 開発者向けオプションの画面でUSBデバッグをONにする 3. USBでPCと接続する 4.
USBデバッグを許可するか聞かれた場合は許可をする
実機でデバッグ(Android) 5. VSCodeのデバイス選択で実機を選択する
実機でデバッグ(Android) 6. 実行をし、実機でアプリが表示されていることを確認する
APKを作成して実機で確認する 1. 以下のコマンドでAPKを作成する $ flutter build apk 2. プロジェクト配下の以下のディレクトリにAPKが作成される ./build/app/outputs/flutter-apk
3. 実機でインストールして確認する
7. ノーコードツールの紹介
ノーコードツールの紹介 Flutter Flow https://flutterflow.io/ Flutter Studio https://flutterstudio.app/
8. 自己勉強用資料の紹介
自己勉強用資料の紹介 Googleが出しているCodelab https://codelabs.developers.google.com/codelabs/flutter-codelab-fi rst?hl=ja#0 Flutter公式のCodelab一覧 https://docs.flutter.dev/codelabs
まとめ - Flutterの基礎に加えて必要なパッケージ管理、画面遷移、状態管理 などの小技について学んだ - 自分で簡単なアプリを作成して、学んだことを実践してみるとさらに 理解が深まるかなと思います