「Flutter/画面遷移/画面遷移イベント検知」の版間の差分
提供: 初心者エンジニアの簡易メモ
| 行1: | 行1: | ||
| − | == | + | ==画面でイベント検知する== |
| + | 結局MyAppと Page側の routeObserverが同期されておらず didPush だけ機能したが、他が機能しなかった。 | ||
| + | |||
| + | <pre> | ||
| + | class MyApp extends StatelessWidget { | ||
| + | + RouteObserver<PageRoute> routeObserver = new RouteObserver<PageRoute>(); | ||
| + | @override | ||
| + | Widget build(BuildContext context) { | ||
| + | return MaterialApp( | ||
| + | title: 'Memo', | ||
| + | theme: ThemeData( | ||
| + | primarySwatch: Colors.blue, | ||
| + | ), | ||
| + | home: ArticleListTopPage(title: 'Memo List Page'), | ||
| + | + navigatorObservers: <NavigatorObserver>[routeObserver], | ||
| + | ); | ||
| + | } | ||
| + | } | ||
| + | </pre> | ||
_TextPageState と ArticleTextPage は各々のクラス名を入れる。 | _TextPageState と ArticleTextPage は各々のクラス名を入れる。 | ||
| 行38: | 行56: | ||
} | } | ||
</pre> | </pre> | ||
| + | |||
参考:https://qiita.com/najeira/items/89d8014a30102204babb | 参考:https://qiita.com/najeira/items/89d8014a30102204babb | ||
2019年11月16日 (土) 16:45時点における版
画面でイベント検知する
結局MyAppと Page側の routeObserverが同期されておらず didPush だけ機能したが、他が機能しなかった。
class MyApp extends StatelessWidget {
+ RouteObserver<PageRoute> routeObserver = new RouteObserver<PageRoute>();
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Memo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: ArticleListTopPage(title: 'Memo List Page'),
+ navigatorObservers: <NavigatorObserver>[routeObserver],
);
}
}
_TextPageState と ArticleTextPage は各々のクラス名を入れる。
class _TextPageState extends State<ArticleTextPage> with RouteAware {
RouteObserver<PageRoute> routeObserver = new RouteObserver<PageRoute>();
@override
void didChangeDependencies() {
super.didChangeDependencies();
routeObserver.subscribe(this, ModalRoute.of(context));
}
@override
void dispose() {
routeObserver.unsubscribe(this);
super.dispose();
}
// この画面に戻ったとき
void didPopNext() {
debugPrint("didPopNext ${runtimeType}");
}
// 画面がpushされたとき
void didPush() {
debugPrint("didPush ${runtimeType}");
}
// 画面がpopされたとき
void didPop() {
debugPrint("didPop ${runtimeType}");
}
// 新しい画面へ移動した時
void didPushNext() {
debugPrint("didPushNext ${runtimeType}");
}
