重大变更和迁移指南
正如重大变更政策中所述,我们有时会发布跨重大变更的代码迁移指南。
要了解未来的重大变更,请加入 Flutter announce 和 Dart announce 群组。
在升级 Flutter 后遇到 Dart 错误时,可以考虑使用 dart fix
命令自动迁移代码。并非所有重大变更都支持这种方式,但很多都支持。
为避免未来 Flutter 版本带来的破坏性影响,请考虑将您的测试提交到框架的测试注册表。
按版本划分的重大变更
#以下指南可用。它们按发布版本排序并按字母顺序列出
尚未发布到稳定版
#- 重新设计了 Radio Widget
- 移除了语义高程和厚度
- 弃用
TextField.canRequestFocus
- 停止生成
AssetManifest.json
- UISceneDelegate 采用
- 组件主题规范化更新
- 弃用
DropdownButtonFormField
的value
参数,转而使用initialValue
发布于 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 Token 更新
- 移除
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 本地化
- 移除了
ignoringSemantics
属性 - 弃用
RouteInformation.location
及其相关 API - 更新了 EditableText 滚动到视图中的行为
- 迁移 Windows 项目以确保窗口显示
- 更新了
Checkbox.fillColor
行为
发布于 Flutter 3.10
#- Flutter v3.10 及更高版本中的 Dart 3 变更
- v3.7 后移除的已弃用 API
- 插入内容文本输入客户端
- 弃用了 window 单例
- 解决 Android Java Gradle 错误
ClipboardData
构造函数需要一个数据变体- "Zone mismatch" 消息
发布于 Flutter 3.7
#- v3.3 后移除的已弃用 API
- 将用于自定义上下文菜单的参数替换为通用 widget 构建器
- iOS FlutterViewController splashScreenView 变为可为空
- 将
of
迁移到非空返回值,并添加maybeOf
- 移除了 RouteSettings.copyWith
- ThemeData 的 toggleableActiveColor 属性已弃用
- 迁移 Windows 项目以支持深色标题栏
发布于 Flutter 3.3
#- 添加 ImageProvider.loadBuffer
- 桌面上的默认 PrimaryScrollController
- 触控板手势可以触发 GestureRecognizer
- 迁移 Windows 项目以设置版本信息
发布于 Flutter 3
#- v2.10 后移除的已弃用 API
- 将 Chips 的 useDeleteButtonTooltip 迁移到 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 slots 渲染平台视图
- 将 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 管理的 SnackBars
- TextSelectionTheme 迁移
- 平台通道测试接口过渡到 flutter_test 包
- 使用 maxLengthEnforcement 而不是 maxLengthEnforced
发布于 Flutter 1.22
#发布于 Flutter 1.20
#- Actions API 修订
- 添加 TextInputClient.currentAutofillScope 属性
- 新按钮和按钮主题
- 对话框的默认 BorderRadius
- Navigator 和 Hero Controller 范围中更严格的断言
- 路由过渡记录和过渡委托更新
- RenderEditable 需要在命中测试前进行布局
- 反转调度器和服务层之间的依赖关系
- 模态路由中 Overlay 条目的语义顺序
- 向 TextInputClient 添加了 showAutocorrectionPromptRect 方法
- TestWidgetsFlutterBinding.clock
- TextField 需要 MaterialLocalizations
发布于 Flutter 1.17
#- 将 'linux' 和 'windows' 添加到 TargetPlatform 枚举
- 注解返回相对于对象的本地位置
- 容器颜色优化
- CupertinoTabBar 需要 Localizations 父级
- ParentDataWidget 的泛型类型更改为 ParentData
- ImageCache 和 ImageProvider 变更
- ImageCache 大型图像
- MouseTracker 移至渲染
- MouseTracker 不再附加注解
- 可为空的 CupertinoTheme.brightness
- OverlayEntries 和 Routes 的重建优化
- 可滚动 AlertDialog
- TestTextInput 状态重置
- TextInputClient currentTextEditingValue
- forgetChild() 方法必须调用 super
- Route 和 Navigator 重构
- FloatingActionButton 和 ThemeData 的 accent 属性