如何在获取sqlite数据flutter时显示列表中找到的数据而不执行else语句

问题描述 投票:0回答:1

我正在从 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,
                                      ),
                                    )
                                  ],
                                ),
                              ),
                            );
                          }
                        });
                  }),
            ),

输出屏幕:

android flutter sqlite dart sqflite
1个回答
0
投票

好吧,看来你的问题在于 if 而不是 else,但尽管如此......解决这个问题的一种方法是在使用函数中使用的

 (context, index) { int nIndex = listData[index]['Surah']; if (widget.surah != nIndex)
条件进行渲染之前简单地使用 where() 过滤你的 listData 。然后您使用过滤后的列表。

© www.soinside.com 2019 - 2024. All rights reserved.