sqlite 在flutter中如何根据变量值改变图标颜色

z9ju0rcb  于 2023-01-13  发布在  SQLite
关注(0)|答案(1)|浏览(139)

我想根据变量值更改图标按钮的颜色。例如:如果变量值大于40,则图标颜色应为红色,否则图标颜色应为白色。我从SQLite表中获取变量值。以下代码,我已尝试,但其显示用于空值的空检查运算符。\

int? tatalLeave=0;                

                         IconButton(
                          onPressed: (() {
                            getTotalLeave();
                          }),
                          icon: Icon(
                            Icons.notifications_active_rounded,
                            color:
                                tatalLeave! >= 40 ? Colors.red : Colors.white,
                            size: 30.0,
                          ),
                        )

以下我已添加sqlite代码

//get total number of leaves
  getTotalLeave() async {
    int? count = await DatabaseHelper.instance.countAllLeave();
    setState(() {
      tatalLeave = count;
      print(tatalLeave);
    });
  }
}

数据库助手类

Future<int?> countAllLeave() async {
    Database db = await database;
    final allLeave = Sqflite.firstIntValue(
        await db.rawQuery('SELECT SUM(num_leave_days) FROM leave_Details'));
    return allLeave;
  }

请帮我解决我的问题。

6gpjuf90

6gpjuf901#

尝试修改代码如下,因为getTotalLeave函数是异步的,你需要把等待.
(await是中断进程流,直到async方法完成)

int? tatalLeave=0;                

                         IconButton(
                          onPressed: (()async {
                          await  getTotalLeave();
                          }),
                          icon: Icon(
                            Icons.notifications_active_rounded,
                            color:
                                tatalLeave! >= 40 ? Colors.red : 
                          Colors.white,
                            size: 30.0,
                          ),
                        )

相关问题