在选择DropdownButton
菜单中的一个选项之后,在尝试从REST API接收数据之后,我试图构建一个全新的小部件树。
不幸的是,我不断收到以下错误:
以下断言被抛出 MediaQuery(MediaQueryData(size:Size(411.4,683.4),devicePixelRatio:2.6,textScaleFactor:1.0,padding:EdgeInsets.zero, viewInsets:EdgeInsets.zero,alwaysUse24HourFormat: false,accessibleNavigation:falsedisableAnimations: falseinvertColors:falseboldText:false)): 'package:flutter / src / widgets / sliver.dart':失败 断言:第551行pos 12:“ child!= null”:不是 是的。
我的代码所做的基本上是检查数据是否存在,直到选择了下拉菜单选项,该数据才存在。最初,当没有数据时,ListView
中的Scaffold
在下拉菜单下方仅保留一个空容器,但是当选择该项目时,应检索数据并重建整个小部件树,从而得到一个ListView.separated
(而不是空容器)中的ListView
。
经过初步调试后,问题似乎出在setState()
中onChanged
的{{1}}方法中,但我似乎无法弄清楚问题是什么。还要注意,下拉菜单中的项目是从API填充的,但这与问题无关。
任何帮助将不胜感激!
相关代码如下:
DropdownButton
答案 0 :(得分:0)
首先,我将从对您的代码注意到的内容开始:
您使用ListView有点不正确。虽然ListView确实可以包含任意数量和类型的元素并以线性方式排列它们,但应该仅包含相同类型的小部件,例如Contacts或Todos。
由于列表视图仍然是列表,就像许多编程语言一样,根据设计,列表视图中将仅采用一种类型,例如字符串或整数。
我建议尝试结合使用Column和Flexible小部件的Expanded小部件。
关于您的问题,我认为它在于<div class="form-group">
<label for="QRY_Owner"> Owner ID</label>
<input id="QRY_Owner" type="text" style="width:300px">
</div>
$("#QRY_Owner").select2({
multiple: false,
placeholder: "Owner ID",
tags: [],
tokenSeparators: [",", " ", ";"],
maximumInputLength: 12,
selectOnBlur: true,
dropdownCssClass: "hiddenSelect2DropDown"
});
$("#QRY_Owner").val("test");
函数中。当data <- data.frame(A = runif(10, 0, 10),
B = runif(10, 0, 10),
color = runif(10, 0, 10),
density = runif(10, 0, 10),
red = rep(1:5, each=2))
ggplot(data, aes(A, B, color = color, alpha = 1/density)) +
geom_point(shape = 16, size = 5, show.legend = T) +
theme_minimal() +
theme(axis.text=element_text(size=12, family = 'serif'),
axis.title=element_text(size=16,face="bold", family = 'serif'),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.line = element_line(colour = "black")) +
scale_color_gradient(low = "white", high = "black", name = "Scale", breaks = c(8,2), labels = c("max","min"))+
geom_point(data = data[data$red == 1,],color="red",size=5, alpha = 0.7, show.legend = T) +
scale_alpha(range = c(.5, .7), breaks = data$A[1], labels = c("1")) +
scale_x_continuous(trans='log10', name = "A") +
scale_y_continuous(trans='log10', name = "B")
不为null时,您不会返回createSimpleWidget
函数的返回值,因此将一无所有返回,因此将子代断言为null。为了避免将来发生这些情况(并且在函数中仅保留一个return语句),我建议您这样做:
selectedTag
希望这会有所帮助!