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
61
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
250
Flutterハンズオン 4
aya_ebata
0
100
Flutterハンズオン 3
aya_ebata
0
58
Flutterハンズオン 2
aya_ebata
0
62
Flutterハンズオン 1
aya_ebata
0
95
あたらしい もじれつの かきかた
aya_ebata
0
110
社内勉強会vol.3@ごーふぁー荘
aya_ebata
0
760
社内勉強会vol.2@ごーふぁー荘
aya_ebata
1
760
社内勉強会vol.1@ごーふぁー荘
aya_ebata
0
700
Other Decks in Technology
See All in Technology
ブロックテーマ時代における、テーマの CSS について考える Toro_Unit / 2025.09.13 @ Shinshu WordPress Meetup
torounit
0
120
スマートファクトリーの第一歩 〜AWSマネージドサービスで 実現する予知保全と生成AI活用まで
ganota
2
210
Language Update: Java
skrb
2
290
これでもう迷わない!Jetpack Composeの書き方実践ガイド
zozotech
PRO
0
340
5分でカオスエンジニアリングを分かった気になろう
pandayumi
0
240
allow_retry と Arel.sql / allow_retry and Arel.sql
euglena1215
1
160
Autonomous Database - Dedicated 技術詳細 / adb-d_technical_detail_jp
oracle4engineer
PRO
4
10k
機械学習を扱うプラットフォーム開発と運用事例
lycorptech_jp
PRO
0
230
DDD集約とサービスコンテキスト境界との関係性
pandayumi
3
280
オブザーバビリティが広げる AIOps の世界 / The World of AIOps Expanded by Observability
aoto
PRO
0
360
Aurora DSQLはサーバーレスアーキテクチャの常識を変えるのか
iwatatomoya
1
910
COVESA VSSによる車両データモデルの標準化とAWS IoT FleetWiseの活用
osawa
1
270
Featured
See All Featured
The Invisible Side of Design
smashingmag
301
51k
Balancing Empowerment & Direction
lara
3
620
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
Fireside Chat
paigeccino
39
3.6k
How GitHub (no longer) Works
holman
315
140k
Agile that works and the tools we love
rasmusluckow
330
21k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.9k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
580
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
Designing for humans not robots
tammielis
253
25k
Navigating Team Friction
lara
189
15k
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の基礎に加えて必要なパッケージ管理、画面遷移、状態管理 などの小技について学んだ - 自分で簡単なアプリを作成して、学んだことを実践してみるとさらに 理解が深まるかなと思います