我想致电decodeUrl(...)
,我这样做是:
import "dart:uri";
main() {
decodeUrl("str");
}
但是现在使用最新的Dart-SDK,它会报告:
Do not know how to load 'dart:uri'
import 'dart:uri';
^
似乎已从SDK中删除。我搜索了很多但仍然不知道它现在在哪里。如何使用最新的SDK decodeUrl(...)
?
答案 0 :(得分:7)
根据this post to the Dart announcement list,dart:uri
已替换为核心Uri类。
您的代码转换为:
main() {
decodeUrl("str");
}
虽然写print(Uri.decodeFull("str%20here"));
可能更有启发性。
答案 1 :(得分:4)
来自Dart新版本的公告,重大变化以及其他重要新闻。
图书馆飞镖:uri被删除,Uri课程被添加到核心。
图书馆dart:uri已被删除。
改变了什么?
图书馆dart:uri已被删除。
班级Uri
现在位于core library
。 encodeUriComponent
中的enocdeUri
,decodeUriComponent
,decodeUri
,dart:uri
顶级函数已移至静态方法Uri.encodeComponent
,Uri.enocdeFull
,Uri.decodeComponent
,Uri.decodeFull
。
构造函数Uri.fromComponents
已重命名为Uri
,之前的Uri
构造函数不再可用,但必须替换为静态方法Uri的调用.parse。
最后,从Uri.encodeComponent
和Uri.decodeComponent
删除了对空间加上空间编码/解码的处理空间。要获得此编码/解码,请使用添加的静态方法Uri.encodeQueryComponent
和Uri.decodeQueryComponent
。
除此之外,Uri类还有其他功能。有关更多信息,请参阅更改和dartdoc。
Uri
课程的dartdoc将在未来几天内得到改善。
谁受影响?
dart的用户:uri。
如何更新我的代码?
将new Uri(...)
的使用更改为Uri.parse(...)
将新Uri.fromComponents(...)
的使用更改为new Uri(...)
将encodeUriComponent
,enocdeUri
,decodeUriComponent
,decodeUri
的来电更改为对Uri.encodeComponent
,Uri.enocdeFull
,Uri.decodeComponent
的来电, Uri.decodeFull
。
最后检查一下,encodeUriComponent
和decodeUriComponent
将空格更改为加号,加上空格。如果是,请使用Uri.encodeQueryComponent
和Uri.decodeQueryComponent
代替Uri.encodeComponent
和Uri.decodeComponent