1

我正在尝试测试容器的宽度和高度。我正在尝试做这样的事情:

expect(
        find.byWidgetPredicate((Widget widget) =>
            widget is Container  && widget.width == 48),
        findsOneWidget);

但。不幸的是,如果我键入widget.width,它会说没有为类 Container 定义 getter 宽度。

4

2 回答 2

3

中没有这样的属性Container。相反,它拥有 aBoxConstraints的最小和最大宽度Container。假设minWidthmaxWidth在您的情况下相等,请考虑使用:

expect(
  find.byWidgetPredicate((Widget widget) {
    if (widget is Container) {
      BoxConstraints width = widget.constraints.widthConstraints();
      return (width.minWidth == width.maxWidth) && (width.minWidth == 48);
    } else {
      return false;
    }
  }),
  findsOneWidget,
);

对于高度:

expect(
  find.byWidgetPredicate((Widget widget) {
    if (widget is Container) {
      BoxConstraints height = widget.constraints.heightConstraints();
      return (height.minHeight == height.maxHeight) && (height.minHeight == 48);
    } else {
      return false;
    }
  }),
  findsOneWidget,
);
于 2019-06-11T12:50:19.133 回答
1

尝试:

widget.constraints.widthConstraints();
于 2019-06-11T12:43:07.297 回答