Как сгенерировать список элементов из флажка выбора во флаттере? - PullRequest
0 голосов
/ 19 апреля 2019

Я пытаюсь создать список идентификаторов и имен из выбора флажков, и я хочу передать этот список массивов в 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]

1 Ответ

0 голосов
/ 20 апреля 2019

Вы можете изменить это столько, сколько хотите.

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],
              );
            },
          ),
        );
      },
    );
  }
}
...