Flutter 如何在GridView中每隔6个不同的项目渲染一个图像? 屏幕图像
Api响应 我想创建一个产品的gridview,每行有2个项目,每6个产品我想添加一个屏幕宽度的图像 我试图通过创建一个返回一行2个项目的列表视图来定制它 如果*“is_banner”为假,如果“is_banner”为真的图像* 但它不起作用Flutter 如何在GridView中每隔6个不同的项目渲染一个图像? 屏幕图像,flutter,dart,flutter-layout,Flutter,Dart,Flutter Layout,Api响应 我想创建一个产品的gridview,每行有2个项目,每6个产品我想添加一个屏幕宽度的图像 我试图通过创建一个返回一行2个项目的列表视图来定制它 如果*“is_banner”为假,如果“is_banner”为真的图像* 但它不起作用 ListView.builder( primary: false, shrinkWrap: true,
ListView.builder(
primary: false,
shrinkWrap: true,
itemCount: _ads.length,
itemBuilder: (BuildContext context, int index) {
if (indexAd < _ads.length) {
print("Indexxxx" + indexAd.toString());
return _ads[indexAd].isBanner
? Padding(
padding: const EdgeInsets.all(8.0),
child: Container(
width:
MediaQuery.of(context).size.width,
height: 100,
decoration: BoxDecoration(
borderRadius:
BorderRadius.circular(8),
image: DecorationImage(
fit: BoxFit.cover,
image: NetworkImage(
_ads[indexAd++].image),
),
),
),
)
: Row(
children: <Widget>[
InkWell(
onTap: () {
print("--***********************---> ${indexDetail++}");
// Navigator.of(context).push(
// PageRouteBuilder(
// pageBuilder: (_, __, ___) {
// return AdDetailPage(
// model: widget.model,
// adId: _ads[indexDetail].id,
// );
// }));
},
child: ProductCard(
name: _ads[indexAd].name,
image: _ads[indexAd].image,
address: _ads[indexAd].location,
isFav: _ads[indexAd].isFav,
date: _ads[indexAd].since,
price: _ads[indexAd++].price,
),
),
InkWell(
onTap: () {
print("--+++++++++++++++++++++++---> ${indexDetail++}");
// Navigator.of(context).push(
// PageRouteBuilder(
// pageBuilder: (_, __, ___) {
// return AdDetailPage(
// model: widget.model,
// adId: _ads[indexDetail++].id,
// );
// }));
},
child: ProductCard(
name: _ads[indexAd].name,
image: _ads[indexAd].image,
address: _ads[indexAd].location,
isFav: _ads[indexAd].isFav,
date: _ads[indexAd].since,
price: _ads[indexAd++].price,
),
)
],
);
} else {
return Container();
}
},
)
ListView.builder(
主要:错误,
收缩膜:对,
itemCount:_ads.length,
itemBuilder:(构建上下文,int索引){
if(索引长度){
打印(“indexx”+indexAd.toString());
return _ads[indexAd].isBanner
?填充物(
填充:常数边集全部(8.0),
子:容器(
宽度:
MediaQuery.of(context).size.width,
身高:100,
装饰:盒子装饰(
边界半径:
边界半径。圆形(8),
图像:装饰图像(
适合:BoxFit.cover,
图片:NetworkImage(
_ads[indexAd++].image),
),
),
),
)
:行(
儿童:[
墨水池(
onTap:(){
打印(“--******************-->${indexDetail++}”);
//导航器.of(上下文).push(
//PageRouteBuilder(
//页面生成器:(\uuuuuuuuuuuuuuuuuuuuuuuuuu){
//返回附加页(
//model:widget.model,
//adId:_ads[indexDetail].id,
// );
// }));
},
孩子:产品卡(
名称:_ads[indexAd]。名称,
图片:_ads[indexAd]。图片,
地址:_ads[indexAd]。地址:,
isFav:_ads[indexAd].isFav,
日期:_ads[indexAd]。自,
价格:_广告[indexAd++]。价格,
),
),
墨水池(
onTap:(){
打印(“-->${indexDetail++}”);
//导航器.of(上下文).push(
//PageRouteBuilder(
//页面生成器:(\uuuuuuuuuuuuuuuuuuuuuuuuuu){
//返回附加页(
//model:widget.model,
//adId:_ads[indexDetail++].id,
// );
// }));
},
孩子:产品卡(
名称:_ads[indexAd]。名称,
图片:_ads[indexAd]。图片,
地址:_ads[indexAd]。地址:,
isFav:_ads[indexAd].isFav,
日期:_ads[indexAd]。自,
价格:_广告[indexAd++]。价格,
),
)
],
);
}否则{
返回容器();
}
},
)
用于获取varoius大小的网格卡并按条件检查索引(索引%6==0
),如果需要,可以通过更改大小来实现。用于获取varoius大小的网格卡并按条件检查索引(索引%6==0
),如果需要,可以根据需要更改大小。您可以使用
以下是满足您需求的示例代码
new StaggeredGridView.countBuilder(
crossAxisCount: 2,
itemCount: 10,
itemBuilder: (BuildContext context, int index) => new Container(
color: Colors.green,
child: new Center(
child: new CircleAvatar(
backgroundColor: Colors.white,
child: new Text('$index'),
),
),
),
staggeredTileBuilder: (int index) => (index % 7 == 0)
? new StaggeredTile.count(2, 1)
: new StaggeredTile.count(1, 1),
mainAxisSpacing: 4.0,
crossAxisSpacing: 4.0,
)
您可以使用 以下是满足您需求的示例代码
new StaggeredGridView.countBuilder(
crossAxisCount: 2,
itemCount: 10,
itemBuilder: (BuildContext context, int index) => new Container(
color: Colors.green,
child: new Center(
child: new CircleAvatar(
backgroundColor: Colors.white,
child: new Text('$index'),
),
),
),
staggeredTileBuilder: (int index) => (index % 7 == 0)
? new StaggeredTile.count(2, 1)
: new StaggeredTile.count(1, 1),
mainAxisSpacing: 4.0,
crossAxisSpacing: 4.0,
)