Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Layout 用于显示图像的颤振布局_Layout_Widget_Flutter - Fatal编程技术网

Layout 用于显示图像的颤振布局

Layout 用于显示图像的颤振布局,layout,widget,flutter,Layout,Widget,Flutter,任何人都可以建议如何创建布局,如下图所示使用颤振显示图像。 1个大正方形和5个小正方形,必须根据屏幕宽度相应调整大小 小部件构建(构建上下文){ 最终宽度=MediaQuery.of(context).size.width; 退回新货柜( 子:新列( 儿童:[ 新行(儿童:[ 新容器( 宽度:2*宽度/4, 高度:2*宽度/4, 颜色:颜色。浅绿色, ), 新栏目(儿童:[ 新容器( 宽度:宽度/4, 高度:宽度/4, 颜色:Colors.redAccent, ), 新容器( 宽度:宽度/4,

任何人都可以建议如何创建布局,如下图所示使用颤振显示图像。 1个大正方形和5个小正方形,必须根据屏幕宽度相应调整大小

小部件构建(构建上下文){
最终宽度=MediaQuery.of(context).size.width;
退回新货柜(
子:新列(
儿童:[
新行(儿童:[
新容器(
宽度:2*宽度/4,
高度:2*宽度/4,
颜色:颜色。浅绿色,
),
新栏目(儿童:[
新容器(
宽度:宽度/4,
高度:宽度/4,
颜色:Colors.redAccent,
),
新容器(
宽度:宽度/4,
高度:宽度/4,
颜色:颜色,红色,
)
],)
],),
新行(儿童:[
新容器(
宽度:宽度/4,
高度:宽度/4,
颜色:颜色。黑色54,
),
新容器(
宽度:宽度/4,
高度:宽度/4,
颜色:Colors.redAccent,
),
新容器(
宽度:宽度/4,
高度:宽度/4,
颜色:颜色。绿色,
),
],)
],
),
);
}

在这种情况下,您可以使用颤振\u交错网格\u视图包

在pubspec.yaml中导入包

dependencies:

 ...

   flutter_staggered_grid_view: ^0.2.2
按照以下代码获得交错网格视图

  import 'package:flutter/material.dart';
  import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';

void main() {
  runApp(new MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      theme: new ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: new HomePage(),
    );
  }
}


class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: new AppBar(
        title: new Text("Demo"),
      ),
      body: new Padding(
          padding: const EdgeInsets.only(top: 12.0),
          child: new StaggeredGridView.count(
            crossAxisCount: 3,
            staggeredTiles: _staggeredTiles,
            children: _tiles,
            mainAxisSpacing: 4.0,
            crossAxisSpacing: 4.0,
            padding: const EdgeInsets.all(4.0),
          )
      )
    );
  }
}


List<StaggeredTile> _staggeredTiles = const <StaggeredTile>[
  const StaggeredTile.count(2, 2),
  const StaggeredTile.count(1, 1),
  const StaggeredTile.count(1, 1),
  const StaggeredTile.count(1, 1),
  const StaggeredTile.count(1, 1),
  const StaggeredTile.count(1, 1),
];

List<Widget> _tiles = const <Widget>[
  const _Example01Tile(Colors.green, Icons.widgets),
  const _Example01Tile(Colors.lightBlue, Icons.wifi),
  const _Example01Tile(Colors.amber, Icons.panorama_wide_angle),
  const _Example01Tile(Colors.brown, Icons.map),
  const _Example01Tile(Colors.deepOrange, Icons.send),
  const _Example01Tile(Colors.indigo, Icons.airline_seat_flat),
];



class _Example01Tile extends StatelessWidget {
  const _Example01Tile(this.backgroundColor, this.iconData);

  final Color backgroundColor;
  final IconData iconData;

  @override
  Widget build(BuildContext context) {
    return new Card(
      color: backgroundColor,
      child: new InkWell(
        onTap: () {},
        child: new Center(
          child: new Padding(
            padding: const EdgeInsets.all(4.0),
            child: new Icon(
              iconData,
              color: Colors.white,
            ),
          ),
        ),
      ),
    );
  }
}
导入“包装:颤振/材料.省道”;
导入“包:颤振交错网格视图/颤振交错网格视图.省道”;
void main(){
runApp(新的MyApp());
}
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回新材料PP(
主题:新主题数据(
主样本:颜色。蓝色,
),
主页:新主页(),
);
}
}
类主页扩展了StatefulWidget{
@凌驾
_HomePageState createState()=>\u HomePageState();
}
类_HomePageState扩展状态{
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:新的appBar(
标题:新文本(“演示”),
),
车身:新衬垫(
填充:仅限常量边集(顶部:12.0),
子项:新的EdgridView.count(
交叉轴计数:3,
交错文件:_交错文件,
孩子们:_瓦片,
主轴间距:4.0,
交叉轴间距:4.0,
填充:常数边集全部(4.0),
)
)
);
}
}
列表_交错文件=常数[
常数交错文件计数(2,2),
常数交错文件计数(1,1),
常数交错文件计数(1,1),
常数交错文件计数(1,1),
常数交错文件计数(1,1),
常数交错文件计数(1,1),
];
列表_tiles=const[
const_example1tile(颜色、绿色、图标、小部件),
const_示例01瓷砖(颜色。浅蓝色,图标。wifi),
常量示例01瓷砖(颜色、琥珀色、图标、全景、广角),
const_示例01瓷砖(Colors.brown、Icons.map),
const_example1tile(Colors.deepOrange,Icons.send),
const_示例01瓷砖(颜色、靛蓝、图标、航空公司座椅平面),
];
类\u示例01扩展无状态小部件{
const_example01瓷砖(this.backgroundColor,this.iconda);
最终颜色背景色;
最终Iconda Iconda;
@凌驾
小部件构建(构建上下文){
归还新卡(
颜色:背景色,
孩子:新墨水井(
onTap:(){},
孩子:新中心(
孩子:新的填充物(
填充:常数边集全部(4.0),
孩子:新图标(
伊康达,
颜色:颜色,白色,
),
),
),
),
);
}
}

您可以使用column->(row->item-column->item item)-(row->item item)测试代码,但需要将宽度和高度除以3,而不是4。简短而简单的解决方案,无需导入任何其他软件包。您可以根据需要划分宽度和高度的任意比例。这只是一个示例代码。感谢您介绍颤振交错网格视图。它是灵活和良好的。
  import 'package:flutter/material.dart';
  import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';

void main() {
  runApp(new MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      theme: new ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: new HomePage(),
    );
  }
}


class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: new AppBar(
        title: new Text("Demo"),
      ),
      body: new Padding(
          padding: const EdgeInsets.only(top: 12.0),
          child: new StaggeredGridView.count(
            crossAxisCount: 3,
            staggeredTiles: _staggeredTiles,
            children: _tiles,
            mainAxisSpacing: 4.0,
            crossAxisSpacing: 4.0,
            padding: const EdgeInsets.all(4.0),
          )
      )
    );
  }
}


List<StaggeredTile> _staggeredTiles = const <StaggeredTile>[
  const StaggeredTile.count(2, 2),
  const StaggeredTile.count(1, 1),
  const StaggeredTile.count(1, 1),
  const StaggeredTile.count(1, 1),
  const StaggeredTile.count(1, 1),
  const StaggeredTile.count(1, 1),
];

List<Widget> _tiles = const <Widget>[
  const _Example01Tile(Colors.green, Icons.widgets),
  const _Example01Tile(Colors.lightBlue, Icons.wifi),
  const _Example01Tile(Colors.amber, Icons.panorama_wide_angle),
  const _Example01Tile(Colors.brown, Icons.map),
  const _Example01Tile(Colors.deepOrange, Icons.send),
  const _Example01Tile(Colors.indigo, Icons.airline_seat_flat),
];



class _Example01Tile extends StatelessWidget {
  const _Example01Tile(this.backgroundColor, this.iconData);

  final Color backgroundColor;
  final IconData iconData;

  @override
  Widget build(BuildContext context) {
    return new Card(
      color: backgroundColor,
      child: new InkWell(
        onTap: () {},
        child: new Center(
          child: new Padding(
            padding: const EdgeInsets.all(4.0),
            child: new Icon(
              iconData,
              color: Colors.white,
            ),
          ),
        ),
      ),
    );
  }
}