Flutter 在flatter中有条件地显示/隐藏瓷砖中的复选框

Flutter 在flatter中有条件地显示/隐藏瓷砖中的复选框,flutter,dart,flutter-layout,Flutter,Dart,Flutter Layout,我有一个从API调用动态生成的平铺列表。我在AppBar中有一个共享按钮,单击该按钮时,我希望使复选框在列表平铺中显示为尾部属性。例如: ListTile( title: Text('fetchedData.title'), trailing: Checkbox() ) 我的方法是有条件地渲染瓷砖,但我不确定我是否在正确的位置进行渲染。我使用一个布尔状态来确定复选框是否应该显示在磁贴旁边 我还尝试了创建帮助函数来为我构建列表平铺,但不确定它应该返回什么,如果您有关于如何创建这些排序函数

我有一个从API调用动态生成的平铺列表。我在AppBar中有一个共享按钮,单击该按钮时,我希望使复选框在列表平铺中显示为尾部属性。例如:

ListTile(
  title: Text('fetchedData.title'),
  trailing: Checkbox()
)
我的方法是有条件地渲染瓷砖,但我不确定我是否在正确的位置进行渲染。我使用一个布尔状态来确定复选框是否应该显示在磁贴旁边

我还尝试了创建帮助函数来为我构建列表平铺,但不确定它应该返回什么,如果您有关于如何创建这些排序函数的任何提示,请包括这一点

这是我的代码:

body: Center(
        child: FutureBuilder(
          future: pdfSnippets(),
          builder: (BuildContext context, AsyncSnapshot<List> snapshot) {
            if (snapshot.hasData) {
              return ListView.builder(
                // will have to hide the eccess snippet with overflow
                //  and have a max width to fit the trailing checkbox
                itemCount: snippets.length,
                itemBuilder: (BuildContext context, int index) {
                  // if you don't like card view, remove Card and just return ListTile
                  return checkboxStatus ? 
                  Card (
                    child: ListTile(
                      // not referencing properly
                      title: Text('${snapshot[index].body}'),
                      subtitle: Text('${snapshot[index].title}'),
                      trailing: Checkbox(
                        value: false,
                      )
                    )
                  ) : 
                  Card (  
                    child: ListTile(
                    // not referencing properly
                    title: Text('${snapshot[index].body}'),
                    subtitle: Text('${snapshot[index].title}'),
                    onLongPress: () => setCheckboxStatus(),
                    )
                  );
                }
              );
            } else {
              throw('nothing to see here');
            }
          },
        ),
      ),
主体:中心(
孩子:未来建设者(
未来:pdfSnippets(),
生成器:(BuildContext上下文,异步快照){
if(snapshot.hasData){
返回ListView.builder(
//必须用溢出隐藏ECESS代码段
//并有一个最大宽度以适合尾随复选框
itemCount:snippets.length,
itemBuilder:(构建上下文,int索引){
//如果您不喜欢卡片视图,请删除卡片并返回ListTile
返回checkboxStatus?
卡片(
孩子:ListTile(
//未正确引用
标题:文本(“${snapshot[index].body}”),
字幕:文本(“${snapshot[index].title}”),
尾随:复选框(
值:false,
)
)
) : 
信用卡(
孩子:ListTile(
//未正确引用
标题:文本(“${snapshot[index].body}”),
字幕:文本(“${snapshot[index].title}”),
onLongPress:()=>setCheckboxStatus(),
)
);
}
);
}否则{
扔(“这里没什么可看的”);
}
},
),
),

您可以将
复选框设置为如下条件,以使代码看起来更简单:

ListTile(
// not referencing properly
title: Text('body'),
subtitle: Text('title'),
trailing: checkboxStatus
    ? Checkbox(
        value: false,
      )
    : null,
)