Flutter 颤振布局(科隆6个集装箱)
我想在列中创建6个容器,并使容器可单击Flutter 颤振布局(科隆6个集装箱),flutter,flutter-layout,fluent-nhibernate,flutter-dependencies,flutter-web,Flutter,Flutter Layout,Fluent Nhibernate,Flutter Dependencies,Flutter Web,我想在列中创建6个容器,并使容器可单击 您可以简单地使用GridView.count来帮助生成布局 代码示例 类MyWidget扩展了无状态Widget{ 最后清单项目; MyWidget({this.items=const[]}); @凌驾 小部件构建(构建上下文){ 返回GridView.count( 交叉轴计数:2, 儿童:[ …项目 .地图( (e) =>容器( 身高:150, 宽度:150, 边距:所有常数边集(20.0), 填充:边缘组。对称(水平:17.8,垂直:30.5), 对
您可以简单地使用
GridView.count
来帮助生成布局
代码示例
类MyWidget扩展了无状态Widget{
最后清单项目;
MyWidget({this.items=const[]});
@凌驾
小部件构建(构建上下文){
返回GridView.count(
交叉轴计数:2,
儿童:[
…项目
.地图(
(e) =>容器(
身高:150,
宽度:150,
边距:所有常数边集(20.0),
填充:边缘组。对称(水平:17.8,垂直:30.5),
对齐:对齐.bottomCenter,
装饰:盒子装饰(
颜色:颜色(0xFF230A59),
borderRadius:仅限borderRadius(
左上角:常数半径。圆形(40.0),
右上角:常数半径。圆形(40.0),
),
),
儿童:中心(
子:文本(
E
样式:TextStyle(
颜色:颜色(0xFFf2f2f2),
fontWeight:fontWeight.bold,
//fontFamily:“蒙特塞拉特”,
尺寸:20,
),
),
),
),
)
.toList(),
],
);
}
}
您只需创建一个GridView
,其中crossAxisCount
为2(因此每行有2个项目),然后在其子项中生成小部件列表即可
请尝试完整的代码。您可以使用GridView.count
,您可以将对象放入一个类中,以使用灵活的代码,并且可以为可单击的容器定义onTap
属性,如下面的代码:
class Test1 extends StatelessWidget {
List<MainObject> list = [
MainObject(
onTap: () {/*some actions*/},
),
MainObject(),
MainObject(),
MainObject(),
MainObject(),
MainObject(),
];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Cours et exercices pour S5 LST IETEL"),
),
body: GridView.count(
shrinkWrap: true,
scrollDirection: Axis.vertical,
crossAxisCount: 2,
physics: ScrollPhysics(),
children: List.generate(list.length, (index) => list[index]),
));
}
}
class MainObject extends StatelessWidget {
final Function onTap;
MainObject({this.onTap});
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: onTap,
child: Container(
height: 150.0,
width: 150.0,
margin: const EdgeInsets.all(20.0),
padding: EdgeInsets.symmetric(horizontal: 17.8, vertical: 30.5),
alignment: Alignment.bottomCenter,
decoration: new BoxDecoration(
// color: Colors.green,
color: Color(0xff230A59),
borderRadius: new BorderRadius.only(
topLeft: const Radius.circular(40.0),
topRight: const Radius.circular(40.0))),
child: Center(
child: Text(
"Electronique Analogique",
style: TextStyle(
color: Color(0xfff2f2f2),
fontWeight: FontWeight.bold,
fontFamily: 'Montserrat',
fontSize: 20,
),
),
),
),
);
}
}
类Test1扩展了无状态小部件{
列表=[
主要对象(
onTap:(){/*某些操作*/},
),
main对象(),
main对象(),
main对象(),
main对象(),
main对象(),
];
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(“课程与实践”第五部分),
),
正文:GridView.count(
收缩膜:对,
滚动方向:轴垂直,
交叉轴计数:2,
物理:物理(),
子项:List.generate(List.length,(index)=>List[index]),
));
}
}
类MainObject扩展了无状态小部件{
最终功能onTap;
main对象({this.onTap});
@凌驾
小部件构建(构建上下文){
返回手势检测器(
onTap:onTap,
子:容器(
高度:150.0,
宽度:150.0,
边距:所有常数边集(20.0),
填充:边缘组。对称(水平:17.8,垂直:30.5),
对齐:对齐.bottomCenter,
装饰:新盒子装饰(
//颜色:颜色。绿色,
颜色:颜色(0xff230A59),
borderRadius:仅限新的borderRadius(
左上角:常数半径。圆形(40.0),
右上角:常数半径。圆形(40.0)),
儿童:中心(
子:文本(
“电子模拟”,
样式:TextStyle(
颜色:颜色(0xfff2f2f2),
fontWeight:fontWeight.bold,
fontFamily:“蒙特塞拉特”,
尺寸:20,
),
),
),
),
);
}
}
class Test1 extends StatelessWidget {
List<MainObject> list = [
MainObject(
onTap: () {/*some actions*/},
),
MainObject(),
MainObject(),
MainObject(),
MainObject(),
MainObject(),
];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Cours et exercices pour S5 LST IETEL"),
),
body: GridView.count(
shrinkWrap: true,
scrollDirection: Axis.vertical,
crossAxisCount: 2,
physics: ScrollPhysics(),
children: List.generate(list.length, (index) => list[index]),
));
}
}
class MainObject extends StatelessWidget {
final Function onTap;
MainObject({this.onTap});
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: onTap,
child: Container(
height: 150.0,
width: 150.0,
margin: const EdgeInsets.all(20.0),
padding: EdgeInsets.symmetric(horizontal: 17.8, vertical: 30.5),
alignment: Alignment.bottomCenter,
decoration: new BoxDecoration(
// color: Colors.green,
color: Color(0xff230A59),
borderRadius: new BorderRadius.only(
topLeft: const Radius.circular(40.0),
topRight: const Radius.circular(40.0))),
child: Center(
child: Text(
"Electronique Analogique",
style: TextStyle(
color: Color(0xfff2f2f2),
fontWeight: FontWeight.bold,
fontFamily: 'Montserrat',
fontSize: 20,
),
),
),
),
);
}
}