Start Debugging

タグ: dart

117 件 · ページ2/12

2026-10-18 dartflutterstreams
rxdart の BehaviorSubject なしで Dart Stream の最新値を後から購読するリスナーに再送する方法
broadcast の StreamController は、購読する前に発行されたイベントをすべて破棄します。ここでは、Stream.multi で作る依存関係なしの BehaviorSubject 代替、既存のストリームに使える replayLatest() 拡張、イベントを黙って取りこぼす async* の近道、StreamBuilder の initialData の注意点を、すべて Dart 3.12.2 で検証して紹介します。
Flutter アプリのローカルストレージを Hive から Drift へ移行する (hive_ce 2.22 から drift 2.35 へ)
既存の Hive box を、ユーザーの端末上の drift SQLite データベースへ一度だけ安全にインポートする方法です。スキーマ設計、インポート関数、冪等性、box の削除に加えて、データを黙って壊す 2 つの落とし穴 (DateTime の精度とクラス名の衝突) を扱います。Flutter 3.44.8、hive_ce 2.22.0、drift 2.35.2 で検証しています。
修正: flutter upgrade や Flutter バージョンの切り替え後に pubspec.lock が変更扱いになる
Flutter SDK は meta、vector_math、test_api、matcher のバージョンを固定しているため、SDK を変えるたびにロックファイルが再解決されます。さらに flutter upgrade は今いるプロジェクトに対して pub upgrade を実行します。リポジトリごとに Flutter バージョンを 1 つに固定し、CI でロックファイルを強制しましょう。
go_router の StatefulShellRoute で NavigationBar の選択タブを現在のルートと同期させる方法
NavigationBar.selectedIndex は、setState で持つフィールドや initState で作ったコピーではなく、StatefulNavigationShell.currentIndex から取得します。Flutter 3.44.8 と go_router 18.0.2 で検証し、ディープリンク、context.go、ブランチをまたぐ push でずれるパターン、location から算出したインデックスが誤る理由、didUpdateWidget でタブ変更に反応する方法を解説します。
2026-10-10 flutterdartflavors
Flutter の flavor とは何か。ビルドモードとどう違うのか
ビルドモード (debug、profile、release) は Flutter が Dart コードをどうコンパイルするかを決めます。flavor (dev、staging、prod) は Gradle と Xcode で定義するネイティブのビルドバリアントで、どのアプリを出荷するかを決めます。この 2 つは独立した軸であり、2 つの flavor と 3 つのモードで 6 つのビルドになります。Flutter 3.44.8 と AGP 9.0.1 で検証し、ソースは 3.47.7 で確認しています。
Flutter のページ遷移ビルダー再編後にカスタムページ遷移を移行する (Flutter 3.44 から 3.47)
Flutter は PageTransitionsBuilder と 2 つの組み込みビルダーを widgets レイヤーへ、CupertinoPageTransitionsBuilder を Material から移動しました。実際に壊れるもの (import が 1 つだけで、エラーは紛らわしい 'Not a constant expression')、dart fix が行うことと material_ui プロジェクトで誤ること、そしてカスタムビルダーとルートを Material にまったく依存しない形に書き換える方法を解説します。
2026-10-05 flutterdartadmob
Flutter でアダプティブ AdMob バナーの領域を確保してレイアウトシフトを防ぐ方法
google_mobile_ads の公式サンプルは onAdLoaded まで何も描画しないため、画面が表示された数秒後にコンテンツが 150 dp 跳ねます。先にアンカー型アダプティブのサイズを取得し、SizedBox で領域を確保し、高さを起動をまたいで保存してから、広告を読み込みます。Flutter 3.44.8 と google_mobile_ads 9.1.0 で計測しました。
前へ 次へ