Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.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
Flutter 如何在Flatter web中从URL中删除哈希(#)_Flutter_Dart_Flutter Web - Fatal编程技术网

Flutter 如何在Flatter web中从URL中删除哈希(#)

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

颤振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 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()
小部件中