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