訳者 はじめに
Kevin Chisholmさんによる「What’s new in Flutter 3.41」(原文)の日本語訳です。勝手に訳して、後から許可を取ります(笑)
誤訳や改善があれば、ご連絡ください。
はじめに
本日、Flutter 3.41のリリースを発表できることを大変嬉しく思います。これは私たちの共同の旅における変革的なマイルストーンです!開発者にとってこれほどエキサイティングな時期はありません。このリリースは、Flutterの方向性を形作るコミュニティの力を強化するという私たちの決意を表しています。145名のユニークな貢献者による868件のコミットを含むFlutter 3.41は、透明性とモジュール性をさらに高め、Flutterへの貢献体験を向上させます。
公開リリースウィンドウを導入し、貢献した変更がいつ安定版リリースに反映されるかを把握しやすくします。デザインライブラリの分離も継続中です。これにより長期的にはデザインシステムの進化を加速させると同時に、アプリに採用するデザイン変更を制御できるようになります。新しいフラグメントシェーダーの改善でGPUの限界に挑戦する方も、コンテンツサイズビューで既存のネイティブアプリにFlutterをシームレスに組み込む方も、このリリースが自信とスピードを持って構築するためのツールを提供します。
探求すべきことは山ほどあります。さっそく掘り下げてみましょう…

構造的透明性とモジュール性
公開リリースウィンドウ
複雑な機能を安全に実装するには予測可能性が重要です。コミュニティ全体が事前に計画を立てるために必要な可視性を提供するため、パブリックリリースウィンドウを導入します。ブランチのカットオフ日とリリース対象を明確に公開することで、変更が将来の安定版リリースにいつ反映されるかをコミュニティ全体が明確に把握できるようになります。
では、ブランチカットオフ日とは何でしょうか?この日付は、プルリクエストがデフォルトブランチ (Dartではmain、Flutterではmaster)にマージされる最終期限であり、次の安定版リリースへの組み込みを保証します。締め切り前にマージされたPRは次の安定版に反映され、締め切り後にマージされたPRは次のサイクルまで待機します。
2026年は4回の安定版リリース(本リリースを含む)を予定しており、日程は以下の通りです:
- Flutter 3.41 — 2月 | ブランチ作成日:1月6日
- Flutter 3.44 — 5月 | ブランチ作成日:4月7日
- Flutter 3.47 — 8月 | ブランチ作成日:7月7日
- Flutter 3.50 — 11月 | ブランチ作成日:10月6日
コアの軽量化に向けた分離
MaterialおよびCupertinoライブラリの別パッケージ化プロジェクトを継続中です。このモジュール化アプローチには以下の利点があります:
- 迅速なリリースサイクル:デザイン更新を四半期ごとのSDKリリースに依存せず、Material/Cupertinoの新機能やバグ修正を準備完了次第即時リリース可能。
- 独立したアップグレード: プロジェクト制約で古いSDKバージョンを使用している場合でも、デザインパッケージをアップグレードすれば最新のルックアンドフィールを取得できます。
- 適応型デザイン: バージョン管理されたパッケージにより、iOSやAndroidが「Liquid Glass」や「Material 3 Expressive」のような大幅なデザイン変更を導入した際にも迅速に対応でき、アプリが時代遅れになることを防ぎます。
進捗状況はGitHub issueで随時ご確認ください。
エコシステム標準の採用
コミュニティの活性化には、既存ツールとの良好な連携が不可欠です。
Swift Package ManagerとUIScene
CocoaPodsからSwift Package Managerへの移行は継続中です。Appleエコシステムの標準となったSwift Package Managerをプラグイン開発者に採用することを強く推奨します。さらに、将来のiOSリリースとの互換性を確保するため、FlutterはデフォルトでUISceneライフサイクルを完全にサポート するようになりました。この更新は、今後のiOSバージョンにおけるAppleの要件を満たす上で極めて重要です。非推奨となったAppDelegateライフサイクルロジックからの移行を円滑化するため、移行ガイドをご確認ください。
Android Gradle Plugin (AGP) 9 と Kotlin DSL
最新のAndroid標準への適合を継続しています。Android Gradle Plugin (AGP) 9のリリースに伴い、新たな厳格化要件のサポートと、その対応方法に関するガイダンスの提供に取り組んでいます。
警告: プラグインのAGP 9移行およびプラグインを使用したAGP 9上のFlutterアプリのサポートが未完了のため、Android向けFlutterアプリをAGP 9に更新しないでください (#181383)。このサポートは、FlutterチームがAGPの旧バージョンとの下位互換性を監査している間、一時停止されています。ガイダンスの変更に伴い、この移行ドキュメントは更新されます。
コミュニティメンバーのByoungchan Lee (bc-lee@)による貢献により、新規プラグインプロジェクトではデフォルトでGradleのKotlin DSLが使用されるようになりました。
プラットフォーム固有のアセット
Alex Frei (hm21@)の取り組みにより、最適化が容易になりました。
により、アセットの最適化が容易になりました。pubspec.yamlでアセットをバンドルする対象プラットフォームを指定できるようになり、例えばモバイルビルドから重いデスクトップアセットを除外するといった最適化が可能になり、アプリサイズを大幅に削減できます。
flutter:
assets:
- path: assets/logo.png
- path: assets/web_worker.js
platforms: [web]
- path: assets/desktop_icon.png
platforms: [windows, linux, macos]
コミュニティの声に耳を傾ける
GoogleのFlutterチームは、皆様にとって最も重要な事項を優先し続けています。
はじめに体験

長年にわたり、コミュニティからは「Flutterは魅力的で生産性が高いが、学習を始めるべき場所が分かりにくい」という声が寄せられてきました。
この度、完全に刷新したDartとFlutterの入門体験を公開しました。
これはFlutterとDartを用いたアプリ構築の基礎をガイドする新たな学習パスです。主な変更点を簡単にご紹介します:
- 新しい「クイックインストール」ガイドを導入しました。ウェブ上のホットリロードを活用し、プラットフォーム固有の環境を事前に設定することなく、学習者がFlutterの全機能を素早く体験できるようにします。このパスには、書面によるチュートリアル、低負荷のクイズ、そしてGoogleのFlutterチームから馴染みのある顔ぶれが登場する8本の新しい動画が含まれています。
- 学習者はこの学習パスを完了するまでに、4つのアプリを完全にゼロから構築します。
新しくデザインされたLearnセクションで、Jasprを活用した新しい入門体験をお試しください。
フラグメントシェーダーの改善
2025年第4四半期、FragmentShader APIを利用する開発者に対し「作業の妨げとなっている要因は何か」と調査を実施しました。API使用時の操作性向上とシェーダー定義の柔軟性拡大が必要とのご意見をいただきました。これを受け、以下の変更を実施しました:
- バージョン3.41で同期画像デコードを追加。従来、シェーダー用テクスチャの作成には1フレームの遅延が発生していました。
decodeImageFromPixelsSyncにより、テクスチャを生成し、同じフレーム内でサンプリングとして使用できるようになりました。 - 高ビットレートテクスチャ(最大128ビット浮動小数点)のサポートも追加し、GPUアクセラレーションされたフォトフィルターやSDF向けに高解像度ルックアップテーブル(LUT)の使用を可能にしました。
void attachTexture(ui.FragmentShader shader) {
ui.PictureRecorder recorder = ui.PictureRecorder();
Canvas canvas = Canvas(recorder);
canvas.drawCircle(const Offset(64, 64), 64, Paint()..color = Colors.red);
ui.Picture picture = recorder.endRecording();
ui.Image image = picture.toImageSync(
128,
128,
targetFormat: ui.TargetPixelFormat.rFloat32,
);
shader.setImageSampler(0, image);
}
ウィジェットプレビュー(実験的機能)
初期フィードバックに基づき、ウィジェットプレビュー機能を迅速に改良中です。今回のリリースでは以下の改善を実施しました:
- Flutter Inspectorのサポート: ウィジェットプレビュー環境内で組み込みのFlutter Inspectorインスタンスを利用可能に。これによりレイアウトやプレビュー対象ウィジェットの状態を容易に検査できます。重要なお知らせ: プロジェクトのウィジェットをデフォルトで表示するには、追加のパッケージディレクトリを設定する必要がある場合があります。設定するには、歯車アイコンをクリックしてFlutter Inspectorの設定を開き、プロジェクトを指す新しいパッケージディレクトリを追加してください。

dart:ffi依存関係を持つアプリケーションのサポート: 以前は、dart:ffiをインポートするライブラリへの推移的依存関係を持つウィジェットを含むプレビューでは、コンパイルエラーが発生し、プレビュー環境の更新が妨げられていました。これはdart:ffiが Web プラットフォームでサポートされていないため発生していました (flutter/flutter#166431)。ウィジェットプレビューアは現在、dart:ffiやdart:ioを含むプラットフォーム固有ライブラリへの依存関係を持つプレビューを処理できます。重要な注意点: これらのライブラリの API を呼び出すことはウィジェットプレビューアではサポートされておらず、プラットフォーム固有の API を呼び出すプレビューではエラーが表示されます。ネイティブプラットフォームとウェブプラットフォームの両方に対応したコードの書き方については、Dart の条件付きインポートに関するドキュメント を参照してください。
フレームワークの忠実性と洗練度
プラットフォームの忠実性と開発者効率に焦点を当て、現在の体験を継続的に改善しています。
iOSの洗練度
Flutter 3.41では、新しい「バウンドド・ブラー」スタイルによる視覚的改善を実施しました。従来、BackdropFilterを使用する半透明ウィジェットでは、エッジ部分で色の滲みが発生する可能性がありました。Impeller レンダリングエンジンの改良により、このアーティファクトを解消しました。
![]() |
![]() |
CupertinoSheet 向けに、showDragHandle プロパティを介したネイティブスタイルのドラッグハンドル処理のサポートも追加しました。

Add-to-App
既存のAndroidおよびiOSアプリへのFlutterビューの追加がさらに簡単になりました!既存のネイティブアプリに埋め込まれたFlutterビューは、コンテンツに基づいて自動的にサイズ変更できるようになりました。以前は、Flutterビューはネイティブの親から提供される固定サイズを必要としていました。これにより、ネイティブのスクロール可能なビューにFlutterビューを追加するなどのシナリオが困難でした。
この機能を利用するには、ルートウィジェットが非制限制約をサポートしている必要があります。ツリーの最上位で事前定義サイズを必要とするウィジェット(ListView や LayoutBuilder など)の使用は避けてください。これらは動的サイズ調整ロジックと競合します。
iOSでこの動作を有効にするには、FlutterViewController.isAutoResizableをtrueに設定してください。 Androidの場合、Androidマニフェストでコンテンツサイズ設定を有効にし、FlutterViewの幅または高さをcontent_wrapに設定してください。
![]() |
![]() |
ナビゲーションとスクロール
基本操作の挙動に残っていた不自然さを解消するため、以下の変更を実施しました:
Navigator.popUntilWithResultを導入し、単一呼び出しで複数画面をポップし、結果を目的ルートに返すことを可能にしました。これにより、多段階フローにおける状態管理が大幅に簡素化されます。- Android 12から移植したシミュレーションベースのアプローチで
StretchingOverscrollIndicatorを再実装しました。これにより、高速フリックにも正確に応答する、より自然で滑らかなオーバースクロール効果が実現されます。

NestedScrollViewおよびSliverMainAxisGroupにおける固定ヘッダーの問題を修正し、ヘッダーが後続のスライバーと正しく重なるようになりました。
アクセシビリティ
あらゆる画面のユーザーに届くアクセシブルな体験の構築を支援することが、私たちの使命の中核です。今回のアップデートでは以下を追加しました:
CircularProgressIndicatorおよびLinearProgressIndicatorのネイティブアクセシビリティサポートを追加し、支援技術による進行状況の更新アナウンスを可能にしました。- Flutter はウェブユーザーのテキスト間隔オーバーライドを尊重し、読みやすさを向上させます。
isSemanticsやaccessibilityAnnouncementといった新たなマッチャーをflutter_testに導入し、アクセシビリティ検証を容易にしました。
マテリアルとアニメーション
アニメーションとレイアウトの制御を拡張する新たなプリミティブとプロパティを導入しました。コミュニティメンバーのBernardo Ferrari (bernaferrari@)の貢献により、RepeatingAnimationBuilderが導入され、ローディングインジケーター、点滅するボタン、きらめくプレースホルダー効果などの連続アニメーションを宣言的に作成できるようになりました。
例えば、四角形を前後にスライドさせる方法は次の通りです:
RepeatingAnimationBuilder<Offset>(
animatable: Tween<Offset>(
begin: const Offset(-1.0, 0.0),
end: const Offset(1.0, 0.0),
),
duration: const Duration(seconds: 1),
repeatMode: RepeatMode.reverse,
curve: Curves.easeInOut,
builder: (BuildContext context, Offset offset, Widget child) {
return FractionalTranslation(
translation: offset,
child: child,
);
},
child: const ColoredBox(
color: Colors.green,
child: SizedBox.square(dimension: 100),
),
),
また、CarouselViewに.builderコンストラクタを追加し、動的コンテンツを含むカルーセルの作成を容易にしました。DropdownMenuFormFieldはカスタムerrorBuilderをサポートし、RawAutoCompleteには利用可能な画面スペースに基づいてオプションをインテリジェントに配置するOptionsViewOpenDirection.mostSpaceオプションが追加されました。
コミュニティ主導の進化
Flutterのオープンソースパートナーシップにおける最も強力な事例の一つが、Canonicalとの長年にわたる関係です。同社のチームはFlutter Desktopのロードマップを推進し続け、エコシステム全体に利益をもたらす重要な機能を提供しています。
Canonicalのエンジニアリングリーダーシップのおかげで、複雑なデスクトップUI要件への対応が前進しています。今回のリリースでは、ポップアップウィンドウやツールチップウィンドウを作成するための実験的APIを導入し、Linux、macOS、Windowsにおけるダイアログウィンドウのクロスプラットフォームサポートを実現しました。さらに、マルチウィンドウアプリをテストするための新APIが追加されました。これらの今後のウィンドウAPIをいち早く試したい場合は、Flutterのmultiple_windowsサンプルアプリをご覧ください!
Flutter Linuxでは、デフォルトでマージドスレッドが有効化されました。これによりスレッドモデルが簡素化され、パフォーマンスが向上するとともに、Windowsの安定性向上にも取り組んでいます。今後のリリースではマージドスレッドのオプトアウトを廃止する予定です。マージドスレッドに関する問題がございましたら、お知らせください。
DevTools
DevToolsのパフォーマンスと安定性が向上しました:
- FlutterのDevToolsはdart2wasmでコンパイルされるようになり、パフォーマンスが向上しました。設定ダイアログからオプトアウトし、dart2jsでコンパイルされたDevToolsに戻すことも可能です。
- Dart Tooling Daemon (DTD) への接続が切断された場合、スリープ状態から復帰した際の使用感を改善するため、自動的に再試行されるようになりました。
これらは今回のリリースの主な変更点の一部です。Flutter 3.41に含まれる全更新内容については、DevTools 2.52.0
、2.53.0、2.54.0 のリリースノートをご覧ください。
次のステップ: flutter upgrade
Flutter 3.41 は、オープンソースへの貢献体験を向上させる一歩であると同時に、プラグインを Swift Package Manager に移行する場合、特定のプラットフォーム向けにアセットを最適化する場合、あるいは新しいシェーダー API でピクセルを操作する場合など、開発体験を向上させる Flutter の基盤機能も強化しています。共に築き上げた素晴らしいコミュニティに感謝しています。
変更点の包括的なリストについては、詳細な互換性のない変更点とリリースノートを必ずご確認ください。Flutter 3.41の新機能を試すには、flutter upgradeを実行するだけです!
-
Prev
【Dart】Uriの挙動詳細
-
Next
記事がありません



