【问题标题】:Condition must have static type of bool条件必须具有静态类型的布尔
【发布时间】:2023-03-28 02:50:02
【问题描述】:

我不能在这里使用future bool .. 有什么办法可以在这种情况下使用future bool .. 还是有更好的方法来做到这一点?

 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);


          }
        });
      },
      ),
    );
  }

【问题讨论】:

    标签: sql sqlite flutter dart flutter-futurebuilder


    【解决方案1】:

    initState()like中使用

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

    【讨论】:

    • 我想到了..但问题在于对值..它不能转移到 initstate(),..实际上对值来自另一个小部件中的未来构建器,.
    • 没关系,但是您可以将此逻辑移动到另一个小部件类吗?并将对值传递给该小部件。或者,也许您可​​以为此创建有状态小部件并像我的回答一样使用 initState()
    • 对不起..我忘了..谢谢!
    • 我正在考虑除此之外的所有内容...谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-29
    • 1970-01-01
    • 2023-03-24
    • 2013-11-24
    • 2018-02-12
    • 1970-01-01
    • 2015-09-01
    相关资源
    最近更新 更多