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

Flutter调试服务端口固定及热重载后获取WS URL问题咨询

关于Flutter Debug Service端口固定与热重载后获取URL的解决方案

好问题!我平时开发Flutter时也碰到过类似需求,来给你详细拆解:

一、能否固定Debug Service的端口?

当然可以!默认情况下Flutter会随机分配端口,但我们可以通过两种方式强制固定:

  • 命令行启动时指定:直接在flutter run命令后追加--debug-port参数,例如:

    flutter run --debug-port 58848
    

    这样每次启动都会复用58848端口,要是端口被其他进程占用,Flutter会直接抛出错误提示,换个未被占用的端口即可。

  • IDE配置固定端口:

    • 如果你用VS Code,可以在项目的.vscode/launch.json中添加debugPort字段:
      {
        "version": "0.2.0",
        "configurations": [
          {
            "name": "Flutter",
            "request": "launch",
            "type": "dart",
            "debugPort": 58848
          }
        ]
      }
      
    • 用Android Studio的话,打开「Run/Debug Configurations」,找到你的Flutter项目配置,在「Debug port」输入框中填入58848即可。

二、热重载/热重启后获取Debug Service URL的方法

确实,热重载时控制台不会重新打印WS地址,这里有几个亲测好用的办法:

1. 在代码中主动获取并打印

这是最直接的方式,利用Flutter内置的dart:developer库,在App的build周期中添加逻辑:

import 'dart:developer' as developer;
import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    // 页面渲染完成后获取并打印WS地址
    WidgetsBinding.instance.addPostFrameCallback((_) {
      _fetchDebugWsUrl();
    });
    return MaterialApp(
      home: Scaffold(appBar: AppBar(title: const Text('Debug WS Demo'))),
    );
  }

  void _fetchDebugWsUrl() async {
    final serviceInfo = await developer.Service.getInfo();
    if (serviceInfo?.webSocketUri != null) {
      print('当前Debug Service WS地址: ${serviceInfo!.webSocketUri}');
    }
  }
}

热重载时build方法会重新执行,这段代码会自动打印最新的WS地址;热重启时自然也会触发。

2. 通过Flutter CLI命令获取

不想改代码的话,用终端命令也能拿到:

  • 确保App已经在后台运行,执行:
    flutter attach
    
    这个命令会自动检测当前运行的Flutter应用,输出中会明确显示Debug Service的WS地址。查看完成后按Ctrl+C退出attach即可,不会影响App运行状态。

3. 查看Flutter本地日志文件

Flutter会把启动日志存在项目的.dart_tool/flutter_build目录下的日志文件里,不过这个方法比较繁琐,适合需要离线查看历史记录的场景。


内容的提问来源于stack exchange,提问作者TSR

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 20:48:14