Android 颤振:列表视图中的栅格视图
我试过:Android 颤振:列表视图中的栅格视图,android,listview,gridview,dart,flutter,Android,Listview,Gridview,Dart,Flutter,我试过: ListView.builder( shrinkWrap: true, itemBuilder: (BuildContext context, int index) { return GridView.count( crossAxisCount: 5, children: List.generate(10, (index) { return Center( child: Text( '$index AM', ),
ListView.builder(
shrinkWrap: true,
itemBuilder: (BuildContext context, int index) {
return GridView.count(
crossAxisCount: 5,
children: List.generate(10, (index) {
return Center(
child: Text(
'$index AM',
),
);
}),
);
},
itemCount: partnerArr.length,
)
我想在我的脚手架主体中创建这种类型的列表视图,我该怎么做
使用
CustomScrollView
CustomScrollView(
slivers: List.generate(
10,
(item) => SliverGrid(
gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(
maxCrossAxisExtent: 150.0,
mainAxisSpacing: 10.0,
crossAxisSpacing: 10.0,
childAspectRatio: 4.0,
),
delegate: SliverChildBuilderDelegate(
(BuildContext context, int index) {
return Container(
alignment: Alignment.center,
color: Colors.amber[100 * (index % 9)],
child: Text('grid item $index'),
);
},
childCount: 6,
),
)),
)
您可以尝试以下代码:
@override
Widget build(BuildContext context) {
return Scaffold(
body: ListView.separated(
separatorBuilder: (context, int) {
return Divider(color: Colors.black,);
},
// shrinkWrap: true,
itemBuilder: (BuildContext context, int index) {
return GridView.count(
shrinkWrap: true,
crossAxisCount: 3,
childAspectRatio: 2.0,
children: List.generate(6, (index) {
return Center(
child: RaisedButton(
onPressed: (){},
color: Colors.greenAccent,
child: Text(
'$index AM',
),
),
);
}),
);
},
itemCount: 4,
));
}
输出:
导入“包装:颤振/材料.省道”;
类SubmitRequest扩展StatefulWidget{
@凌驾
状态createState(){
返回_SubmitRequest();
}
}
类_SubmitRequest扩展状态{
@凌驾
小部件构建(构建上下文){
归还新脚手架(
抽屉(
子:容器(
颜色:颜色。黑色54,
子:ListView(
填充:仅限边缘设置(顶部:40.0),
儿童:[
列表砖(
标题:文本(“仪表板”),
),
列表砖(
标题:文本(“提交报告”),
),
列表砖(
标题:文本(“收件箱请求”),
),
],
),
),
),
appBar:appBar(
背景颜色:Colors.blue,
前导:图标按钮(图标:图标(Icons.menu)),按下:({}),
行动:[
//图标按钮(图标:图标(Icons.search),按下:({}),
图标按钮(icon:icon(Icons.help),按下:({}),
],
底部:首选尺寸(
孩子:填充(
填充:LTRB(0.0,0.0,15.0,16.0)中的常量边集,
子:容器(
边距:仅限边缘设置(左:16.0),
孩子:TextField(
装饰:新的输入装饰(
后缀:图标按钮(
图标:图标(Icons.search),
已按下:(){
debugPrint('222');
}),
边框:新大纲输入边框(
borderRadius:const borderRadius.all(
圆形常数半径(50.0),
),
),
是的,
hintStyle:new TextStyle(颜色:Colors.grey[800]),
hintText:“搜索”,
填充颜色:颜色。白色),
),
),
),
首选尺寸:尺寸(0.0,80.0),
),
),
主体:脚手架(
正文:ListView.builder(
//separatorBuilder:(上下文,int){
//返回分隔符(颜色:Colors.black,);
// },
//收缩膜:对,
itemBuilder:(构建上下文,int索引){
返回GridView.count(
收缩膜:对,
交叉轴计数:4,
childAspectRatio:1.0,
子项:列表。生成(6,(索引){
返回网格(
孩子:新卡(
颜色:Colors.blue.shade100,
孩子:新中心(
子项:新文本(“外部$index”),
),
),
);
}),
);
},
物品计数:4,
)
)
);
}
}
请您解释一下,它如何减缓我的具体问题?如何对每个网格行项目施加不同的值?
import 'package:flutter/material.dart';
class SubmitRequest extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return _SubmitRequest();
}
}
class _SubmitRequest extends State<SubmitRequest> {
@override
Widget build(BuildContext context) {
return new Scaffold(
drawer: Drawer(
child: Container(
color: Colors.black54,
child: ListView(
padding: EdgeInsets.only(top: 40.0),
children: <Widget>[
ListTile(
title: Text('Dashboard'),
),
ListTile(
title: Text('Submit Reports'),
),
ListTile(
title: Text('Inbox Requests'),
),
],
),
),
),
appBar: AppBar(
backgroundColor: Colors.blue,
leading: IconButton(icon: Icon(Icons.menu), onPressed: () {}),
actions: <Widget>[
// IconButton(icon: Icon(Icons.search), onPressed: () {}),
IconButton(icon: Icon(Icons.help), onPressed: () {}),
],
bottom: PreferredSize(
child: Padding(
padding: const EdgeInsets.fromLTRB(0.0, 0.0, 15.0, 16.0),
child: Container(
margin: EdgeInsets.only(left: 16.0),
child: TextField(
decoration: new InputDecoration(
suffixIcon: IconButton(
icon: Icon(Icons.search),
onPressed: () {
debugPrint('222');
}),
border: new OutlineInputBorder(
borderRadius: const BorderRadius.all(
const Radius.circular(50.0),
),
),
filled: true,
hintStyle: new TextStyle(color: Colors.grey[800]),
hintText: "Search",
fillColor: Colors.white),
),
),
),
preferredSize: Size(0.0, 80.0),
),
),
body: Scaffold(
body: ListView.builder(
// separatorBuilder: (context, int) {
// return Divider(color: Colors.black,);
// },
// shrinkWrap: true,
itemBuilder: (BuildContext context, int index) {
return GridView.count(
shrinkWrap: true,
crossAxisCount: 4,
childAspectRatio: 1.0,
children: List.generate(6, (index) {
return GridTile(
child: new Card(
color: Colors.blue.shade100,
child: new Center(
child: new Text('Exterior $index'),
),
),
);
}),
);
},
itemCount: 4,
)
)
);
}
}