Open6

Flutterメモ

阿部紘明阿部紘明

Widgetのbuild後に行う処理を行うメソッド

WidgetsBinding.instance?.addPostFrameCallback((timeStamp) {});
阿部紘明阿部紘明

親Widgetを取得する

final homeScreen = context.findAncestorWidgetOfExactType<HomeScreen>();
阿部紘明阿部紘明

画面遷移を検知する
with RouteAwareをわすれない

final routeObserver = RouteObserver();
MaterialApp(
  ...
  navigatorObservers: [routeObserver],
  ...
);

@override
void didChangeDependencies() {
  super.didChangeDependencies();
  routeObserver.subscribe(this, ModalRoute.of(context));
}

@override
void dispose() {
  routeObserver.unsubscribe(this);
  super.dispose();
}
阿部紘明阿部紘明

Freezedメモ
When

var model = Model.first('42');
print(
  model.when(
    first: (String a) => 'first $a',
    second: (int b, bool c) => 'second $b $c'
  ),
); // first 42

MaybeWhen

var union = Union(42);
print(
  union.maybeWhen(
    null, // ignore the default case
    loading: () => 'loading',
    // did not specify an `error` callback
    orElse: () => 'fallback',
  ),
); // fallback