Questions tagged «flutter-widget»


3
如何处理不需要的小部件构建?
由于各种原因,有时会build再次调用我的小部件的方法。 我知道这是因为父母更新了。但这会导致不良后果。导致问题的典型情况是使用FutureBuilder这种方式: @override Widget build(BuildContext context) { return FutureBuilder( future: httpCall(), builder: (context, snapshot) { // create some layout here }, ); } 在此示例中,如果再次调用build方法,它将触发另一个http请求。这是不希望的。 考虑到这一点,如何处理不必要的构建?有什么办法可以防止构建调用吗?

10
垂直视口的高度不受限制
这是我的代码: @override Widget build(BuildContext context) { return new Material( color: Colors.deepPurpleAccent, child: new Column( mainAxisAlignment: MainAxisAlignment.center, children:<Widget>[new GridView.count(crossAxisCount: _column,children: new List.generate(_row*_column, (index) { return new Center( child: new CellWidget() ); }),)] ) ); } 异常如下: I/flutter ( 9925): ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════ I/flutter ( 9925): The following …

4
Flutter:如何正确使用继承的窗口小部件?
使用InheritedWidget的正确方法是什么?到目前为止,我了解到它为您提供了沿Widget树向下传播数据的机会。在极端情况下,如果您将其作为RootWidget放置,则可以从所有Route的树中的所有Widget进行访问,这很好,因为以某种方式我必须使Widget可以访问ViewModel / Model,而不必诉诸于globals或Singletons。 但是InheritedWidget是不可变的,那么如何更新它?更重要的是,如何触发我的有状态小部件来重建其子树? 不幸的是,这里的文档非常不清楚,与许多人讨论之后,似乎没人真正知道使用它的正确方法。 我引用了Brian Egan的话: 是的,我将其视为在树上传播数据的一种方式。我从API文档中发现了令人困惑的地方: “以这种方式引用继承的小部件时,当继承的小部件自身更改状态时,将导致使用者重建。” 当我第一次阅读这篇文章时,我想: 我可以在InheritedWidget中填充一些数据,并在以后对其进行突变。当发生这种突变时,它将重建引用我的InheritedWidget的所有Widget: 为了使InheritedWidget的状态发生变化,您需要将其包装在StatefulWidget中,然后实际上使StatefulWidget的状态发生变化,然后将此数据传递给InheritedWidget,该InheritedWidget将数据传递给所有子项。但是,在那种情况下,似乎要重建StatefulWidget之下的整个树,而不仅仅是引用InheritedWidget的Widget。那是对的吗?还是以某种方式知道如果updateShouldNotify返回false时如何跳过引用InheritedWidget的Widget?

6
如何获得小部件的高度?
我不明白如何LayoutBuilder用于获取小部件的高度。 我需要显示小部件列表并获取它们的高度,以便可以计算一些特殊的滚动效果。我正在开发一个程序包,其他开发人员提供了小部件(我不控制它们)。我读过LayoutBuilder可以用来获取高度。 在非常简单的情况下,我尝试将Widget包装在LayoutBuilder.builder中并将其放入堆栈中,但是我总是得到minHeight 0.0和maxHeight INFINITY。我在滥用LayoutBuilder吗? 编辑:似乎LayoutBuilder是行不通的。我发现CustomSingleChildLayout几乎是一个解决方案。 我扩展了该委托,并且能够在getPositionForChild(Size size, Size childSize)方法中获得小部件的高度。但是,第一个调用的方法是Size getSize(BoxConstraints constraints),作为约束,我将0赋给INFINITY,因为我将这些CustomSingleChildLayouts放置在ListView中。 我的问题是SingleChildLayoutDelegate的getSize运行就像需要返回视图的高度一样。我当时不知道孩子的身高。我只能返回constraints.smallest(为0,高度为0),或者返回constraints.biggest,它为无穷大并导致应用崩溃。 在文档中甚至说: ...但是父母的大小不能取决于孩子的大小。 这是一个怪异的限制。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.