Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Dart路由API_Dart_Html5 History - Fatal编程技术网

如何使用Dart路由API

如何使用Dart路由API,dart,html5-history,Dart,Html5 History,我已经创建了一个示例应用程序来测试。我有以下代码: url.dart 库url; 导入“package:route/url_pattern.dart”; 最终homeUrl=新的URL模式(r'/'); 最终的otherScreenUrl=新的URL模式(r'/other_screen/); main.html 试验 main.dart 导入'dart:html'; 导入“package:route/client.dart”; 导入“url.dart”; void main(){ var

我已经创建了一个示例应用程序来测试。我有以下代码:

url.dart

库url;
导入“package:route/url_pattern.dart”;
最终homeUrl=新的URL模式(r'/');
最终的otherScreenUrl=新的URL模式(r'/other_screen/);
main.html


试验

main.dart

导入'dart:html';
导入“package:route/client.dart”;
导入“url.dart”;
void main(){
var router=新路由器()
…addHandler(homeUrl,\u showHome)
..addHandler(其他屏幕URL,\u showOtherScreen)
…听();
查询选择器(“示例文本id”)
…text=“单击我!”
…点击一次。听一听(_gotoOtherScreen);
}
_gotoOtherScreen(MouseeEvent事件){
//我正在尝试使用history.pushState导航到“其他屏幕”
window.history.pushState({'url':otherScreenUrl},“other screen”,otherScreenUrl);
}
_showHome(字符串路径){
查询选择器(“其他元素”)
…移除();
}
_showOtherScreen(字符串路径){
查询选择器(“样本容器id”)
…追加(新元素()
..innerHtml=“现在在其他屏幕中”
..id=“其他要素”);
}
运行应用程序,然后单击
标记时,我遇到以下错误:

异常中断:非法参数:找不到的处理程序 /test/web/main.html

异常:非法参数:找不到的处理程序 /test/web/main.html路由器。\u getUrl(包:route/client.dart:53:7) Router.handle(包:route/client.dart:71:22)
听我说。(套餐:路线/客户。省道:102:15)

异常时中断:类型“UrlPattern”不是类型的子类型 “url”的“字符串”

例外情况:“UrlPattern”类型不是的“String”类型的子类型 “url”_gotoOtherScreen
(http://127.0.0.1:3030/test/web/main.dart:18:27)


应该如何使用路由API?我做错了什么?

以下是解决上述问题的更新代码:

url.dart

库url;
导入“package:route/url_pattern.dart”;
final homeUrl=新的URL模式(r'(.*)/);
final homerlWithFile=新的UrlPattern(r'(.*)/main.html');
最终的otherScreenUrl=新的URL模式(r'(.*)/other_screen');
main.html


试验
main.dart

导入'dart:html';
导入“package:route/client.dart”;
导入“url.dart”;
void main(){
var router=新路由器()
…addHandler(homeUrl,\u showHome)
..addHandler(homeUrlWithFile,_showHome)
..addHandler(其他屏幕URL,\u showOtherScreen)
…听();
}
_showHome(字符串路径){
变量e=查询选择器(“其他元素”);
如果(e!=null)e.remove();
}
_showOtherScreen(字符串路径){
查询选择器(“样本容器id”)
…追加(新元素()
..innerHtml=“现在在其他屏幕中”
..id=“其他要素”);
}