Flutter 弗利特:我想排成一行,有两张卡片,上面有图片和文字,如下图所示
弗利特:我想排成一行,有两张卡片,上面有图片和文字,如下图所示Flutter 弗利特:我想排成一行,有两张卡片,上面有图片和文字,如下图所示,flutter,dart,layout,flutter-layout,Flutter,Dart,Layout,Flutter Layout,弗利特:我想排成一行,有两张卡片,上面有图片和文字,如下图所示 body: groups.isEmpty ? Center(child: Text('No Students')) : ListView( children: [ ...groups.map( (group) => Card( elevation: 7, child: ListTile(
body: groups.isEmpty
? Center(child: Text('No Students'))
: ListView(
children: [
...groups.map(
(group) => Card(
elevation: 7,
child: ListTile(
leading: CircleAvatar(
backgroundImage: AssetImage('assets/01.jpg'),
),
title: Text(group),
trailing: Icon(Icons.person),
)
),
)
],
)
您可以使用
GridView
,将crossAxisCount
设置为2,并将列
放在卡
内
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: GridView.builder(
itemCount: 6,
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
childAspectRatio: 8.0 / 10.0,
crossAxisCount: 2,
),
itemBuilder: (BuildContext context, int index) {
return Padding(
padding: EdgeInsets.all(5),
child: Card(
semanticContainer: true,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10.0),
),
clipBehavior: Clip.antiAlias,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Expanded(
child: Container(
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage('assets/no_image.png'),
fit: BoxFit.fill),
),
)),
Padding(
padding: EdgeInsets.all(10.0),
child: Text(
"Name",
style: TextStyle(fontSize: 18.0),
)),
],
)));
},
));
}
}
导入“包装:颤振/材料.省道”;
void main()=>runApp(MyApp());
类MyApp扩展了无状态小部件{
//此小部件是应用程序的根。
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“颤振演示”,
主题:主题数据(
主样本:颜色。蓝色,
),
主页:MyHomePage(标题:“颤振演示主页”),
);
}
}
类MyHomePage扩展StatefulWidget{
MyHomePage({Key,this.title}):超级(Key:Key);
最后的字符串标题;
@凌驾
_MyHomePageState createState()=>\u MyHomePageState();
}
类_MyHomePageState扩展状态{
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(widget.title),
),
正文:GridView.builder(
物品计数:6,
gridDelegate:SliverGridDelegateWithFixedCrossAxisCount(
儿童视角:8.0/10.0,
交叉轴计数:2,
),
itemBuilder:(构建上下文,int索引){
返回填充(
填充:边缘设置。全部(5),
孩子:卡片(
语义容器:对,
形状:圆形矩形边框(
边界半径:边界半径。圆形(10.0),
),
clipBehavior:Clip.antiAlias,
子:列(
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
扩大(
子:容器(
装饰:盒子装饰(
图像:装饰图像(
图像:AssetImage('assets/no_image.png'),
适合:BoxFit.填充),
),
)),
填充物(
填充:所有边缘设置(10.0),
子:文本(
“姓名”,
样式:TextStyle(fontSize:18.0),
)),
],
)));
},
));
}
}
您可以使用GridView
,将crossAxisCount
设置为2,并将列
放在卡
内
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: GridView.builder(
itemCount: 6,
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
childAspectRatio: 8.0 / 10.0,
crossAxisCount: 2,
),
itemBuilder: (BuildContext context, int index) {
return Padding(
padding: EdgeInsets.all(5),
child: Card(
semanticContainer: true,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10.0),
),
clipBehavior: Clip.antiAlias,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Expanded(
child: Container(
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage('assets/no_image.png'),
fit: BoxFit.fill),
),
)),
Padding(
padding: EdgeInsets.all(10.0),
child: Text(
"Name",
style: TextStyle(fontSize: 18.0),
)),
],
)));
},
));
}
}
导入“包装:颤振/材料.省道”;
void main()=>runApp(MyApp());
类MyApp扩展了无状态小部件{
//此小部件是应用程序的根。
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“颤振演示”,
主题:主题数据(
主样本:颜色。蓝色,
),
主页:MyHomePage(标题:“颤振演示主页”),
);
}
}
类MyHomePage扩展StatefulWidget{
MyHomePage({Key,this.title}):超级(Key:Key);
最后的字符串标题;
@凌驾
_MyHomePageState createState()=>\u MyHomePageState();
}
类_MyHomePageState扩展状态{
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(widget.title),
),
正文:GridView.builder(
物品计数:6,
gridDelegate:SliverGridDelegateWithFixedCrossAxisCount(
儿童视角:8.0/10.0,
交叉轴计数:2,
),
itemBuilder:(构建上下文,int索引){
返回填充(
填充:边缘设置。全部(5),
孩子:卡片(
语义容器:对,
形状:圆形矩形边框(
边界半径:边界半径。圆形(10.0),
),
clipBehavior:Clip.antiAlias,
子:列(
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
扩大(
子:容器(
装饰:盒子装饰(
图像:装饰图像(
图像:AssetImage('assets/no_image.png'),
适合:BoxFit.填充),
),
)),
填充物(
填充:所有边缘设置(10.0),
子:文本(
“姓名”,
样式:TextStyle(fontSize:18.0),
)),
],
)));
},
));
}
}
Hi,你能发布你的代码吗?显示您尝试实现的内容,以便我们提供帮助。好的,我尝试使用ListView和ListTile“body:groups.isEmpty?Center(child:Text('No student')):ListView(childs:[…groups.map((group)=>Card(立面:7,child:ListTile(前导:CircleAvatar(背景图像:AssetImage('assets/01.jpg'),),标题:文本(组),尾随:图标(Icons.person),),),)”嗨,你能发布你的代码吗?展示你试图实现的东西以便我们能提供帮助。好的,我已经尝试使用ListView和ListTile“body:groups.isEmpty?Center(child:Text('No Students')):ListView(children:[…groups.map((group)=>Card(立面图:7,子图:ListTi)