Flutter 如何在颤振中设计这种类型的仪表板?

Flutter 如何在颤振中设计这种类型的仪表板?,flutter,dart,Flutter,Dart,如何在Flatter中创建这种类型的仪表板 这类仪表板的名称是什么 我添加了一些图片供参考 这应该很有用 类因此扩展了StatefulWidget{ @凌驾 _SOState createState()=>\u SOState(); } 类_SOState扩展了状态{ @凌驾 小部件构建(构建上下文){ 返回脚手架( appBar:appBar( 标题:文本(“Foodie”), ), 正文:ListView.builder( 物品计数:食物。长度, itemBuilder:(构建上下文,i

如何在Flatter中创建这种类型的仪表板

  • 这类仪表板的名称是什么

  • 我添加了一些图片供参考

    这应该很有用

    类因此扩展了StatefulWidget{
    @凌驾
    _SOState createState()=>\u SOState();
    }
    类_SOState扩展了状态{
    @凌驾
    小部件构建(构建上下文){
    返回脚手架(
    appBar:appBar(
    标题:文本(“Foodie”),
    ),
    正文:ListView.builder(
    物品计数:食物。长度,
    itemBuilder:(构建上下文,int索引){
    var食品=食品[指数];
    返回列表块(
    标题:文本(食品名称),
    字幕:文本(食物、细节),
    前导:flatterlogo(),
    尾随:图标按钮(
    图标:图标(food.isFav?Icons.favorite:Icons.favorite\u边框),
    按下:()=>{
    设定状态(
    () {
    food.isFav=!food.isFav;
    },
    )
    },
    ),
    );
    },
    ),
    );
    }
    }
    列出食物=[
    食品(“食品0”、“关于食品0”),
    食品(“食品1”、“关于食品1”),
    食物(“食物2”,“关于食物2”),
    食品(“食品3”,“关于食品3”),
    食物(“食物4”,“关于食物4”),
    食品(“食品5”、“关于食品5”),
    食物(“食物6”,“关于食物6”),
    ];
    等级食品{
    最后的字符串名;
    最终字符串细节;
    布尔·伊斯法夫;
    食物(this.name,this.detail,{this.isFav=false});
    }
    

    编辑:

    用于仪表板背景


    类因此扩展了无状态小部件{
    @凌驾
    小部件构建(构建上下文){
    返回脚手架(
    主体:堆栈(
    子项:[dashBg,content],
    ),
    );
    }
    获取dashBg=>Column(
    儿童:[
    扩展(子:容器(颜色:Colors.deepPurple),flex:2,),
    扩展(子:容器(颜色:Colors.transparent),flex:5,),
    ],
    );
    获取内容=>Container(
    保证金:全部(32),
    颜色:颜色,红色,
    child:Center(child:Text('create your content in this')),
    );
    }
    

    在这里用代码扩展它

    class SO extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: Stack(
            children: <Widget>[dashBg, content],
          ),
        );
      }
    
      get dashBg => Column(
            children: <Widget>[
              Expanded(
                child: Container(color: Colors.deepPurple),
                flex: 2,
              ),
              Expanded(
                child: Container(color: Colors.transparent),
                flex: 5,
              ),
            ],
          );
    
      get content => Container(
            child: Column(
              children: <Widget>[
                header,
                grid,
              ],
            ),
          );
    
      get header => ListTile(
        contentPadding: EdgeInsets.only(left: 20, right: 20, top: 20),
        title: Text(
          'Dashboard',
          style: TextStyle(color: Colors.white),
        ),
        subtitle: Text(
          '10 items',
          style: TextStyle(color: Colors.blue),
        ),
        trailing: CircleAvatar(),
      );
    
      get grid => Expanded(
            child: Container(
              padding: EdgeInsets.only(left: 16, right: 16, bottom: 16),
              child: GridView.count(
                crossAxisSpacing: 16,
                mainAxisSpacing: 16,
                crossAxisCount: 2,
                childAspectRatio: .90,
                children: List.generate(8, (_) {
                  return Card(
                    elevation: 2,
                    shape: RoundedRectangleBorder(
                      borderRadius: BorderRadius.circular(8)
                    ),
                    child: Center(
                      child: Column(
                        mainAxisSize: MainAxisSize.min,
                        children: <Widget>[FlutterLogo(), Text('data')],
                      ),
                    ),
                  );
                }),
              ),
            ),
          );
    }
    
    类因此扩展了无状态小部件{
    @凌驾
    小部件构建(构建上下文){
    返回脚手架(
    主体:堆栈(
    子项:[dashBg,content],
    ),
    );
    }
    获取dashBg=>Column(
    儿童:[
    扩大(
    子:容器(颜色:Colors.deepPurple),
    弹性:2,
    ),
    扩大(
    子:容器(颜色:颜色。透明),
    弹性:5,
    ),
    ],
    );
    获取内容=>Container(
    子:列(
    儿童:[
    标题,
    网格,
    ],
    ),
    );
    get header=>ListTile(
    contentPadding:EdgeInsets.仅限(左:20,右:20,顶部:20),
    标题:正文(
    “仪表板”,
    样式:TextStyle(颜色:Colors.white),
    ),
    字幕:文本(
    "十项",,
    样式:TextStyle(颜色:Colors.blue),
    ),
    尾随:CircleAvatar(),
    );
    获取网格=>展开(
    子:容器(
    填充:仅限边设置(左:16,右:16,底部:16),
    子项:GridView.count(
    横轴间距:16,
    平均间距:16,
    交叉轴计数:2,
    childAspectRatio:.90,
    子项:List.generate(8,(){
    回程卡(
    标高:2,
    形状:圆形矩形边框(
    边界半径:边界半径。圆形(8)
    ),
    儿童:中心(
    子:列(
    mainAxisSize:mainAxisSize.min,
    子项:[logo(),文本('data')],
    ),
    ),
    );
    }),
    ),
    ),
    );
    }
    
    给予


    选项卡视图中的列表;我不想要这个选项卡视图。我只想要一个具有这种类型设计的主页。请提供一个指向这种类型设计的链接。我想学习如何进行这些类型的材料设计?只需在颤振中的列表视图即可。该仪表板来自GridView任何要学习的链接??如何做???
    class SO extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: Stack(
            children: <Widget>[dashBg, content],
          ),
        );
      }
    
      get dashBg => Column(
            children: <Widget>[
              Expanded(child: Container(color: Colors.deepPurple),flex: 2,),
              Expanded(child: Container(color: Colors.transparent),flex: 5,),
            ],
          );
    
      get content => Container(
        margin: EdgeInsets.all(32),
        color: Colors.red,
        child: Center(child: Text('create your content inside this')),
      );
    }
    
    class SO extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: Stack(
            children: <Widget>[dashBg, content],
          ),
        );
      }
    
      get dashBg => Column(
            children: <Widget>[
              Expanded(
                child: Container(color: Colors.deepPurple),
                flex: 2,
              ),
              Expanded(
                child: Container(color: Colors.transparent),
                flex: 5,
              ),
            ],
          );
    
      get content => Container(
            child: Column(
              children: <Widget>[
                header,
                grid,
              ],
            ),
          );
    
      get header => ListTile(
        contentPadding: EdgeInsets.only(left: 20, right: 20, top: 20),
        title: Text(
          'Dashboard',
          style: TextStyle(color: Colors.white),
        ),
        subtitle: Text(
          '10 items',
          style: TextStyle(color: Colors.blue),
        ),
        trailing: CircleAvatar(),
      );
    
      get grid => Expanded(
            child: Container(
              padding: EdgeInsets.only(left: 16, right: 16, bottom: 16),
              child: GridView.count(
                crossAxisSpacing: 16,
                mainAxisSpacing: 16,
                crossAxisCount: 2,
                childAspectRatio: .90,
                children: List.generate(8, (_) {
                  return Card(
                    elevation: 2,
                    shape: RoundedRectangleBorder(
                      borderRadius: BorderRadius.circular(8)
                    ),
                    child: Center(
                      child: Column(
                        mainAxisSize: MainAxisSize.min,
                        children: <Widget>[FlutterLogo(), Text('data')],
                      ),
                    ),
                  );
                }),
              ),
            ),
          );
    }