Android 如何从Flatter中的复选框选择生成项目列表?
我正在尝试从复选框选择中创建ID和名称列表,我想在navigator.pop中传递该数组列表,但不知何故,我无法这样做 我试图创建模型,并将其作为列表对象,它可以在列表或数组中为我提供所选的值,但我使用了最后一个额外的(逗号(,)) 我的复选框和创建列表并将其传递到navigator.pop的代码Android 如何从Flatter中的复选框选择生成项目列表?,android,dart,flutter,checkboxlist,Android,Dart,Flutter,Checkboxlist,我正在尝试从复选框选择中创建ID和名称列表,我想在navigator.pop中传递该数组列表,但不知何故,我无法这样做 我试图创建模型,并将其作为列表对象,它可以在列表或数组中为我提供所选的值,但我使用了最后一个额外的(逗号(,)) 我的复选框和创建列表并将其传递到navigator.pop的代码 THIS IS MAIN PAGE WHERE I WANT TO GET AND REDIRECT TO SECOND LIST PAGE. var tempRoomFace; getRoomF
THIS IS MAIN PAGE WHERE I WANT TO GET AND REDIRECT TO SECOND LIST PAGE.
var tempRoomFace;
getRoomFaceData() async {
tempRoomFace = await Navigator.push(
context, MaterialPageRoute(builder: (context) => RoomFacilities()));
for (int i = 0; i < areaDataResult.length; i++) {
_selectedroom = _selectedroom + tempRoomFace[i].name + ", ";
_selectedroomID = _selectedroomID + tempRoomFace[i].id + ", ";
print("selected rooms : $_selectedroomID");
}
}
THIS IS LIST PAGE... TO CREATE LIST
------------------ code for passing value ---------------------
List<RoomFacilityModel.Message> tempRoomData =
List<RoomFacilityModel.Message>();
//
List<RoomFacilityModel.Message> roomListOBJ =
List<RoomFacilityModel.Message>();
onPressed: () {
Navigator.pop(context, tempRoomData);
for (int i = 0; i < tempRoomData.length; i++) {
print(
"City List : ${tempRoomData[i].fcid} + ${tempRoomData[i].name} ");
}
},
------------------- Code for checkbox ------------------
Container(
child: CheckboxListTile(
title: Row(
children: <Widget>[
Container(
padding: EdgeInsets.all(5),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(3),
color: Colors.black,
),
height: 26,
width: 26,
child: Image.network(
roomListOBJ[index].icon,
),
),
SizedBox(width: 10),
Text(roomListOBJ[index].name),
],
),
value: roomListOBJ[index].isCheck,
onChanged: (bool value) async {
//
setState(() {
roomListOBJ[index].isCheck = value;
if (value) {
tempRoomData.add(RoomFacilityModel.Message(
fcid: roomListOBJ[index].fcid,
name: roomListOBJ[index].name));
} else {
tempRoomData.removeAt(index);
}
});
}),
);
I want to get resulat on my main page as
tempRoomFace = [TV, Safe box, curtains, iron]
tempRoomFaceID = [3,4,8,1]
这是我想要获取并重定向到第二个列表页的主页面。
房间脸;
getRoomFaceData()异步{
tempRoomFace=等待导航器.push(
context,materialpage(builder:(context)=>RoomFacilities());
对于(int i=0;i
您可以根据需要对其进行任意修改
class MultiCheckBoxField extends StatelessWidget {
const MultiCheckBoxField({
Key key,
this.count = 1,
this.onSaved,
}) : super(key: key);
final int count;
final FormFieldSetter<List<bool>> onSaved;
@override
Widget build(BuildContext context) {
return FormField<List<bool>>(
initialValue: List.filled(count, false),
onSaved: onSaved,
builder: (FormFieldState field) {
return Column(
mainAxisSize: MainAxisSize.min,
children: List.generate(
count,
(int index) {
return Checkbox(
onChanged: (bool value) {
field.value[index] = value;
field.didChange(field.value);
},
value: field.value[index],
);
},
),
);
},
);
}
}
class MultiCheckBoxField扩展了无状态小部件{
常数多切克波克斯菲尔德({
关键点,
this.count=1,
这是我的储蓄,
}):super(key:key);
最终整数计数;
保存最终表单设置器;
@凌驾
小部件构建(构建上下文){
返回表单字段(
initialValue:List.filled(计数,false),
已保存:已保存,
生成器:(FormFieldState字段){
返回列(
mainAxisSize:mainAxisSize.min,
子项:List.generate(
计数
(国际索引){
返回复选框(
一旦更改:(布尔值){
字段值[索引]=值;
field.didChange(field.value);
},
value:field.value[索引],
);
},
),
);
},
);
}
}