重大變更和遷移指南
正如重大變更政策中所述,我們偶爾會發布關於跨重大變更遷移程式碼的指南。
要獲取未來重大變更的通知,請加入 Flutter announce 和 Dart announce 小組。
在升級 Flutter 後遇到 Dart 錯誤時,請考慮使用 dart fix 命令自動遷移程式碼。並非所有重大變更都以這種方式支援,但很多都支援。
為了避免受到未來 Flutter 版本的影響,請考慮將您的測試提交到框架的測試登錄檔。
按版本劃分的重大變更
#以下指南可用。它們按版本排序並按字母順序列出
尚未釋出到穩定版
#- 棄用
OverlayPortal.targetsRootOverlay - 棄用
TextField.canRequestFocus - 停止生成
AssetManifest.json - UISceneDelegate 採用
CupertinoDynamicColor廣色域支援$FLUTTER_ROOT/version被$FLUTTER_ROOT/bin/cache/flutter.version.json替換- 帶操作的 SnackBar 不再自動消失
在 Flutter 3.35 中釋出
#- 元件主題規範化更新
- 棄用
DropdownButtonFormField的value引數,轉而使用initialValue - 重新設計
Radio小部件 - 移除語義高程和厚度
Form小部件不再支援作為 sliver- Flutter 現在在 Android 構建中設定預設
abiFilters
在 Flutter 3.32 中釋出
#- 棄用
SystemContextMenuController.show - 棄用
ExpansionTileController,轉而使用ExpansibleController - 棄用
RouteTransitionRecord.markForRemove,轉而使用RouteTransitionRecord.markForComplete - 棄用
ThemeData.indicatorColor,轉而使用TabBarThemeData.indicatorColor - Material 主題系統更新
.flutter-plugins-dependencies替換.flutter-plugins- 本地化訊息生成到原始檔,而不是合成包中
- 更改
integration_test的預設goldenFileComparator - 棄用
InputDecoration.maintainHintHeight,轉而使用InputDecoration.maintainHintSize - 欠阻尼彈簧公式更改
在 Flutter 3.29 中釋出
#- 移除 v1 Android embedding Java API
- 棄用
WebGoldenComparator - 棄用
ThemeData.dialogBackgroundColor,轉而使用DialogThemeData.backgroundColor ImageFilter.blur預設平鋪模式自動選擇- 更新 Material 3
Slider - 更新 Material 3 進度指示器
在 Flutter 3.27 中釋出
#Color廣色域支援- 元件主題規範化
- 深層連結標誌更改
- Flutter 中的 Material 3 令牌更新
- 移除
InputDecoration.collapsed的無效引數 - 將 SystemUiMode 的預設值設定為 Edge-to-Edge
在 Flutter 3.24 中釋出
#在 Flutter 3.22 中釋出
#- v3.19 後移除的棄用 API
- 將
MaterialState重新命名為WidgetState - 引入新的
ColorScheme角色 - 放棄對 Android KitKat 的支援
- 可空
PageView.controller - 將
MemoryAllocations重新命名為FlutterMemoryAllocations
在 Flutter 3.19 中釋出
#- v3.16 後移除的棄用 API
- 將 RawKeyEvent/RawKeyboard 系統遷移到 KeyEvent/HardwareKeyboard 系統
- 棄用 Flutter Gradle 外掛的命令式應用
- 預設多點觸控滾動
- 工具提示的輔助功能遍歷順序更改
在 Flutter 3.16 中釋出
#- 遷移到 Material 3
- 將 ShortcutActivator 和 ShortcutManager 遷移到 KeyEvent 系統
ThemeData.useMaterial3屬性現在預設為 true- v3.13 後移除的棄用 API
- 使用新的
TabBar.tabAlignment屬性自定義選項卡對齊方式 - 棄用
textScaleFactor,轉而使用TextScaler - 啟用 Android 14 非線性字型縮放
- 棄用
describeEnum並更新EnumProperty以進行型別嚴格 - 為 Android 預測性返回棄用即時導航彈出 API
- 棄用
Paint.enableDithering - 更新選單的預設文字樣式
- Windows: 外部視窗應通知 Flutter 引擎生命週期變化
- Windows 構建路徑更改以新增目標架構
在 Flutter 3.13 中釋出
#- 為 Flutter 中一些可處置物件添加了缺失的
dispose() - v3.10 後移除的棄用 API
- 新增 AppLifecycleState.hidden 列舉值
- 將 ReorderableListView 的本地化字串從 material 遷移到 widgets localizations
- 移除
ignoringSemantics屬性 - 棄用
RouteInformation.location及其相關 API - 更新 EditableText 滾動到檢視行為
- 遷移 Windows 專案以確保視窗顯示
- 更新
Checkbox.fillColor行為
在 Flutter 3.10 中釋出
#- Flutter v3.10 及更高版本中的 Dart 3 更改
- v3.7 後移除的棄用 API
- 插入內容文字輸入客戶端
- 棄用視窗單例
- 解決 Android Java Gradle 錯誤
ClipboardData建構函式需要一個數據變體- “Zone mismatch”訊息
在 Flutter 3.7 中釋出
#- v3.3 後移除的棄用 API
- 替換自定義上下文選單的引數為通用小部件構建器
- iOS FlutterViewController splashScreenView 變為可空
- 將
of遷移到非空返回值,並新增maybeOf - 移除 RouteSettings.copyWith
- ThemeData 的 toggleableActiveColor 屬性已棄用
- 遷移 Windows 專案以支援深色標題欄
在 Flutter 3.3 中釋出
#- 新增 ImageProvider.loadBuffer
- 桌面上的預設 PrimaryScrollController
- 觸控板手勢可以觸發 GestureRecognizer
- 遷移 Windows 專案以設定版本資訊
在 Flutter 3 中釋出
#- v2.10 後移除的棄用 API
- 將 useDeleteButtonTooltip 遷移到 Chips 的 deleteButtonTooltipMessage
- 頁面過渡被 ZoomPageTransitionsBuilder 替換
在 Flutter 2.10 中釋出
#在 Flutter 2.5 中釋出
#- 預設拖動滾動裝置
- v2.2 後移除的棄用 API
- 更改 enterText 方法以將插入符號移動到輸入文字的末尾
- GestureRecognizer 清理
- 引入 package:flutter_lints
- 將 AnimationSheetBuilder.display 替換為 collate
- ThemeData 的 accent 屬性已棄用
- 平臺通道測試介面遷移到 flutter_test 包
- 在 web 中使用 HTML slot 渲染平臺檢視
- 遷移 Windows 專案到慣用的執行迴圈
在 2.2 中恢復的變更
#以下重大變更在 2.2 版本中被恢復
- iOS 和 Android 上的網路策略
- 引入版本:2.0.0
恢復版本:2.2.0
在 Flutter 2.2 中釋出
#在 Flutter 2 中釋出
#- 向 TextEditingController.buildTextSpan 新增 BuildContext 引數
- Android ActivityControlSurface attachToActivity 簽名更改
- Android FlutterMain.setIsRunningInRobolectricTest 測試 API 已移除
- 剪裁行為
- v1.22 後移除的棄用 API
- RenderBox 的乾布局支援
- 消除 nullOk 引數
- Material Chip 按鈕語義
- ScaffoldMessenger 管理的 SnackBar
- TextSelectionTheme 遷移
- 平臺通道測試介面遷移到 flutter_test 包
- 使用 maxLengthEnforcement 代替 maxLengthEnforced
在 Flutter 1.22 中釋出
#在 Flutter 1.20 中釋出
#- Actions API 修訂
- 新增 TextInputClient.currentAutofillScope 屬性
- 新按鈕和按鈕主題
- Dialogs 的預設 BorderRadius
- Navigator 和 Hero Controller Scope 中更嚴格的斷言
- Route Transition 記錄和 Transition delegate 更新
- RenderEditable 需要在命中測試之前進行佈局
- 顛倒排程器和服務層之間的依賴關係
- Modal Routes 中 Overlay Entries 的語義順序
- 向 TextInputClient 新增 showAutocorrectionPromptRect 方法
- TestWidgetsFlutterBinding.clock
- TextField 需要 MaterialLocalizations
在 Flutter 1.17 中釋出
#- 向 TargetPlatform 列舉新增“linux”和“windows”
- 註釋返回相對於物件的區域性位置
- Container 顏色最佳化
- CupertinoTabBar 需要 Localizations 父級
- ParentDataWidget 的泛型型別更改為 ParentData
- ImageCache 和 ImageProvider 更改
- ImageCache 大影像
- MouseTracker 移動到渲染
- MouseTracker 不再附加註釋
- 可空 CupertinoTheme.brightness
- OverlayEntries 和 Routes 的重建最佳化
- 可滾動 AlertDialog
- TestTextInput 狀態重置
- TextInputClient currentTextEditingValue
- forgetChild() 方法必須呼叫 super
- Route 和 Navigator 重構
- FloatingActionButton 和 ThemeData 的 accent 屬性