开发者生态
morning
Flutter 3.47 的新增功能
2026-08-13
1 阅读
约8分钟阅读
gumby271
字号:
Flutter 3.47 中的新功能 Flutter 3.47 已经发布,我们还获得了一些令人兴奋的新更新。今天,我们欢迎独立的material_ui 和 cupertino_ui 包的 1.0 版本。这是将设计系统与核心 SDK 解耦的一个重要里程碑。我们还全面提升性能和工具。此版本默认将 Impeller 带到桌面,为 iOS、macOS 和 Xcode 27 准备我们的管道,并将 Flutter Widget Preview 升级到稳定。因此,请在终端中运行 flutter Upgrade 开始,或者继续阅读以了解有关此版本中主要变化的更多信息。选择您自己的 UI 冒险迈向解耦 Flutter 的第一步就在这里:Material 和 Cupertino 现在可以作为独立包提供! Flutter 的最大优势之一是它能够渲染像素完美的 Material 和 Cupertino 小部件。然而,由于这些设计库历来直接捆绑在核心 SDK 中,因此减慢了它们的开发速度,并使贡献或保持最新状态变得更加困难。虽然此版本的核心 SDK 仍包含这些库,但您现在可以选择独立的 Material_ui 和 Cupertino_ui 包,它们已在 pub.dev 上正式达到版本 1.0。解耦设计路线图(选择加入) 通过选择加入解耦设计系统,您可以控制设计路线图。由于 Material_ui 和 Cupertino_ui 现在位于 pub.dev 上,因此它们可以按照自己的每周计划发布错误修复和新组件,而与季度 Flutter SDK 版本无关。解耦设计系统给我们带来了以下好处:您可以使用最新的 Cupertino 和 Material 控件样式,而无需被迫升级整个 Flutter SDK 版本。我们可以更快、更频繁地进行贡献和更新。我们为风格中立的 Flutter 核心小部件目录奠定了基础,使将来更容易构建自定义设计系统。如何迁移 要将项目迁移到新的独立包,请运行以下命令: bash dart fix --apply --code=migrate_design_widgets content_copy 此工具会自动将您从 package:flutter/material.dart 和 package:flutter/cupertino.dart 的导入更新到新的独立包。注意:如果迁移工具在更新 pubspec.yaml 时遇到问题(已知的早期错误),您可以通过手动运行 flutter pub addmaterial_ui(如果使用的话,还可以运行 cupertino_ui)来解决该问题,然后再次运行 dart fix --apply。核心 SDK 内的原始设计库计划在 11 月份即将发布的秋季稳定版本中正式弃用。如果您要迁移生态系统中的软件包,请将向独立软件包的迁移视为主要版本。缩小迁移差距 为了在生态系统迁移到新的独立设计库时促进缩小差距,material_ui 和 cupertino_ui 附带了迁移实用程序。 MaterialUiCompatibilityBridge 允许您的应用程序立即迁移到独立包,即使您的某些包依赖项仍在使用旧版核心 SDK 导入。例如,您可以将应用程序包装在兼容性桥中: dart import ' package:material_ui/material_ui.dart ' ; void main ( ) { runApp ( const MyApp ( ) ) ; } class MyApp extends StatelessWidget { const MyApp ( { super .key } ) ; @override Widget build ( BuildContext context ) { return MaterialApp ( theme : ThemeData ( colorScheme : ColorScheme . fromSeed ( seedsColor : const Color ( 0xFF6750A4 ) ) ) , ) , builder : ( BuildContext context , Widget ? child ) { return MaterialUiCompatibilityBridge ( child : child ! ) ; } , home : const主屏幕 ( ) , ) ; } } content_copy 解耦本地化 作为此过渡的一部分,flutter_localizations 也已被解绑。 Material 和 Cupertino 小部件的本地化委托和翻译字符串现在分别驻留在 package:material_ui 和 package:cupertino_ui 内。之前: dart import ' package:flutter_localizations/flutter_localizations.dart ' ;导入'包:flutter/material.dart'; // ... localizationsDelegates : const < LocalizationsDelegate <动态>> [ GlobalCupertinoLocalizations .委托、全局材质本地化。委托、GlobalWidgetsLocalizations。 delegate , ] , content_copy 之后: dart import ' package:material_ui/material_ui.dart ' ; // ... localizationsDelegates : GlobalMaterialLocalizations 。 delegates 、 content_copy 将 localizationsDelegates 设置为 GlobalMaterialLocalizations.delegates 现在还包括 Cupertino 和 Widgets 委托,从而简化了您的设置。解耦本地化结构 开放贡献 通过四月份冻结对 Material 和 Cupertino 库的贡献,我们已经能够确保顺利迁移。 material_ui 和 cupertino_ui 中等待您的库与您已经使用的库相同。现在我们已准备好解除冻结,期待在常规中推出更多修复和功能
这篇文章对您有帮助吗?
订阅66必读
每日精选科技资讯,直达你的邮箱