【发布时间】:2021-08-17 19:43:42
【问题描述】:
我可以通过在搜索栏中键入 url 来更改我在 netlify(手动部署)上托管的 flutter web 的 url 来导航到其他页面,如下所示:-
因此,如果我将 /home 更改为 /about,那么它会完美地引导我进入 about 页面。但是要从我的网址中删除这个“#”,我在 main.dart 中添加了以下代码 我的代码:-
import 'package:url_strategy/url_strategy.dart';
void main()async {
await Firebase.initializeApp();
setPathUrlStrategy();//this removes the '#' from my url
FluroRouting.setupRouter();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'My Website',
theme: ThemeData(
primarySwatch: Colors.blue,
),
initialRoute: '/home',
onGenerateRoute: FluroRouting.router.generator,
);
}
}
路由的代码是:-
class FluroRouting {
static final router = FluroRouter();
static Handler _aboutUsHandler = Handler(
handlerFunc: (BuildContext context, Map<String, dynamic> params) =>
AboutUs());
static Handler _homeHandler = Handler(
handlerFunc: (BuildContext context, Map<String, dynamic> params) =>
HomePage());
static void setupRouter() {
router.define('/home', handler: _homeHandler,);
router.define('/about', handler: _aboutUsHandler,);
}
static void navigateToPage({String routeName,BuildContext context}) {
router.navigateTo(context, routeName, transition: TransitionType.none);
}
static void pushAndClearStackToPage({String routeName,BuildContext context}) {
router.navigateTo(context, routeName, clearStack: true,transition: TransitionType.none);
}
}
【问题讨论】:
-
您在
web/index.html中是否将<base href="/">更改为href="/"?这有更好的解释。 stackoverflow.com/a/65709246/11855654 -
@ChiragBargoojar 我不认为 OP 的问题是他在不同的根位置托管。他提到
when changing /home to /about他正面临这个问题。 -
Deepak 发布
setPathUrlStrategy函数的代码。你在里面做什么? -
是从url策略依赖导入的函数
-
@DeepakLohmod 您找到解决此问题的方法了吗?使用 url_strategy 包删除 # 后我面临同样的问题。
标签: flutter flutter-dependencies flutter-web netlify