如何从颤动网站的URL中去除散列(#) [英] How to remove hash (#) from URL in Flutter web
本文介绍了如何从颤动网站的URL中去除散列(#)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
颤动Web项目的默认URL定义了一个包含hashtag(#
)的URL,如下所示:
http://localhost:41521/#/peaple/...
我想删除此‘#’,如下所示:
http://localhost:41521/peaple/
如何解决此问题?
推荐答案
您现在可以使用简单程序包和单行代码从您的Ffltter Web应用程序中删除前导散列(#):url_strategy
(完全公开:我是作者)
使用url_strategy
只需添加依赖项as described here,然后将以下函数调用添加到main
函数:
import 'package:url_strategy/url_strategy.dart';
void main() {
// Here we set the URL strategy for our web app.
// It is safe to call this function when running on mobile or desktop as well.
setPathUrlStrategy();
runApp(MyApp());
}
只需调用setPathUrlStrategy
即可执行🎉
该包还确保了在移动设备上运行代码不会崩溃(见下文)。此外,如果您在stable
上构建移动应用程序,并且仅在beta
上构建您的移动应用程序,则stable
也将在stable
上运行。
备注
使用路径URL策略时,您需要确保将<base href="/">
包含在web/index.html
的<head>
部分中。这是在创建新的颤动应用程序时默认添加的。
此外,在部署生产应用程序时,您需要确保每个路径指向您的index.html
。如果您使用Firebase托管之类的工具,则在将您的应用配置为单页应用时会自动完成此操作。
否则,您需要查找如何重写您正在使用的宿主的index.html
的所有路径。
本质上,您希望拥有一个单页面应用程序,其中HTTP服务器为所有路径提供index.html
。
包实现基于使用flutter_web_plugins
的手动解决方案。使用该程序包的好处如下:
- 只需调用单个函数。
- 不需要使用条件导入(包会为您执行此操作)。
- 您在
stable
上不会遇到任何缺失的实现问题(因为Web功能仍在beta
上)。
这篇关于如何从颤动网站的URL中去除散列(#)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文