List 将索引附加到列表项(字符串)[颤振]
我不想让isSelected bool变量,我想让它成为selected的索引。然后检查reportReasons列表中所选的索引 这是为了知道选择的原因。此外,如果isSelected不是bool,那么如何使所选容器更改颜色 多谢各位List 将索引附加到列表项(字符串)[颤振],list,flutter,indexing,colors,containers,List,Flutter,Indexing,Colors,Containers,我不想让isSelected bool变量,我想让它成为selected的索引。然后检查reportReasons列表中所选的索引 这是为了知道选择的原因。此外,如果isSelected不是bool,那么如何使所选容器更改颜色 多谢各位 final List<String> reportReasons = [ 'blah', 'blah blah', 'blah blah blah' ]; List<String> chosenReasonsToReport = [
final List<String> reportReasons = [
'blah',
'blah blah',
'blah blah blah'
];
List<String> chosenReasonsToReport = [];
bool isSelected = false;
Container(
child: Wrap(
children: reportReasons
.map((reportReason) => GestureDetector(
onTap: () {
setState(() { if (isSelected = false) {
isSelected = true;
} else {
isSelected = false;
}});
if (reportReason.isSelected && chosenReasonsToReport.length < 3) {
chosenReasonsToReport.add('${reportReason}');
print(chosenReasonsToReport);
} else {
chosenReasonsToReport.remove('${reportReason}');
print(chosenReasonsToReport);
}
},
child: Container(
margin: EdgeInsets.only(
right:
MediaQuery.of(context).size.width * 0.021,
bottom: MediaQuery.of(context).size.height *
0.009,
),
decoration: BoxDecoration(
color: isSelected
? Color(0xff4aa3f8)
: Color(0xff3a327f),
borderRadius: BorderRadius.circular(12),
border: Border.all(
color:
Colors.grey[50].withOpacity(0.60))),
padding: EdgeInsets.symmetric(
horizontal:
MediaQuery.of(context).size.width *
0.027,
vertical:
MediaQuery.of(context).size.height *
0.0045),
child: Text(
reportReason,
style: TextStyle(
fontSize: 13.5,
color: isSelected
? Color(0xff231b6a)
: null),
),
),
))
.toList()),
最终列表报告原因=[
"废话",,
“胡说八道”,
“废话废话”
];
列表chosenReasonsToReport=[];
bool-isSelected=false;
容器(
孩子:包裹(
儿童:原因
.map((reportReason)=>GestureDetector(
onTap:(){
setState((){if(isSelected=false){
isSelected=true;
}否则{
isSelected=false;
}});
if(reportReason.isSelected&&chosenReasonsToReport.length<3){
添加('${reportReason}');
打印(ChosenRestorePort);
}否则{
删除(“${reportReason}”);
打印(ChosenRestorePort);
}
},
子:容器(
页边距:仅限边距(
正确的:
MediaQuery.of(context).size.width*0.021,
底部:MediaQuery.of(上下文).size.height*
0.009,
),
装饰:盒子装饰(
颜色:已选择
?颜色(0xff4aa3f8)
:颜色(0xff3a327f),
边界半径:边界半径。圆形(12),
边界:边界(
颜色:
颜色。灰色[50]。不透明度(0.60)),
填充:EdgeInsets.symmetric(
水平:
MediaQuery.of(context).size.width*
0.027,
垂直:
MediaQuery.of(上下文).size.height*
0.0045),
子:文本(
报告原因,
样式:TextStyle(
字体大小:13.5,
颜色:已选择
?颜色(0xff231b6a)
:null),
),
),
))
.toList()),
您可以使用以下几种方法:
class\u MyScreenState扩展状态{
静态常量列表_reportReasons=[
"废话",,
“胡说八道”,
“废话废话”
];
集合_chosenindex={};
@凌驾
小部件构建(构建上下文){
返回列表视图(
子项:List.generate(_reportReasons.length,(i){
返回容器(
//根据报告选择更改属性
颜色:_chosenindex.contains(i)
?颜色:绿色
:颜色。红色,
子:CheckboxListTile(
//访问报表名称
标题:正文(_[i]),
//如果选择了报告,则访问
值:_chosenindex.contains(i),
//选择和取消选择报表
一旦更改:(v){
设置状态(){
如果(v){
_添加(i);
}否则{
_删除(i);
}
});
}
),
);
}),
);
}
}
class\u MyScreenState扩展状态{
最终地图报告={
"废话":假,,
"废话":错,,
“胡说八道”:错,
};
@凌驾
小部件构建(构建上下文){
返回列表视图(
子项:_reports.keys.map((报告){
返回容器(
//根据报告选择更改属性
颜色:_报告[报告]
?颜色:绿色
:颜色。红色,
子:CheckboxListTile(
//访问报表名称
标题:文本(报告),
//如果选择了报告,则访问
值:_报告[报告],
//选择和取消选择报表
一旦更改:(v){
设置状态(()=>_reports[report]=v);
}
),
);
}).toList(),
);
}
}