Flutter 3.47 新特性
Flutter 3.47 来了,我们有一些令人兴奋的新更新。今天,我们迎来了独立的 material_ui 和 cupertino_ui 包的 1.0 版本发布。这是一个重要的里程碑,将设计系统与核心 SDK 解耦。我们还在各个领域提升了性能和工具。本次发布默认将 Impeller 引入桌面,准备好我们的管道以支持 iOS、macOS 和 Xcode 27,同时将 Flutter Widget 预览版本升级为稳定版本。因此,在您的终端中运行 flutter upgrade 以开始,或者继续阅读以了解本次发布中的重大变化。选择您的 UI 冒险 解耦 Flutter 的第一步来了:Material 和 Cupertino 现在可以作为独立包使用!Flutter 最大的优势之一是其呈现像素完美的 Material 和 Cupertino 小部件的能力。然而,由于这些设计库历史上直接捆绑在核心 SDK 中,这减慢了它们的开发速度,使得更新和贡献变得更加困难。虽然核心 SDK 在本次发布中仍然包含这些库,但您现在可以选择使用已正式在 pub.dev 上发布的独立 material_ui 和 cupertino_ui 包。 解耦设计路线图(自愿选择) 通过选择解耦设计系统,您可以掌控您的设计路线图。由于 material_ui 和 cupertino_ui 现在在 pub.dev 上发布,它们可以独立于季度 Flutter SDK 发布,每周按自己的计划发布错误修复和新组件。解耦设计系统为我们带来了以下好处:您可以在不强迫升级整个 Flutter SDK 版本的情况下使用最新的 Cupertino 和 Material 小部件样式。我们可以更快、更频繁地进行贡献和更新。为未来构建风格中立的 Flutter 核心小部件目录奠定基础,使构建自定义设计系统变得更加容易。 如何迁移 要将您的项目迁移到新的独立包,请运行以下命令:bash dart fix --apply --code=migrate_design_widgets 此工具会自动将您的导入从 package:flutter/material.dart 和 package:flutter/cupertino.dart 更新为新的独立包。 注意:如果迁移工具在更新您的 pubspec.yaml 时遇到问题(这是一个已知的早期错误),您可以通过手动运行 flutter pub add material_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 ( seedColor : const Color ( 0xFF6750A4 ) ) , ) , builder : ( BuildContext context , Widget ? child ) { return MaterialUiCompatibilityBridge ( child : child ! ) ; } , home : const HomeScreen ( ) , ) ; } } 解耦本地化 作为此过渡的一部分,flutter_localizations 也已解耦。Material 和 Cupertino 小部件的本地化代理和翻译字符串现在分别位于 package:material_ui 和 package:cupertino_ui 中。 之前:dart import ' package:flutter_localizations/flutter_localizations.dart ' ; import ' package:flutter/material.dart ' ; // ... localizationsDelegates : const < LocalizationsDelegate < dynamic >> [ GlobalCupertinoLocalizations . delegate , GlobalMaterialLocalizations . delegate , GlobalWidgetsLocalizations . delegate , ] , 之后:dart import ' package:material_ui/material_ui.dart ' ; // ... localizationsDelegates : GlobalMaterialLocalizations . delegates , 现在将 localizationsDelegates 设置为 GlobalMaterialLocalizations.delegates 也包括了 Cupertino 和 Widgets 委托,使您的设置更加简化。 解耦本地化结构 开放贡献 通过在四月冻结对 Material 和 Cupertino 库的贡献,我们能够确保顺利迁移。material_ui 和 cupertino_ui 中等待您的库与您已经在使用的库相同。现在我们准备解除冻结,期待在新的包中定期推出更多修复和功能,当前的发布...
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡