gpt4 book ai didi

flutter - 如何在flutter中比较两个列表数据( Dart )

转载 作者:行者123 更新时间:2023-12-03 02:55:03 24 4
gpt4 key购买 nike

我的页面上有网格数据。我想将这些数据与另一个列表进行比较,例如(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 构建器中进行比较。当前,尽管在 View 中也有其他数据也未显示“已添加”,但只有一个数据显示为“已添加”。

最佳答案

我已经创建了一个演示。根据您的要求进行更改。

import 'package:flutter/material.dart';

void main() =>
runApp(MaterialApp(home: GridViewDemo()));

class GridViewDemo extends StatefulWidget {
@override
_GridViewDemoState createState() => _GridViewDemoState();
}

class _GridViewDemoState extends State<GridViewDemo> {
// already added indices numbers
List<int> alreadyAddedIndices = [3,4,5,6,7];

var courseid = 0;
var coursename = "default";

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text(("GridView Demo")),
),
body: SingleChildScrollView(
child: Column(
children: [
GridView.builder(
itemCount: 5,
shrinkWrap: true,
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: (MediaQuery.of(context).orientation == Orientation.portrait) ? 3 : 4),
itemBuilder: (BuildContext context, int index) {
return Card(
child:InkWell(
onTap: () {
setState(() {
// change as per your code
courseid = index;
coursename=index.toString();
// add index in list if not available
// tapping again, remove index from list
alreadyAddedIndices.contains(index)?alreadyAddedIndices.remove(index):alreadyAddedIndices.add(index);
});
},
child:Column(
children: <Widget>[
Text((alreadyAddedIndices.contains(index)) ? "Added" : ""),
Icon(index.isEven ? Icons.school : Icons.book,
size:MediaQuery.of(context).orientation == Orientation.portrait ?30 : 30,
color: index.isOdd ? Colors.amber[800]: Colors.green[800],),
// course name text
const Text("course Name"),
],
),
),

);
},
),
],
),
),
);
}
}

输出:
enter image description here

注意:
这是一个演示代码。您可以在hasAddedIndices列表中获取所有添加的类(class)ID。根据需要更改代码。

关于flutter - 如何在flutter中比较两个列表数据( Dart ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62280686/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com