如何从颤动网站的URL中去除散列(#) [英] How to remove hash (#) from URL in Flutter web

查看:12
本文介绍了如何从颤动网站的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆