You need to enable JavaScript to run this app. 使用Flutter get_server包出现The getter 'ws' isn't defined错误如何解决
优惠活动
大模型
产品
解决方案
定价
更多

使用Flutter get_server包出现The getter 'ws' isn't defined错误如何解决

问题排查与解决方案

错误产生原因

该报错来自get_server包的版本迭代差异:

  • 你参考的示例是v0.1.2及更早版本的官方写法,从v0.2.0版本开始,get_server重构了WebSocket相关API,旧版本中app.ws路由回调参数携带的ws属性已被移除,新版本的BuildContext类没有定义ws getter,直接调用res.ws就会触发该错误。
  • 你原有代码还遗漏了服务器启动的app.start()方法调用,即使修复API问题也无法正常启动服务。

解决方法

方案1:适配新版本API(推荐)

无需降级依赖,直接修改代码适配新版API即可,新版app.ws的回调参数会直接返回WebSocket实例,不需要额外取ws属性和调用listen方法,修改后代码如下:

import 'package:get_server/get_server.dart';

void main() {
  final app = GetServer();
  app.get('/', (ctx) => Text('Get_server of javascript way'));
  app.ws('/socket', (socket) {
    socket.onMessage((data) {
      print('data: $data');
    });

    socket.onOpen((ws) {
      print('new socket opened');
    });

    socket.onClose((ws) {
      print('socket has been closed');
    });
  });
  // 启动服务器,默认端口为8080,可传入port参数自定义端口
  app.start();
}

方案2:锁定旧版本依赖

如果你需要沿用原有写法,可在pubspec.yaml中将get_server的依赖版本锁定在0.1.2版本:

dependencies:
  get_server: ^0.1.2

修改后执行依赖刷新操作即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 10:12:03