April 30, 2021

DartのStreamでRxのBehavior Subjectを再現する

Dartには標準ライブラリのasyncパッケージにStream クラスが含まれています。 これはこれでとても便利なのですが、Androidで長く使っていたせいで非同期処理の操作がRx脳になっているので、時々こういうのはRxではできるのになーって思うことが多々あります。 Rxで個人的に一番好きなクラスはBehaviorSubjectでStreamの最後の値をキャッシュしておいて、Subscribe(Listen)と同時に最後の値をemitしてくれるものです。 オペレータだとdistinctUntilChangedかscanかwithLatestFron(combine)です。 Read more

March 31, 2021

FlutterのLifecycle(onResume, onPause)を検知する

FlutterはUIを構成するものはすべてWidgetでできています。そのため、AndroidにあるActivityやiOSにあるViewControllerのような画面の概念は厳密にはありません。 FlutterではNavigatorがページのような概念を持ったRoute(参考) のスタックを管理することで画面遷移を実現しています。 今回は NatigatorObserver と WidgetsBindingObserver を使ってアプリのライフサイクルイベントを検知します。 Read more

July 31, 2020

FlutterでExpandableなListViewを実現する

ListView(AndroidだとRecyclerView)に状態を持ったレイアウトを作ったことがあるとわかるかもしれませんが、 基本的に繰り返しパターンを持ったUIはどのフレームワークでもレンダリングの負荷を下げるためリストのアイテムを再利用して描画します。 Flutterでも同様にListViewではアイテムが再利用されます。 Read more

June 19, 2020

FlutterでGraphQLを実用的に使う

WebやAndorid, iOSでおなじみのApollo Client はFlutterに対応していません。 Flutterでは代わりに、graphql_flutterというApollo Clientをインスパイアしたライブラリがあるのでこれを使います。 Read more

March 31, 2020

FlutterでHierarchical Transitionsを使ってスムーズな遷移を実装する

Hierarchical Transitionとは Material Designの特徴でもある階層構造(Elevation)を意識した遷移方法で、 選択したオブジェクトが遷移元である低い階層から遷移先の高い階層へ移動することで、 現実の物質と同じ動きをすると同時に、画面の要素(タイトルの文字等)が次の画面に引き継がれることで より自然な操作体験を得ることが出来ます。 Read more

© AAkira 2023