Form 小部件不再支援作為 sliver。
概述
#以前,Form 小部件本質上是其子項的直接包裝器。這種設計允許包含 sliver 子項的 Form(例如,Form(child: other sliver))在 CustomScrollView 或類似的滾動父項中被視為 sliver 本身。
然而,此 PR 在 Form 小部件的內部結構中引入了一個新的語義小部件。此更改改變了其渲染行為,這意味著 Form 不再可以直接作為 sliver 工作。
背景
#此更改是改進 Flutter 小部件的可訪問性和語義理解的持續努力的一部分。透過直接在 Form 中嵌入語義小部件,框架可以為輔助功能服務提供更好的資訊。
變更說明
#核心更改是將語義小部件整合到 Form 小部件的 build 方法中。
遷移指南
#如果您的應用當前不將 Form 小部件直接用作滾動列表中的 sliver(例如,作為 CustomScrollView 的 slivers 屬性的直接子項),則無需進行任何更改。
如果您的應用將 Form 用作 sliver,您需要將 Form 小部件包裝在 SliverToBoxAdapter 中。SliverToBoxAdapter 是一個包含單個框小部件的 sliver,它將常規小部件轉換為可以放置在 CustomScrollView 中的 sliver。
遷移前的程式碼
dart
sliver: Form(
key: controller.formKey,
child: SomeWidgetWithFormFields(),
)遷移後的程式碼
dart
sliver: SliverToBoxAdapter(
child: Form(
key: controller.formKey,
child: SomeWidgetWithFormFields(),
)
)時間線
#已合併於版本:3.35.0-pre
穩定版釋出:3.35
參考資料
#API 文件
相關問題
相關 PR