flutter - 如何根据项目索引增加列表变量?
问题描述
我收到一个错误:类型int
不是List<dynamic>
按添加时函数结果类型的子类型
final itemcount = [];
Widget buildItem(BuildContext context, DocumentSnapshot document, int index) {
return Container(
child: Flatbutton(
child:Text("add"),
onpressed:(){
itemcount[index]=itemcount[index]+1,
}
)
);
}
StreamBuilder<QuerySnapshot>(
stream: Firestore.instance
.collection('products')
.where('category', isEqualTo: 'ourstore')
.snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) {
return Center(
child: Icon(Icons.photo_library),
);
} else {
return snapshot.data.documents.isEmpty
? Center(child: null)
: GridView.builder(
itemBuilder: (context, index) => buildItem(
context,
snapshot.data.documents[index],
index),
itemCount: snapshot.data.documents.length,
physics: NeverScrollableScrollPhysics(),
gridDelegate:
SliverGridDelegateWithFixedCrossAxisCount(
// childAspectRatio: 3/4,
crossAxisSpacing: 10,
mainAxisSpacing: 5,
crossAxisCount: 2),
shrinkWrap: true,
scrollDirection: Axis.vertical,
);
}
},
),
解决方案
修复了错误
必须将列表中每个项目的值设置为零
下面的代码:
List<int> itemcount = List<int>();
Widget buildItem(
BuildContext context, DocumentSnapshot document, int index) {
itemcount.add(0);
return Container(
child: Flatbutton(
child:Text("add"),
onpressed:(){
setState(() {
itemcount[index]++;
});
}
)
);
}
推荐阅读
- python - 通过 ArrayUnion 更新 firestore 数据库
- rust - 如何从带有客户端的 actix-web 处理程序向调用者返回错误?
- swift - 缺少类型 UIEvent?
- jenkins - Jenkins 在同一台服务器上部署工件
- sql - SQL:如何获取列的句子行中所有字符串的总和
- javascript - 如何在javascript中将escpaed unicode转换为表情符号?
- elasticsearch - 无法使用 elasticsearch 和 metricbeat 检索标准化 CPU 利用率百分比
- c# - 'JsonPropertyAttribute' 由于其保护级别而无法访问
- python - 如何使用单行标题(5k 列)将数据帧写入 csv?
- asp.net-mvc - 如何为查询字符串中的 sting 参数提供日期格式?