【发布时间】:2020-06-09 10:41:51
【问题描述】:
我的页面上有一个网格数据。我想将这些数据与另一个列表(例如 (id 1,2,3,4,5))进行比较。
GridView.builder(
itemCount: course == null ? 0 : course.length,
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: (MediaQuery.of(context).orientation == Orientation.portrait) ? 3 : 4),
itemBuilder: (BuildContext context, int index) {
return Card(
child:InkWell(
onTap: () {
setState(() {
courseid = course[index]['id'];
coursename=course[index]['name'];
});
addCourse(course[index]['about']);
},
child:Column(
children: <Widget>[
Text((coursedata['courseid'] == course[index]['id']) ? "Added" : ""),
IconButton(
icon: index.isEven ? Icon(Icons.school) : Icon(Icons.book),
iconSize:MediaQuery.of(context).orientation == Orientation.portrait ?30 : 30,
color: index.isOdd ? Colors.amber[800]: Colors.green[800],
onPressed: (){
getcourseData();
},
),
Text(course[index]['name']),
],
),
),
);
},
),
这是从 firebase 数据库获取的另一个列表数据。
getcourseData() async {
databaseReference.collection(user.email).getDocuments().then((querySnapshot) {
querySnapshot.documents.forEach((result) {
coursedata=result.data;
});
});
}
以上两个列表都使用数据 ID 进行比较。
coursedata['courseid'] == course[index]['id']) ? "Added" : ""
请帮助您了解如何在 Gride view builder 中比较数据。目前,只有一个数据显示“已添加”,但还有其他数据也未显示“已添加”。
【问题讨论】:
-
您需要遍历您的一个列表并检查其他列表中是否存在相同的ID。目前在列子中,您只有一件事。一旦您遍历该列表并返回这些小部件的列表,您将有多个孩子。
-
如何在这里创建循环请帮助我
-
表示点击课程卡片,您是否要添加文字。对吗?
-
在学生表中添加的点击卡片课程如果学生已经添加了课程,则会显示课程中添加的消息。