Flutter 在颤振中:是否可以使用未来<;布尔>;是否在另一个小部件中用作属性?

Flutter 在颤振中:是否可以使用未来<;布尔>;是否在另一个小部件中用作属性?,flutter,Flutter,我有一个Card()小部件,它包含一个ListTile()小部件 ListTile()小部件的属性之一是启用的。我想通过使用使用async和await的Future的结果动态设置这个enabled属性的值。这可能吗 这是包含ListTile()的Card()小部件 Card myCard = Card( child: ListTile( title: Text('This is my list tile in a card'), enabled: needsT

我有一个
Card()
小部件,它包含一个
ListTile()
小部件

ListTile()
小部件的属性之一是启用的
。我想通过使用使用async和await的
Future
的结果动态设置这个
enabled
属性的值。这可能吗

这是包含ListTile()的Card()小部件

  Card myCard = Card(
    child: ListTile(
      title: Text('This is my list tile in a card'),
      enabled: needsToBeEnabled(1),
    ),
  );
这是我的未来

  Future<bool> cardNeedsToBeEnabled(int index) async {
    bool thisWidgetIsRequired = await getAsynchronousData(index);
    if (thisWidgetIsRequired == true) {
      return true;
    } else {
      return false;
    }
  }
Future card needstobeenabled(int-index)异步{
bool thisWidgetIsRequired=等待getAsynchronousData(索引);
如果(thisWidgetIsRequired==true){
返回true;
}否则{
返回false;
}
}
其他尝试
我试着用一个未来的建设者。当我构建一个小部件时,这很有效,但在本例中,我试图设置小部件的属性;不构建小部件本身。

您不能这样做,原因有两个:

  • 启用不接受
    Future
    bool
  • 您需要在收到结果后更新状态(您需要一个
    StatefullWidget
  • 有100万种方法可以完成您想做的事情,其中之一是
    FutureBuilder
    ,但如果您不想重建所有小部件,您可以使用此流程(您的主小部件需要是Statefull):

  • 创建一个包含bool值的局部变量,例如
    bool\u enabled
  • initState()
    methodoverride上,您可以启动获取异步数据的调用,并使用
    then()
    扩展方法在调用完成时向小部件提供新状态。 比如:
  • @覆盖
    void initState(){
    super.initState();
    getAsynchronousData(索引)。然后((结果){
    如果(结果==真){
    _启用=真;
    }否则{
    _启用=错误;
    }
    setState((){});
    });
    }
    
  • 将布尔变量分配给
    listile
    小部件

  • 您不能这样做有两个原因:

  • 启用不接受
    Future
    bool
  • 您需要在收到结果后更新状态(您需要一个
    StatefullWidget
  • 有100万种方法可以完成您想做的事情,其中之一是
    FutureBuilder
    ,但如果您不想重建所有小部件,您可以使用此流程(您的主小部件需要是Statefull):

  • 创建一个包含bool值的局部变量,例如
    bool\u enabled
  • initState()
    methodoverride上,您可以启动获取异步数据的调用,并使用
    then()
    扩展方法在调用完成时向小部件提供新状态。 比如:
  • @覆盖
    void initState(){
    super.initState();
    getAsynchronousData(索引)。然后((结果){
    如果(结果==真){
    _启用=真;
    }否则{
    _启用=错误;
    }
    setState((){});
    });
    }
    
  • 将布尔变量分配给
    listile
    小部件