Start Debugging

タグ: flutter

156 件 · ページ1/16

2026-10-24 dartflutterlints
Dart の depend_on_referenced_packages lint とは何か、推移的インポートで警告が出るのはなぜか
depend_on_referenced_packages は、別の依存関係経由で解決できる場合でも、自分の pubspec.yaml に記載されていないパッケージを import または export すると警告します。Dart 3.12.2 と Flutter 3.44.8 でこのルールが何を検査するのか、推移的インポートが実際にバグである理由、そして各パターンの修正方法を解説します。
Flutter アプリを Color.withOpacity から Color.withValues へ移行する (Flutter 3.27 以降)
非推奨になった Color.withOpacity、opacity、value、red、green、blue、alpha を withValues、.a/.r/.g/.b、toARGB32 に置き換えます。dart fix が書き換える範囲、書き換えずに残す 4 つのゲッター、置き換え後に色の厳密なアサーションと Map<Color, T> の検索が壊れる理由、そして withOpacity が Display P3 を黙って失わせる仕組みを解説します。Flutter 3.44.8 と Dart 3.12.2 で検証しました。
Flutter アプリを WidgetsBindingObserver.didChangeAppLifecycleState から AppLifecycleListener に移行する (Flutter 3.13+)
手書きの WidgetsBindingObserver によるライフサイクル処理を AppLifecycleListener に置き換えます。コールバックの対応表、強制される状態遷移、網羅的な switch を壊す新しい hidden 状態、デスクトップの終了リクエスト、突然アサートに失敗するテストまでを扱います。Flutter 3.44.8 と Dart 3.12.2 で検証しています。
Flutter の Expanded と Flexible の違い: FlexFit.tight と FlexFit.loose を解説
子ウィジェットが Row や Column 内の自分の割り当て分を埋める必要があるなら Expanded、割り当て分より小さくてもよいなら Flexible を使います。Flutter 3.44 での実測レイアウトで、余った領域の行き先、loose な子が兄弟に領域を譲らない理由、無制限の制約下で Flexible だけが使える場面を確認します。
修正: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is X, expected version is Y (Flutter Android)
依存ライブラリが、ビルドのコンパイラーより少なくともマイナーバージョン 2 つ新しい Kotlin でビルドされています。settings.gradle.kts の org.jetbrains.kotlin.android のバージョンを X マイナス 1 以降に上げるか、依存ライブラリを古いバージョンに固定してください。
2026-10-19 flutterdarttheming
Flutter で ThemeExtension を使ってカスタムデザイントークンを定義し、ライトテーマとダークテーマの間でアニメーションさせる方法
ThemeExtension をサブクラス化し、extensions リストで ThemeData ごとに 1 つのインスタンスを登録し、Theme.of(context).extension<T>() で読み取ります。さらに本物の lerp を書いて、ライトとダークの切り替え中に MaterialApp の AnimatedTheme がトークンを補間できるようにします。色、角丸、シャドウ、テキストスタイル、真偽値の扱い、拡張が見つからないときのクラッシュ、他のすべての拡張を消してしまう copyWith の落とし穴、== と hashCode が必要な理由まで、すべて Flutter 3.44.8 のウィジェットテストで検証しています。
Flutter で子ウィジェットの型が変わらないときに AnimatedSwitcher をアニメーションさせる方法
AnimatedSwitcher は Widget.canUpdate が新しい子を別のウィジェットと判定したときだけ遷移します。そのため、キーのない Text から Text への切り替えはその場で更新されるだけです。この記事では 1 行の修正、キーを置くべき位置、UniqueKey が落とし穴になる理由、静的な transitionBuilder が引き起こすスライド方向のバグ、既定の Stack によるレイアウトのずれを、Flutter 3.44.8 のウィジェットテストで検証して解説します。
次へ