Refre sh ListView.builder при нажатии кнопки во флаттере - PullRequest
0 голосов
/ 24 февраля 2020

Я использую приведенный ниже код, где у меня есть ListView с переключателем. Я хочу реализовать что-то вроде, когда я нажимаю RaisedButton - это перезагрузит ListView, и все значения switch.value должны быть изменены на true или false. Пользователь может изменить значение переключателя из элементов в ListView или нажатием кнопки. У меня нет идеи, как мне изменить значение или все переключатели в ListView.

 return Column(
      children: <Widget>[
        Container(
          width: MediaQuery.of(context).size.width / 2,
          height: 100,
          padding: EdgeInsets.all(20),
          child: RaisedButton(
              onPressed: () {
              },
              child: Text(
                BTN_START_TRIP,
                style: new TextStyle(
                  fontSize: 20.0,
                ),
              ),
              textColor: buttonFontColor,
              color: buttonColor,
              shape: new RoundedRectangleBorder(
                  borderRadius: new BorderRadius.circular(15.0))
          ),
        ),
        Expanded(
          child: ListView.builder(

            padding: EdgeInsets.all(3.0),
            // Let the ListView know how many items it needs to build.
            itemCount: snapshot.data.results.length,
            // Provide a builder function. This is where the magic happens.
            // Convert each item into a widget based on the type of item it is.
            itemBuilder: (context, index){

              return Container(
                height: 120,
                child: Card(
                  elevation: 10,
                  child: InkWell(
                    splashColor: Colors.blue.withAlpha(30),
                    onTap: () {
                      print(snapshot.data.results[index].original_title);
                    },
                    child: Container(
                      height: 120,
                      child: Row(
                          children: <Widget>[
                            Column(
                              mainAxisAlignment: MainAxisAlignment.center,
                              crossAxisAlignment: CrossAxisAlignment.start,
                              children: <Widget>[
                                Container(
                                  padding: EdgeInsets.fromLTRB(20, 0, 5, 0),
                                  width: MediaQuery.of(context).size.width -90,
                                  child: Align(
                                    alignment: Alignment.topLeft,
                                    child: Text(snapshot.data.results[index].original_title,
                                        textAlign: TextAlign.left,
                                        style: TextStyle(fontSize: defaultTitleFontsize, color: defaultFontColor),
                                        maxLines: 5),
                                  ),
                                ),
                                Container(
                                  padding: EdgeInsets.fromLTRB(20, 0, 5, 0),
                                  child:  Align(
                                    alignment: Alignment.topLeft,
                                    child: Text(snapshot.data.results[index].original_language,textAlign: TextAlign.left,style: TextStyle(fontSize: defaultsubTitleFontsize, color: defaultFontColor)),
                                  ),
                                ),
                              ],
                            ),
                            Row(
                                mainAxisAlignment: MainAxisAlignment.end,
                                crossAxisAlignment: CrossAxisAlignment.end,
                              children: <Widget>[
                                Container(
                                  child: Switch(
                                      value: false,
                                      onChanged: (value){
                                        setState(() {
                                          print(value);
                                        });
                                      }
                                  ),
                                ),
                              ],
                            ),
                          ]
                      ),

                    ),
                  ),
                ),
              );
            },
          ),
        )
      ],
    );

1 Ответ

0 голосов
/ 24 февраля 2020

Вам потребуется переменная, чтобы решить, должен ли переключатель быть включен или выключен. И во время определенного события (например, нажатие кнопки) установите для переменной соответствующее значение и повторно запустите сборку (перерисовку пользовательского интерфейса), вызвав setState. Вы должны иметь вышеупомянутую логику c часть виджета с состоянием для выполнения sh этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...