颤振中的单个图案

问题描述 投票:0回答:2

我有以下单身人士

class WebSocketSingleton {

   IOWebSocketChannel _channel;

   WebSocketSingleton._privateConstructor();

   static final WebSocketSingleton _instance = WebSocketSingleton._privateConstructor();

   static WebSocketSingleton get instance => _instance;

   IOWebSocketChannel get channel{
   if(_channel == null){
      debugPrint("Creating new channel");
      _channel =  IOWebSocketChannel.connect(
         "wss://42zn68xb57.execute-api.us-east-1.amazonaws.com/Test");
    }

    return _channel;
   }
}

[每次我调用WebSocketSingleton.instance时,它都会创建一个IOWebSocketChannel的新实例。

问题:

[C0是否应该返回以前创建的WebSocketSingleton实例,而不是每次调用IOWebSocketChannel都创建一个新实例?

flutter dart singleton
2个回答
0
投票

我认为您的WebSocketSingleton.instance中存在一些无法创建实例的问题。

这里是与您类似的代码,除了在创建新实例时使用默认构造函数,并且“创建新通道”仅打印一次。

IOWebSocketChannel.connect

0
投票

我认为连接方法存在一些问题,我认为它是静态的,我通过创建类的对象来调用connect,并且它仅在创建单个实例时起作用。

class Channel {}

class Singleton {
  Singleton._();

  static final Singleton _instance = Singleton._();

  static Singleton get instance => _instance;

  Channel _channel;

  Channel get channel {
    if (_channel == null) {
      print("Creating new channel");
      _channel = Channel();
    }

    return _channel;
  }
}


void main() {
  Singleton.instance.channel;
  Singleton.instance.channel;
}
© www.soinside.com 2019 - 2024. All rights reserved.