Flutter 如何在Flatter web中从URL中删除哈希(#)
颤振web项目的默认URL定义了一个包含hashtag(Flutter 如何在Flatter web中从URL中删除哈希(#),flutter,dart,flutter-web,Flutter,Dart,Flutter Web,颤振web项目的默认URL定义了一个包含hashtag(#)的URL,如下所示: http://localhost:41521/#/peaple/... 我要删除此“#”,如下所示: http://localhost:41521/peaple/ onGenerateRoute: (settings) { List segments = settings.name.split('/').where((x) => ! x.isEmpty).toList(); String
#
)的URL,如下所示:
http://localhost:41521/#/peaple/...
我要删除此“#”,如下所示:
http://localhost:41521/peaple/
onGenerateRoute: (settings) {
List segments = settings.name.split('/').where((x) => ! x.isEmpty).toList();
String page = segments.length > 0 ? segments[0] : '';
...
}
}
如何解决此问题?如果您只关心路由,您可以执行以下操作:
http://localhost:41521/peaple/
onGenerateRoute: (settings) {
List segments = settings.name.split('/').where((x) => ! x.isEmpty).toList();
String page = segments.length > 0 ? segments[0] : '';
...
}
}
以下答案是从Mouad Debbar在GitHub()上的解释中复制的
以下是在它可用后使用它的步骤: 在
web/index.html
文件的
部分中添加
。这将自动添加到由颤振创建创建的新项目中。但对于现有应用程序,开发人员需要手动添加。
在pubspec.yaml
中添加flatter\u web\u插件
依赖项(如果它不存在):
依赖项:
Flatter_web_插件:
sdk:颤振
添加具有以下内容的lib/configure\u nonweb.dart
:
void configureApp(){
//禁止操作。
}
添加具有以下内容的lib/configure_web.dart
:
import'package:flatter_web_plugins/flatter_web_plugins.dart';
void configureApp(){
setUrlStrategy(PathUrlStrategy());
}
在lib/main.dart
中,执行以下操作:
导入“包装:颤振/材料.省道”;
如果(dart.library.html)“configure_web.dart”,则导入“configure_nonweb.dart”;
void main(){
configureApp();
runApp(MyApp());
}
你现在可以使用一个简单的包和一行代码从你的Flitter web应用程序中删除前导的散列(#)了:(完全披露:我是作者)
使用
只需添加依赖项,然后向main
函数添加以下函数调用:
import'package:url_strategy/url_strategy.dart';
void main(){
//这里我们为我们的web应用设置URL策略。
//在手机或桌面上运行时,调用此函数也是安全的。
setPathUrlStrategy();
runApp(MyApp());
}
调用
setPathUrlStrategy
是您只需要为Github页面托管执行的所有操作
这也适用于不是直接从domain.com/
提供服务,而是从某些路径domain.com/path/
提供服务的应用程序
您需要将您的回购名称添加到base href,否则您的网站将无法运行
<base href="/REPO_NAME/">
相关问题目前主频道或稳定频道均不提供。但是它已经在开发和测试频道上测试过了。这应该是一个社区wiki,因为它只是一个复制的答案。我现在用一个更简单的解决方案写了一个答案:如果基本href是类似于/app/
的东西,那么它可以工作吗?在哪里写这个?@NehalJaisalmeria在MaterialApp()
小部件中