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
なぜSaaSがMCPサーバーをサービス提供するのか?
sansantech
PRO
8
2.7k
2025年夏 コーディングエージェントを統べる者
nwiizo
0
140
生成AIでセキュリティ運用を効率化する話
sakaitakeshi
0
490
フィンテック養成勉強会#56
finengine
0
140
KotlinConf 2025_イベントレポート
sony
1
110
「どこから読む?」コードとカルチャーに最速で馴染むための実践ガイド
zozotech
PRO
0
280
会社紹介資料 / Sansan Company Profile
sansan33
PRO
6
380k
「全員プロダクトマネージャー」を実現する、Cursorによる仕様検討の自動運転
applism118
18
8k
Flutterでキャッチしないエラーはどこに行く
taiju59
0
220
20250910_障害注入から効率的復旧へ_カオスエンジニアリング_生成AIで考えるAWS障害対応.pdf
sh_fk2
3
220
Obsidian応用活用術
onikun94
1
450
おやつは300円まで!の最適化を模索してみた
techtekt
PRO
0
290
Featured
See All Featured
A Modern Web Designer's Workflow
chriscoyier
696
190k
Balancing Empowerment & Direction
lara
3
620
What's in a price? How to price your products and services
michaelherold
246
12k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
61k
The Invisible Side of Design
smashingmag
301
51k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
Why Our Code Smells
bkeepers
PRO
339
57k
Reflections from 52 weeks, 52 projects
jeffersonlam
352
21k
Producing Creativity
orderedlist
PRO
347
40k
The Language of Interfaces
destraynor
161
25k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Designing for Performance
lara
610
69k
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の基礎に加えて必要なパッケージ管理、画面遷移、状態管理 などの小技について学んだ - 自分で簡単なアプリを作成して、学んだことを実践してみるとさらに 理解が深まるかなと思います