破壞性變更和遷移指南
Flutter 中破壞性變更的通知和遷移指南合集。
如 破壞性變更策略 中所述,有時我們會發布跨破壞性變更遷移程式碼的指南。
要接收有關未來破壞性變更的通知,請加入以下群組:Flutter announce 和 Dart announce。
升級 Flutter 後遇到 Dart 錯誤時,請考慮使用 dart fix 命令自動遷移您的程式碼。並非每個破壞性變更都以這種方式支援,但很多都支援。
為了避免被 Flutter 的未來版本破壞,請考慮將您的測試提交到框架的 測試登錄檔。
按釋出版本劃分的破壞性變更
#以下指南可用。它們按釋出版本排序,並按字母順序排列
尚未釋出到穩定版
#- 將 Flutter Android 應用遷移到 Android Gradle Plugin 9.0.0
-
棄用
onReorder回撥 -
棄用
cacheExtent和cacheExtentStyle - 頁面過渡構建器重組
釋出於 Flutter 3.41
#- Linux 上的合併執行緒
-
FontWeight也控制可變字型的 weight 屬性 -
棄用
containsSemantics,推薦使用isSemantics -
棄用
findChildIndexCallback,推薦在ListView和SliverList分離的建構函式中使用findItemIndexCallback - Material 3 tokens 更新
釋出於 Flutter 3.38
#-
CupertinoDynamicColor寬色域支援 -
棄用
OverlayPortal.targetsRootOverlay -
棄用
SemanticsProperties.focusable和SemanticsConfiguration.isFocusable - 帶有操作的 SnackBar 不會自動消失
-
Android 上的預設頁面過渡現在是
PredictiveBackPageTransitionBuilder - UISceneDelegate 採用
釋出於 Flutter 3.35
#- 元件主題歸一化更新
-
棄用
DropdownButtonFormFieldvalue引數,推薦使用initialValue - 棄用應用欄顏色
- 重新設計了
Radio元件 - 刪除了語義高度和厚度
-
Form元件不再支援作為 sliver -
Flutter 現在在 Android 構建中設定預設的
abiFilters - macOS 和 Windows 上的合併執行緒
-
當
maintainState啟用時,Visibility元件預設情況下不再可聚焦 -
$FLUTTER_ROOT/version被$FLUTTER_ROOT/bin/cache/flutter.version.json替換
釋出於 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 嵌入 Java API
-
棄用
WebGoldenComparator -
棄用
ThemeData.dialogBackgroundColor,推薦使用DialogThemeData.backgroundColor -
ImageFilter.blur預設平鋪模式自動選擇 -
更新了 Material 3
Slider - 更新了 Material 3 進度指示器
釋出於 Flutter 3.27
#Color寬色域支援- 元件主題歸一化
- 深度連結標誌更改
- Flutter 中的 Material 3 Tokens 更新
-
刪除
InputDecoration.collapsed的無效引數 - 將 SystemUiMode 的預設值設定為 Edge-to-Edge
釋出於 Flutter 3.24
#- Navigator 的頁面 API 破壞性變更
PopScope中的泛型型別-
棄用
ButtonBar,推薦使用OverflowBar -
用於渲染到
Surface的 Android 外掛的新 API
釋出於 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 外掛的命令式應用
- 預設多點觸控滾動
- 工具提示的輔助功能遍歷順序已更改
-
停止生成
AssetManifest.json
釋出於 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建構函式的一個數據變體 - "區域不匹配"訊息
釋出於 Flutter 3.7
#- v3.3 之後刪除的棄用 API
- 使用通用的 widget builder 替換自定義上下文選單的引數
- 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
- 用 collate 替換 AnimationSheetBuilder.display
- ThemeData 的 accent 屬性已被棄用
- 平臺通道測試介面遷移到 flutter_test 包
- 在 Web 中使用 HTML 插槽渲染平臺檢視
- 遷移 Windows 專案到慣用的執行迴圈
撤銷了 2.2 中的更改
#在釋出 2.2 中撤銷了以下破壞性變更
-
iOS 和 Android 上的網路策略
-
引入於版本:2.0.0
撤銷於版本:2.2.0
釋出於 Flutter 2.2
#釋出於 Flutter 2
#- 將 BuildContext 引數新增到 TextEditingController.buildTextSpan
- Android ActivityControlSurface attachToActivity 簽名更改
- Android FlutterMain.setIsRunningInRobolectricTest 測試 API 已刪除
- 剪輯行為
- v1.22 之後刪除的棄用 API
- RenderBox 的乾布局支援
- 消除 nullOk 引數
- Material Chip 按鈕語義
- ScaffoldMessenger 管理的 SnackBars
- TextSelectionTheme 遷移
- 平臺通道測試介面遷移到 flutter_test 包
- 使用 maxLengthEnforcement 代替 maxLengthEnforced
釋出於 Flutter 1.22
#
釋出於 Flutter 1.20
#- Actions API 修訂版
- 新增 TextInputClient.currentAutofillScope 屬性
- 新的按鈕和按鈕主題
- 對話方塊的預設 BorderRadius
- Navigator 和 Hero Controller 範圍中更嚴格的斷言
- Route Transition 記錄和 Transition delegate 更新
- RenderEditable 需要在命中測試之前進行佈局
- 反轉排程器和服務層之間的依賴關係
- 模態路由中 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
- 路由和導航器的重構
- 浮動操作按鈕和 ThemeData 的 accent 屬性