Flutter 颤振布局(科隆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), 对

我想在列中创建6个容器,并使容器可单击


您可以简单地使用
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,
            ),
          ),
        ),
      ),
    );
  }
}