破坏性变更和迁移指南
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 属性