使用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?
我知道Stream
当我不想再收到任何活动时我必须取消订阅.即使我收到"完成"活动后,我还有这个吗?或者我是否有内存泄漏?
传递到addStream
另一个Stream的Streams会发生什么?它们会自动取消吗?
对同样的问题StreamSink
方面我必须关闭它们,如果流已经做了什么?
如何为MS Tests项目设置工作目录,就像我可以为正常的应用程序项目做的那样?我测试的组件需要访问一些其他应用程序也使用的配置文件.到目前为止,我必须将这些文件复制到我的测试项目的bin/debug文件夹中,因为这些文件应该在工作目录中.
是否可以为测试项目设置工作目录?
我有一个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) 查看 mongodb 文档,我读到 FindOneAndReplace 将是一个原子操作。但我不明白的是为什么 ReplaceOne 不会是原子的?如果有区别,为什么要使用 ReplaceOne 呢?
我将所有单元测试项目放在我的解决方案文件夹下的一个文件夹中,并希望将TestResults文件夹放在与测试项目相同的文件夹中,而不是在解决方案目录中.
我发现这可以通过测试seeting文件来完成: 如何在VS 2010中指定单元测试结果的位置?
但我也读到,使用VS2012,您不应再使用测试设置文件.实际上VS2012没有创建一个.
还有另外一种方法吗?
Dart明确区分了Error和Exception,它们是代码逻辑中的一个问题,该错误永远不会发生,也永远不会被捕获,这是基于运行时数据的一个信号。
我真的很喜欢这种区别,但是我想知道何时应该使用断言?
我想在执行绑定到控件的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) 我们正在考虑在我们的应用程序中使用Exoplayer。我想知道的事情:
可能重复:
C#3.0中var关键字的优点
昨天我偶然发现MS的推荐,我应该尽可能使用var:
http://msdn.microsoft.com/en-us/library/ff926074.aspx
我一直认为使用正确的类型将有助于记录代码,并在编译时帮助查找错误.
这个推荐背后的原因是什么?
最佳托马斯
尝试了解 OpenAPI 在components/schemas
部分 中定义可重用对象或在components/requestBodies
它确实是作为请求正文的对象时定义可重用对象之间的区别。
除了分离不是真正域对象的简单请求有效负载之外,还有什么区别吗?为什么我们有不同的schemas
、requestBodies
和部分responses
?
特别是在查看生成的客户端代码时,我发现在 中定义的类schemas
和requestBodies
.
如果外部库只提供注册回调而不是事件,那么创建Observable
它的最佳方法是什么?
如果它是我可以使用的事件,Observable.FromEventPattern
但在这种情况下,我唯一的想法是Subject
在每个回调中使用a 和队列事件.
有没有更好的方法来做到这一点?