You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用GoRouter在新标签页打开CheckAuth路由?

解决方案

要在Web端用go_router实现新标签页打开CheckAuth路由,需要借助浏览器原生API(go_router的pushNamed默认在当前窗口导航),具体操作如下:

  1. 导入必要依赖包
    需要导入用于浏览器操作和平台判断的包:

    import 'dart:html' as html;
    import 'package:flutter/foundation.dart';
    
  2. 替换原导航逻辑
    将原来的context.pushNamed('CheckAuth');替换为区分平台的处理代码:

    if (kIsWeb) {
      // 获取当前路由实例
      final router = GoRouter.of(context);
      // 生成CheckAuth路由的对应路径
      final routePath = router.namedLocation('CheckAuth');
      // 拼接当前站点根地址与路由路径,得到完整URL
      final fullUrl = '${html.window.location.origin}$routePath';
      // 在新标签页打开目标路由,_blank参数指定新标签页
      html.window.open(fullUrl, '_blank');
    } else {
      // 移动端无标签页概念,保持原导航方式
      context.pushNamed('CheckAuth');
    }
    
  3. 关键说明

    • 该方案仅适配Flutter Web平台,移动端不存在“新标签页”交互逻辑,因此保留原导航行为即可。
    • 若你的router实例无法直接访问,可通过GoRouter.of(context)从上下文获取。

内容的提问来源于stack exchange,提问作者VIP-Dev-Invisible

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 18:52:54