即使在指定Container GridView的高度之后,我的代码仍在生成方形小部件。
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => new _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
List<String> widgetList = ['A', 'B', 'C'];
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text(widget.title),
),
body: new Container(
child: new GridView.count(
crossAxisCount: 2,
controller: new ScrollController(keepScrollOffset: false),
shrinkWrap: true,
scrollDirection: Axis.vertical,
children: widgetList.map((String value) {
return new Container(
height: 250.0,
color: Colors.green,
margin: new EdgeInsets.all(1.0),
child: new Center(
child: new Text(
value,
style: new TextStyle(fontSize: 50.0,color: Colors.white),
),
),
);
}).toList(),
),
),
);
}
}
上面代码的输出如左图所示。如何获得带有自定义高度小部件的GridView ,如右图所示?
关键是childAspectRatio
。这个值是用来确定的布局在GridView
。为了获得所需的外观,您必须将其设置为
(itemWidth/ itemHeight
)。解决方案是这样的:
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => new _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
List<String> widgetList = ['A', 'B', 'C'];
@override
Widget build(BuildContext context) {
var size = MediaQuery.of(context).size;
/*24 is for notification bar on Android*/
final double itemHeight = (size.height - kToolbarHeight - 24) / 2;
final double itemWidth = size.width / 2;
return new Scaffold(
appBar: new AppBar(
title: new Text(widget.title),
),
body: new Container(
child: new GridView.count(
crossAxisCount: 2,
childAspectRatio: (itemWidth / itemHeight),
controller: new ScrollController(keepScrollOffset: false),
shrinkWrap: true,
scrollDirection: Axis.vertical,
children: widgetList.map((String value) {
return new Container(
color: Colors.green,
margin: new EdgeInsets.all(1.0),
child: new Center(
child: new Text(
value,
style: new TextStyle(
fontSize: 50.0,
color: Colors.white,
),
),
),
);
}).toList(),
),
),
);
}
}
我正在尝试从Flutter中的父部件传递堆栈的高度,但我无法做到。请帮助我找到解决方案,我将把我的代码作为参考。 父小工具 子部件 如何将堆栈的高度传递给SVGPicture。
问题内容: 我正在尝试创建中间件,以有选择地将kwarg传递给满足条件的每个视图。 问题是我找不到如何设置中间件的示例。我已经看到了覆盖我想要的方法的类: 但是我该把课程放在哪里?我是否创建一个中间件应用程序并将其放在其中,然后在其中引用它? 问题答案: 第一:路径结构 如果没有,则需要按照以下结构在应用程序中创建中间件文件夹: 文件夹中间件应与settings.py,URL,模板…放置在同一文件
以下用于调整selenium chrome窗口大小的代码无效: 其输出为: 我也尝试过使用选项来设置驱动程序创建时的窗口大小(以及许多其他事情,如下面的注释),但也无法使其工作: 我使用selenium 3.14.0,铬驱动程序版本72.0.3626.109并在后台/无头模式下运行:我实际上需要在后台运行我的代码,这意味着它会在后台自动启动。我认为无头和背景有细微的区别,无头和背景在启动时与特定用
我已经将问题从居中改为自定义的位置。 因为我注意到实际上是居中的,根据文档,它只是添加了页签。 但是如果您希望在避开安全区域时设置一个制表符,或者选项卡中的元素不是(自动)居中对齐,我现在找不到方法。 我还尝试将选项卡包装在小部件中,并获得属性集,但似乎所有的高度都避开了安全区域(通过添加一个常量)。我尝试用小部件包装整个,但是安全区域变成了黑色,我们实际上希望tab bat变得更高,然后在这个更
问题内容: 我有一个要动态更改的小部件列表。 如何从窗口中删除小部件? 问题答案: 您可以调用以删除小部件(如果用于将其添加到窗口中)。 例: 如果使用,稍后可以再次显示该小部件,再次调用。如果您想永久删除它,请调用该小部件(这样您将无法重新添加它)。 如果你使用的方法,你可以使用或以 隐藏 的窗口小部件。
在我的vadin应用程序中,一个扩展AbstractJavaScriptComponent的自定义小部件有几个文件,如下所示。这些文件在浏览器中可用 null