“无法多次设置 URL 策略。” 在 Flutter Web 中使用 go_router 时出错

Div*_*kar 3 deep-linking dart flutter gorouter flutter-web

我正在为 Flutter Web 使用 go_router flutter 包。我在重新加载网站时收到此错误。后退按钮工作得很好,但重新加载会导致这种情况。

断言失败:org-dartlang-sdk:///flutter_web_sdk/lib/_engine/engine/window.dart:25:10 !_isUrlStrategySet“无法多次设置 URL 策略。”

下面是我的 main.dart 的代码:

import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:navigator_2/some_app.dart';

import 'details_page.dart';

void main() {
runApp( MyApp());
}


class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
  final GoRouter _router = GoRouter(
    urlPathStrategy: UrlPathStrategy.path,
    routes: [
  GoRoute(path: '/',builder: (context,state)=> const SomeAppPage()),
  GoRoute(path: '/details',builder: (context,state){
    final query = state.queryParams['index'];
    return DetailsPage(index: int.parse(query!));
  }),
]);
return  MaterialApp.router(
  routeInformationParser: _router.routeInformationParser,
    routerDelegate: _router.routerDelegate ,
    title: 'Go Router Example',
    theme: ThemeData(
      primarySwatch: Colors.blue,
    ),
);
 }
 }
Run Code Online (Sandbox Code Playgroud)

Zel*_*elf 8

从 url 中删除 # 字符的 url 路径策略应在main().

从go_router 5.1.0开始, urlPathStrategy 已被完全删除,因此GoRouter.setUrlPathStrategy(UrlPathStrategy.path);会导致构建错误。

5.0 迁移指南中,改为GoRouter.setUrlPathStrategy(UrlPathStrategy.path);

import 'package:flutter_web_plugins/url_strategy.dart';

void main() {
  usePathUrlStrategy();
  runApp(ExampleApp());
}
Run Code Online (Sandbox Code Playgroud)

  • import 语句至关重要,因为我的 IDE 找不到“url_strategy.dart”。诡异的。 (2认同)