如何在Flutter项目中使用Dart 3 Alpha?

问题描述 投票:0回答:2

我已经切换到 channel master 并运行

dart --version
给我:

代码块 1

Dart SDK version: 3.0.0-178.0.dev (dev) (Fri Jan 27 17:53:41 2023 -0800) on "macos_arm64"

但是,当我尝试对记录使用新语法时,我得到以下信息:

代码块 2

This requires the 'records' language feature to be enabled.
Try updating your pubspec.yaml to set the minimum SDK constraint to 3.0.0 or higher, and running 'pub get'.

我试图将 pubspec 中的 sdk 版本值更改为

^3.0.0,
但我明白了:

代码块 3

Resolving dependencies...
The current Dart SDK version is 3.0.0-178.0.dev.
Because app requires SDK version 3.0.0, version solving failed. exit code 1

如果我尝试将版本设置为特定版本

3.0.0-178.0.dev
然后我从代码块 2 中得到错误,即:

This requires the 'records' language feature to be enabled.

Try updating your pubspec.yaml to set the minimum SDK constraint to 3.0.0 or higher, and running 'pub get'.
flutter dart
2个回答
7
投票

您可以按照以下步骤操作。

第 1 步: 确保你在 master 分支上而不是稳定的(当前)。

flutter --version
会显示类似这个或更高版本的内容

Flutter 3.7.0-29.0.pre.21 • channel master • https://github.com/flutter/flutter.git
Framework • revision 75680ae99e (5 hours ago) • 2023-01-28 08:54:06 -0500
Engine • revision 649362168f
Tools • Dart 3.0.0 (build 3.0.0-179.0.dev) • DevTools 2.20.1

第 2 步: 配置

analyzsis_options.yaml

include: package:flutter_lints/flutter.yaml
analyzer:
  enable-experiment:
    - records
    - patterns

您可以检查和克隆my experimental_project repository.


0
投票

Dart 3 is stable
现在 [Flutter 3.10.0 • 通道稳定]

阅读这篇中篇文章了解更多信息

使用记录,您可以使用漂亮而清晰的语法构建结构化数据。考虑这个功能。它读出 JSON blob 的名称和年龄,并在记录中返回它们:

(String, int) userInfo(Map<String, dynamic> json) {
   return (json['name'] as String, json['height'] as int);
}

考虑模式的基本形式。以下记录模式将记录解构为两个新变量名称和高度。然后可以像任何其他变量一样使用这些变量,例如在调用 print 中:

 var (String name, int height) = userInfo({'name': 'Michael', 'height':180}); 
 print('User $name is $height cm tall.');

Records- 在某些情况下,您可能必须返回多个值。您可以在这种情况下使用记录。

Patterns- 如果某些内容来自未知来源,您可以使用模式来检查该特定输出是否与某些内容匹配。例如,您从 API 调用中获得多个响应。第一个响应是成功,第二个是错误,第三个是其他元素的成功。所以你可以有一个包含所有这些模式的 switch 语句,模式可以匹配它们,并且你有你的价值。

© www.soinside.com 2019 - 2024. All rights reserved.