我正在从 SQLite 数据库中获取数据,我想在其中显示索引与完整数据库中的特定数据相匹配的数据,我可以显示该数据** 但是
问题是对于不匹配的数据,else 语句执行我 不想。
这是我的代码:
SizedBox(
height: 490.h,
width: double.infinity,
child: FutureBuilder(
future: loadData(),
builder: (context, snapshot) {
return ListView.builder(
itemCount: listData.length,
itemBuilder: (context, index) {
int nIndex = listData[index]['Surah'];
if (widget.surah != nIndex) {
return const Center(child: Text('.........'));
} else {
return Card(
color: const Color(0xffaaaa55),
child: Container(
decoration: const BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(150))),
child: Column(
children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Icon(
Icons.play_circle_fill,
color: Colors.white,
size: 35.sp,
),
Text(
'(${listData[index]['Ayat'].toString()})',
style: myStyle(size: 18.sp),
),
Icon(
Icons.more_vert,
color: Colors.black,
size: 35.sp,
),
],
),
),
SizedBox(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
listData[index]['Arabic'].toString(),
textAlign: TextAlign.center,
maxLines: 2,
style: GoogleFonts.adventPro(
fontSize: 22.sp),
),
)),
SizedBox(
height: 5.h,
),
SizedBox(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
listData[index]['Translation']
.toString(),
maxLines: 4,
textAlign: TextAlign.center,
style: TextStyle(fontSize: 15.sp),
),
)),
SizedBox(
height: 5.h,
),
Padding(
padding: const EdgeInsets.all(8.0),
child: Divider(
color: Colors.brown,
thickness: 1.sp,
),
)
],
),
),
);
}
});
}),
),
好吧,看来你的问题在于 if 而不是 else,但尽管如此......解决这个问题的一种方法是在使用函数中使用的
(context, index) { int nIndex = listData[index]['Surah']; if (widget.surah != nIndex)
条件进行渲染之前简单地使用 where() 过滤你的 listData 。然后您使用过滤后的列表。