重大变更和迁移指南
正如重大变更政策中所述,我们偶尔会发布关于跨重大变更迁移代码的指南。
要获取未来重大变更的通知,请加入 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 属性