web_socket_channel 抛出不支持的操作:Platform._version

Mik*_*ink 2 websocket dart flutter

如何将 websocket 包与 dart web 一起使用?我有以下代码

import 'package:projectname/data/chat/chat_message.dart';
import 'package:projectname/data/chat/chat_provider.dart';
import 'package:web_socket_channel/io.dart';

import '../path.dart';

class MockChatProvider implements ChatProvider {
  @override
  IOWebSocketChannel connect() {
    return IOWebSocketChannel.connect(Uri.parse(Path.joinChat));
  }

  @override
  sendChatMessage(IOWebSocketChannel channel, ChatMessage message) {
    channel.sink.add(message.toJson());
  }
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试连接时出现以下错误

Unsupported operation: Platform._version
Run Code Online (Sandbox Code Playgroud)

该软件包确实说它支持网络。我究竟做错了什么?

小智 5

package:web_socket_channel/web_socket_channel.dart
只需使用TLDR包即可;
我认为你应该使用这个...

import 'package:web_socket_channel/web_socket_channel.dart';
Run Code Online (Sandbox Code Playgroud)

...代替...

import 'package:web_socket_channel/io.dart';
Run Code Online (Sandbox Code Playgroud)

并将其用作

WebSocketChannel connect() {
...
return WebSocketChannel.connect(Uri.parse(Path.joinChat));
...
sendChatMessage(WebSocketChannel channel, ChatMessage message) {
Run Code Online (Sandbox Code Playgroud)

注意:我没有尝试过并测试过!

我认为问题是你找到了正确的包,但你直接使用IOWebSocketChannel. 这只适用于dart:io可用的地方。该包中还有另一个类,HtmlWebSocketChannel仅适用于网络。