6

我想打电话decodeUrl(...),我这样做是:

import "dart:uri";

main() {
    decodeUrl("str");
}

但现在使用最新的 Dart-SDK,它报告:

Do not know how to load 'dart:uri'
import 'dart:uri';
^

似乎它已从 SDK 中删除。我搜索了很多,但仍然不知道它现在在哪里。现在如何使用decodeUrl(...)最新的 SDK?

4

2 回答 2

7

根据Dart 公告列表中的这个帖子dart:uri已被核心Uri类替换。

您的代码转换为:

main() {
  decodeUrl("str");
}

虽然写起来可能更有指导意义print(Uri.decodeFull("str%20here"));

于 2013-07-14T06:07:26.400 回答
4

来自 Dart 的新版本公告、重大变化和其他重要新闻。

删除了库 dart:uri 并将类 Uri 添加到核心。

dart:uri 库已被删除。

发生了什么变化?

dart:uri 库已被删除。

该课程Uri现在在core library. , encodeUriComponent, enocdeUri,顶级函数已移至静态方法, decodeUriComponent, , .decodeUridart:uriUri.encodeComponentUri.enocdeFullUri.decodeComponentUri.decodeFull

构造函数Uri.fromComponents已重命名为 just Uri,并且先前Uri采用 URI 字符串的构造函数不再可用,而是必须替换为对静态方法 Uri.parse 的调用。

最后,处理空间加号和加号空间编码/解码已从Uri.encodeComponent和中删除Uri.decodeComponent。要获得此编码/解码,请使用添加的静态方法Uri.encodeQueryComponentUri.decodeQueryComponent.

除此之外,Uri 类还有其他功能。有关更多信息,请参阅更改和 dartdoc。

该课程的 dartdocUri将在接下来的几天内得到改进。

谁受到影响?

dart:uri 的用户。

如何更新我的代码?

更改使用new Uri(...)toUri.parse(...)

将 new 的使用更改Uri.fromComponents(...)new Uri(...)

将, , ,的调用更改为对encodeUriComponent, enocdeUri, decodeUriComponent,的decodeUri调用Uri.encodeComponentUri.enocdeFullUri.decodeComponentUri.decodeFull

最后检查你使用的事实,encodeUriComponent并将decodeUriComponent空格更改为加号并将加号更改为空格。如果是这样,请使用Uri.encodeQueryComponentandUri.decodeQueryComponent代替Uri.encodeComponentandUri.decodeComponent

于 2013-07-14T06:17:46.757 回答