条件必须具有静态类型的布尔值

问题描述

在这里不能使用将来的布尔。.在这种情况下,我有什么方法可以使用将来的布尔。 还是有更好的方法呢?

 Widget _buildrow(String pair) {


    final Future<bool> alreadySaved = DBHelper.getAllEmployees().then((value) => value.contains(pair));
    print("Already saved $alreadySaved");
    print(pair);
    return FutureBuilder(
      future: DBHelper.getAllEmployees(),builder: (context,AsyncSnapshot<List<FavrtTableModel>> snapshot) =>
      snapshot.connectionState == ConnectionState.waiting ? Center(
        child: Icon(Icons.more_horiz),):IconButton(
        icon: new  Icon(
          alreadySaved ? Icons.favorite : Icons.favorite_border,color:alreadySaved? Colors.red : Colors.white,),onpressed: (){
        setState(() {
          if (alreadySaved) {
            _saved.remove(pair);
            _deleteEmployee(pair);
          } else {
            _saved.add(pair);
            _insert(pair);


          }
        });
      },);
  }

解决方法

initState()中使用,例如

 bool alreadySaved = false;

  @override
  void initState() {
    super.initState();
    String pair = "pair_value";
    DBHelper.getAllEmployees().then((value) {
      setState(() {
        alreadySaved = value.contains(pair);
      });
    });
  }