小编Tho*_*mas的帖子

颤动:如何正确使用继承的小部件?

使用InheritedWidget的正确方法是什么?到目前为止,我明白它让你有机会沿着Widget树传播数据.在极端情况下,如果你把它作为RootWidget,它将可以从所有Routes树中的所有Widgets访问,这很好,因为不知何故我必须使我的ViewModel/Model可以访问我的Widgets而不必诉诸于全局或Singletons.

但是InheritedWidget是不可变的,那么如何更新呢?更重要的是我的状态窗口小部件如何触发重建他们的子树?

不幸的是,文档在这里非常不清楚,经过大量讨论后,似乎没有人真正知道使用它的正确方法.

我添加了Brian Egan的一句话:

是的,我认为这是一种沿树传播数据的方法.从API文档中我发现令人困惑的是:

"以这种方式引用时,继承的小部件将导致使用者在继承的小部件本身更改状态时重建."

当我第一次阅读本文时,我想:

我可以在InheritedWidget中填充一些数据并稍后进行修改.当发生突变时,它将重建引用我的InheritedWidget的所有Widgets我发现的内容:

为了改变InheritedWidget的状态,你需要将它包装在StatefulWidget中然后实际上改变StatefulWidget的状态并将这些数据传递给InheritedWidget,后者将数据传递给它的所有子节点.但是,在这种情况下,它似乎重建了StatefulWidget下面的整个树,而不仅仅是引用InheritedWidget的Widgets.那是对的吗?或者它会以某种方式知道如果updateShouldNotify返回false,如何跳过引用InheritedWidget的Widgets?

dart flutter

74
推荐指数
3
解决办法
2万
查看次数

Dart:我必须取消Stream订阅并关闭StreamSinks吗?

我知道Stream当我不想再收到任何活动时我必须取消订阅.即使我收到"完成"活动后,我还有这个吗?或者我是否有内存泄漏?

传递到addStream另一个Stream的Streams会发生什么?它们会自动取消吗?

对同样的问题StreamSink方面我必须关闭它们,如果流已经做了什么?

stream dart

16
推荐指数
2
解决办法
3910
查看次数

如何设置MS Test项目的工作目录

如何为MS Tests项目设置工作目录,就像我可以为正常的应用程序项目做的那样?我测试的组件需要访问一些其他应用程序也使用的配置文件.到目前为止,我必须将这些文件复制到我的测试项目的bin/debug文件夹中,因为这些文件应该在工作目录中.

是否可以为测试项目设置工作目录?

mstest visual-studio-2012

14
推荐指数
2
解决办法
2万
查看次数

UWP:如何调整图像大小

我有一个JPEG图像存储在Byte []中,我想调整大小.这是我的代码:

public async Task<byte[]> ResizeImage(byte[] imageData, int reqWidth, int reqHeight, int quality)
{

    var memStream = new MemoryStream(imageData);

    IRandomAccessStream imageStream = memStream.AsRandomAccessStream();
    var decoder = await BitmapDecoder.CreateAsync(imageStream);
    if (decoder.PixelHeight > reqHeight || decoder.PixelWidth > reqWidth)
    {
        using (imageStream)
        {
            var resizedStream = new InMemoryRandomAccessStream();

            BitmapEncoder encoder = await BitmapEncoder.CreateForTranscodingAsync(resizedStream, decoder);
            double widthRatio = (double) reqWidth/decoder.PixelWidth;
            double heightRatio = (double) reqHeight/decoder.PixelHeight;

            double scaleRatio = Math.Min(widthRatio, heightRatio);

            if (reqWidth == 0)
                scaleRatio = heightRatio;

            if (reqHeight == 0)
                scaleRatio = widthRatio; …
Run Code Online (Sandbox Code Playgroud)

c# image-processing win-universal-app

10
推荐指数
1
解决办法
5684
查看次数

mongodb c# API V2:ReplaceOne 和 FindOneAndReplace 的区别

查看 mongodb 文档,我读到 FindOneAndReplace 将是一个原子操作。但我不明白的是为什么 ReplaceOne 不会是原子的?如果有区别,为什么要使用 ReplaceOne 呢?

mongodb mongodb-.net-driver

8
推荐指数
1
解决办法
3755
查看次数

VS2012单元测试:如何更改TestResults文件夹的位置

我将所有单元测试项目放在我的解决方案文件夹下的一个文件夹中,并希望将TestResults文件夹放在与测试项目相同的文件夹中,而不是在解决方案目录中.

我发现这可以通过测试seeting文件来完成: 如何在VS 2010中指定单元测试结果的位置?

但我也读到,使用VS2012,您不应再使用测试设置文件.实际上VS2012没有创建一个.

还有另外一种方法吗?

unit-testing visual-studio-2012

6
推荐指数
2
解决办法
1万
查看次数

Dart中推荐的方法是:断言或引发错误

Dart明确区分了Error和Exception,它们是代码逻辑中的一个问题,该错误永远不会发生,也永远不会被捕获,这是基于运行时数据的一个信号。

我真的很喜欢这种区别,但是我想知道何时应该使用断言?

dart flutter

6
推荐指数
3
解决办法
104
查看次数

ReactiveUI:如何将参数正确传递给ReactiveCommand.CreateFromTask

我想在执行绑定到控件的ReactiveCommand时将参数从View传递给ViewModel。参数应为类型IJcUser

所以我这样定义命令:

public ReactiveCommand<IJcUser, Unit> UserTouchCommand;

UserTouchCommand = ReactiveCommand.CreateFromTask(user => RootViewModel.DisplayUserProfile(user));
Run Code Online (Sandbox Code Playgroud)

的签名DisplayUserProfile看起来像

Task DisplayUserProfile(IJcUser user);

但是编译器抱怨是因为user来自类型CancelationToken而不是预期的IJcUser

我终于找到了解决方案,但不明白为什么第一种方法不起作用。

UserTouchCommand = ReactiveCommand.CreateFromTask<IJcUser>(RootViewModel.DisplayUserProfile);
Run Code Online (Sandbox Code Playgroud)

reactiveui

5
推荐指数
1
解决办法
1589
查看次数

是否可以使用Exoplayer预先加载多个流并同时播放多个视频

我们正在考虑在我们的应用程序中使用Exoplayer。我想知道的事情:

  1. 是否可以使用Exoplayer预加载视频流,然后将其移交给播放器?
  2. 一个视图可以播放多个视频吗?
  3. 是否可以将播放器从一个View上摘下来并连接到另一个View?

android exoplayer

5
推荐指数
0
解决办法
433
查看次数

为什么我应该在可能的时候使用隐式类型(var)?

可能重复:
C#3.0中var关键字的优点

昨天我偶然发现MS的推荐,我应该尽可能使用var:

http://msdn.microsoft.com/en-us/library/ff926074.aspx

我一直认为使用正确的类型将有助于记录代码,并在编译时帮助查找错误.

这个推荐背后的原因是什么?

最佳托马斯

c# implicit-typing

4
推荐指数
2
解决办法
1807
查看次数

为什么 OpenAPI 中有不同的组件类型?

尝试了解 OpenAPI 在components/schemas部分 中定义可重用对象或在components/requestBodies它确实是作为请求正文的对象时定义可重用对象之间的区别。

除了分离不是真正域对象的简单请求有效负载之外,还有什么区别吗?为什么我们有不同的schemasrequestBodies和部分responses

特别是在查看生成的客户端代码时,我发现在 中定义的类schemasrequestBodies.

swagger openapi

4
推荐指数
1
解决办法
550
查看次数

如何将回调转换为Rx.Observable?

如果外部库只提供注册回调而不是事件,那么创建Observable它的最佳方法是什么?

如果它是我可以使用的事件,Observable.FromEventPattern 但在这种情况下,我唯一的想法是Subject在每个回调中使用a 和队列事件.

有没有更好的方法来做到这一点?

system.reactive

1
推荐指数
1
解决办法
1173
查看次数