【问题标题】:What is the difference between streamController.add() and streamController.sink.add()?streamController.add() 和 streamController.sink.add() 有什么区别?
【发布时间】:2018-12-26 00:03:46
【问题描述】:

我知道有两种方法可以将数据添加到流控制器,一种是直接添加数据,另一种是使用接收器。我试图阅读 Sink 的文档,但我无法理解它的概念,例如数据管道等。

【问题讨论】:

    标签: dart flutter


    【解决方案1】:

    什么都没有。这在内部做同样的事情。

    .sink 属性的真正目的是将其作为其他对象的参数传递。如:

    MyClass(
      sink: myController.sink,
    )
    

    这可以防止类访问他们不应该能够访问的属性。

    但是StreamController 实现了Sink 那么有什么意义呢?

    没错。但是将StreamController 转换为Sink 与创建Sink 不同。

    例如,使用Sink 的类可以很好地执行以下操作:

    StreamSink sink = StreamController();
    if (sink is StreamController) { // this is true
        // access StreamController custom methods
    }
    

    sink 字段用于防止这种情况。它翻译成以下内容:

    StreamSink sink = StreamController().sink;
    if (sink is StreamController) { // false this time
       // never reached
    }
    

    【讨论】:

      猜你喜欢
      • 2010-10-02
      • 2011-12-12
      • 2010-09-16
      • 2012-03-14
      • 2012-02-06
      • 2011-02-25
      • 2011-11-22
      • 2015-03-26
      • 2013-08-19
      相关资源
      最近更新 更多