Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何从Flatter中的复选框选择生成项目列表?_Android_Dart_Flutter_Checkboxlist - Fatal编程技术网

Android 如何从Flatter中的复选框选择生成项目列表?

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

我正在尝试从复选框选择中创建ID和名称列表,我想在navigator.pop中传递该数组列表,但不知何故,我无法这样做

我试图创建模型,并将其作为列表对象,它可以在列表或数组中为我提供所选的值,但我使用了最后一个额外的(逗号(,))

我的复选框和创建列表并将其传递到navigator.pop的代码

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[索引],
);
},
),
);
},
);
}
}