flutter - 使 GridVew 项目填充 FLutter 中的空白空间
问题描述
我想制作一个自动填充容器的网格项。
我想要的是这样的。我用childAspectRatio
这个,但如果我减少项目编号,它就无法填满容器。
这是我的网格代码
Column (
children: <Widget>[
Row(
children: [
Expanded(
child: Container(
color: Colors.grey,
height: 150,
child: _gridView ()),
),
],
),
)
Widget _gridView () {
return GridView.count(
crossAxisCount: 2,
scrollDirection: Axis.horizontal,
mainAxisSpacing: 5,
crossAxisSpacing: 3,
children: List.generate(6, (index) {
return Container(
alignment: Alignment.center,
child: SizedBox(
child: FloatingActionButton(
backgroundColor: Colors.green,
child: null,
onPressed: () {
print("Cliked");
},)
));
})
);
}
一些参考资料说我应该使用Expanded
,但我仍然不知道该放在哪里。
解决方案
检查我所做的更改:
Widget _gridView (BuildContext context) {
double cardWidth = MediaQuery.of(context).size.width / 6;
double cardHeight = MediaQuery.of(context).size.height / 3;
return GridView.count(
crossAxisCount: 2,
scrollDirection: Axis.horizontal,
mainAxisSpacing: 5,
crossAxisSpacing: 3,
childAspectRatio: cardWidth / cardHeight,
children: List.generate(6, (index) {
return Container(
alignment: Alignment.center,
child: SizedBox(
child: FloatingActionButton(
backgroundColor: Colors.green,
child: null,
onPressed: () {
print("Cliked");
},)
));
})
);
}
输出:
不要忘记在此方法中传递上下文。
推荐阅读
- excel - 关于通过行循环代码的问题,无法开始工作
- android - RecyclerView:如何使用 ViewModel 刷新 CardViews 的完整列表?
- etl - 如何计算数据阶段中两个日期之间的月数
- android - 来自网络提供商 Android 的位置
- docker - docker's service exit with code 'Exit 127' : 系统找不到指定的路径
- php - 使用 Search API、Facet 和 Drupal 8 添加带有日历弹出窗口的日期范围
- java - java rest请求期间偶尔出现“407 Proxy Authentication Required”错误
- ios - swift 5 的最低 ios 部署目标是多少?
- swift - 如何在 swift 4 中正确调整聊天气泡的图像大小
- react-native - React-Native-Maps:如何使用 animateCamera 和 setCamera