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で画面遷移を検知する
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
kuwapp
April 18, 2018
Programming
8.7k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Flutterで画面遷移を検知する
Flutter meetup Tokyo #1
Flutterで画面遷移を検知する
kuwapp
April 18, 2018
More Decks by kuwapp
See All by kuwapp
FlutterPluginの作り方
kuwapp
7
4.5k
Flutter開発に役立つ Package Plugin 10選
kuwapp
5
17k
Flutter アニメーションはじめの一歩
kuwapp
1
1.5k
Other Decks in Programming
See All in Programming
「AI時代、配布するPythonコードをどう守るか: 難読化の実験と判断軸」 #PyconJP2026
pkshadeck
PRO
2
170
【デモ】Kiroで体験する仕様駆動開発|設計からコーディングまでAIと進める開発フロー
cmkudo
0
590
高専、大学編入、そして未踏へ〜プロダクト開発とキャリアの歩み - Technical College, University Transfer, and On to “Mitou” / My Journey in Product Development and Career
pkmiya
0
140
ソフトウェアラスタライザ
fadis
1
790
デプロイ直後のレイテンシスパイクを調べたら、 Railsの仕様にたどり着いた
nhsykym
0
110
AIの中の人になってみる
htkym
0
170
不幸な GC
chencmd
0
880
Deep dive into the select statement (GopherCon UK)
jespino
0
170
Claude Codeを組織的に動かして月400PRを実現した話
happy_ryo
0
260
MIZARU@SPAJAM2026 第二回予選
1901drama
0
110
Kiroで創り、AgentCoreで繋ぐ!AWSで実践する「AI-DLC」から「AIエージェント統合」までの最新地図
licux
2
350
AWS Step Functions 大規模並列の壁を越える / jaws-sonic-2026-niigata-step-functions
kasacchiful
PRO
0
380
Featured
See All Featured
Git: the NoSQL Database
bkeepers
PRO
432
67k
KATA
mclloyd
PRO
35
15k
Leo the Paperboy
mayatellez
8
2.2k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.1k
エンジニアに許された特別な時間の終わり
watany
108
250k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
BBQ
matthewcrist
89
10k
Thoughts on Productivity
jonyablonski
76
5.4k
A Modern Web Designer's Workflow
chriscoyier
698
190k
Balancing Empowerment & Direction
lara
6
1.3k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.1k
Darren the Foodie - Storyboard
khoart
PRO
3
3.9k
Transcript
Flutterで画面遷移を検知する Flutter Meetup Tokyo #1
About Me • @kuwapp_dev / Yusuke Hata • モイ株式会社 •
Androidエンジニア • Flutter は alpha のときに二ヶ月程 • メイド喫茶駆動開発
画面遷移を検知できれば... 以下のようなケースに対応できる!!!! 1. 別画面に遷移したら非同期処理停止したい 2. 画面閉じる前に大事なデータ保存しておきたい 3. 画面に戻ったら最新のデータ読み込みたい
Flutter の画面遷移方法 • Navigator.pushNamed(context, “/detail”); ◦ 別画面へ遷移する • Navigator.pop(context); ◦
別画面から戻る(今いる画面を pop する)
どうやって検知しよう??
ベタ書きする?? 画面遷移する処理の上にベタ書きする
(ヾノ・∀・`)ナイナイ
ベタ書きすると • Navigator.push の呼び出し時に必ず書く必要がある • 書き忘れが生じるかもしれない バグのもと!!
画面遷移をいい感じに検知する仕 組みはないのか??
そこで RouteObserver
RouteObserver RouteObserver に登録しておけば、画面遷移時(push pop時)に登録しておいたリス ナーを呼び出してくれる!!
RouteObserver 準備 インスタンスを生 成 navigatorObser versに登録
RouteObserver イベントの購読 • routeObserver.subscribe(this,ModalRoute.of(context)); ◦ push、popのイベントを購読する。 • routeObserver.unsubscribe(this); ◦ イベントの購読をやめる。State
の dispose とかで呼び出そう。 thisにはコールバック先のRouteAwareを指定
RouteObserver 購読 リスナーの RouteAwareを実装 画面遷移のイベントを購読 イベントの購読解除 RouteAware のメソッド push pop
時に呼び出される
RouteObserver RouteAware のメソッド • void didPopNext() ◦ 上に積まれていた画面が pop され自身が表示されたとき
• void didPush() ◦ 自身が push されて表示されたとき • void didPop() ◦ 自身が pop されたとき • void didPushNext() ◦ 次の画面が push されたとき(自身は非表示)
これで画面遷移を検知できるように なった
これでめでたしと思いきや....
RouteObserver は1つの画面 (Route)に1つのリスナーしか登録で きない
RouteObserver の内部実装を見ると Map でリスナーを保持していて 1つの T (Route) に対して 1つの RouteAware(リス
ナー) しか登録できないようになっている final Map<T, RouteAware> _listeners = <T, RouteAware>{}; まじか...
というのは幻想だった
alpha版のときは無理だったが いつの間にかできるようになってい た
Before After Before final Map<T, RouteAware> _listeners = <T, RouteAware>{};
After final Map<R, Set<RouteAware>> _listeners = <R, Set<RouteAware>>{};
Flutterは日々進化する!!!
まとめ • RouteObserver で画面遷移を検知できる • Flutterは日々進化する!最高!
ありがとうございました