MOB-LOG

モブおじの記録 (Programming, 統計・機械学習)

Flutter

Flutterでのオブジェクト同一性の確認 identityHashCode

Flutterでオブジェクトを比較するとき、`identityHashCode()`によるハッシュ値が使用できる。調べたい場面でブレークして、`identityHashCode(obj)`とするだけ。これで異なるスコープやsetState前後の同名の変数でもオブジェクトを比較できる。

Flutterでカメラ撮影後、CameraControllerを生成してCameraPreviewを立ち上げても何も映らない件→Future.delayed()で1[msec]だけ待ったら何とかなった

TL;DR FlutterでCameraController.takePicture()後にCameraPreviewを再起動するため、CameraControllerインスタンスを再生成・initialize()していたらAndroidでの実機デバッグ中にinitialize()が失敗してしまった。よくわからないが、インスタンスの生成→ini…

Flutterでウィジェットの再構築のために自身のクラスのインスタンスを生成して遷移していたが意味がなかった様子。StreamBuilderでFirebaseのドキュメントを表示していて、値が変更されても表示が更新されないとき。

(タイトルに書いてあるものの、今回はStreamBuilderもDocumentSnapshotも関係ありません) TL;DR Firebaseからのデータの再取得と画面の更新のためにウィジェットのインスタンスを再生成→新たなインスタンスへ遷移、としてリロードボタンを設置していたが、そ…

Flutterで遷移のときNavigatorに余計な遷移を残したくない場合、`pop()`→`push()`ではなく、`pushReplacement`を使う。 Navigator.of(context).pop() does not work in Flutter

TL; DR Flutterで遷移のときNavigatorに余計な遷移を残したくない場合、pop()→push()ではなく、pushReplacementを使う。 ⇒ Navigator.of(context).pushReplacement(MaterialPageRoute()) pop()→push()だとでコンテキストのスタックが現在のウィジェットしか…

Flutterで setState() or markNeedsBuild called during build →StatefulWidgetの@override build() が完了する前にMaterialPageRouteによる遷移を実行してしまったときのエラー

TL;DR StatefulWidgetの@override build() 内でMaterialPageRouteによる遷移やsetState()を実行してしまうと、setState() or markNeedsBuild called during build 例外が発生するので、そういった処理はbuildが完了した後に実行されるようにWidgetsBinding.i…

FlutterでWidget遷移したいがBuildContextが参照できないとき→ GlobalKey<State>をnavigatorKeyに指定してアプリのどこからでも参照できるようにする

TL;DR Flutterにて、Navigator.of(context)としてウィジェットを遷移するために、いつでもどこでも参照できる最新のBuildContextを保持した変数が欲しかった。 ⇒ MaterialAppのnavigatorKeyはどこからでも参照できる様子なので、main()でrunAppするとき、大…

FlutterでWidget遷移したいがBuildContextが参照できないとき→ GlobalKey<State>をnavigatorKeyに指定してアプリのどこからでも参照できるようにする

TL;DR Flutterにて、Navigator.of(context)としてウィジェットを遷移するために、いつでもどこでも参照できる最新のBuildContextを保持した変数が欲しかった。 ⇒ MaterialAppのnavigatorKeyはどこからでも参照できる様子なので、main()でrunAppするとき、大…

MapをMethodの引数にしようとしたときのnon_constant_default_value エラー: Map<String, dynamic> The default value of an optional parameter must be constant

関数、メソッドの引数に Map<String, dynamic> とか List <dynamic> とか与えたくなるけど、引数がOptionalの場合、適当に以下のように初期値を与えようとするとnon_constant_default_valueエラーになってしまう(”The default value of an optional parameter must be constant” とか</dynamic></string,>…