重大更改和迁移指南
如重大更改政策中所述,我们偶尔会发布跨重大更改迁移代码的指南。
要接收有关未来重大更改的通知,请加入Flutter 公告和Dart 公告群组。
在升级 Flutter 后遇到 Dart 错误时,请考虑使用dart fix
命令自动迁移代码。并非所有重大更改都以这种方式得到支持,但许多更改得到了支持。
为避免被未来版本的 Flutter 破坏,请考虑将测试提交到我们的测试注册表。
以下指南可用。它们按版本排序,并按字母顺序列出
尚未发布至稳定版
- 引入新的
ColorScheme
角色 - 停止生成 AssetManifest.json
- 将
MemoryAllocations
重命名为FlutterMemoryAllocations
- 弃用
TextField.canRequestFocus
- 可为空的 PageView.controller
在 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 已移除
- 插入内容文本输入客户端
- 弃用窗口单例
- 解决 Android Java Gradle 错误
- 要求
ClipboardData
构造函数有一个数据变体 - “区域不匹配”消息
在 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
- 用 collate 替换 AnimationSheetBuilder.display
- ThemeData 的 accent 属性已弃用
- 平台通道测试接口过渡到 flutter_test 包
- 使用 HTML 插槽在 Web 中渲染平台视图
- 迁移 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 芯片按钮语义
- 由 ScaffoldMessenger 管理的 SnackBar
- TextSelectionTheme 迁移
- 平台通道测试接口过渡到 flutter_test 包
- 使用 maxLengthEnforcement 而不是 maxLengthEnforced
在 Flutter 1.22 中发布
在 Flutter 1.20 中发布
- 操作 API 修订
- 添加 TextInputClient.currentAutofillScope 属性
- 新的按钮和按钮主题
- 对话框的默认 BorderRadius
- 导航器和 Hero 控制器范围中更严格的断言
- 路由过渡记录和过渡委托更新
- RenderEditable 需要在命中测试之前进行布局
- 颠倒调度程序和服务层之间的依赖关系
- 模态路由中叠加项条目的语义顺序
- 向 TextInputClient 添加 showAutocorrectionPromptRect 方法
- TestWidgetsFlutterBinding.clock
- TextField 需要 MaterialLocalizations
在 Flutter 1.17 中发布
- 向 TargetPlatform 枚举添加“linux”和“windows”
- 注释返回相对于对象的本地位置
- 容器颜色优化
- CupertinoTabBar 需要 Localizations 父级
- ParentDataWidget 的泛型类型已更改为 ParentData
- ImageCache 和 ImageProvider 更改
- ImageCache 大图像
- MouseTracker 已移至渲染
- MouseTracker 不再附加注释
- 可为 null 的 CupertinoTheme.brightness
- 针对 OverlayEntries 和 Routes 的重建优化
- 可滚动的 AlertDialog
- TestTextInput 状态重置
- TextInputClient currentTextEditingValue
- forgetChild() 方法必须调用 super
- 路由和导航器重构
- FloatingActionButton 和 ThemeData 的 accent 属性