Получить значение из Listview.builder, а затем отправить это значение в другой виджет statefeul? флаттер - PullRequest
0 голосов
/ 02 февраля 2020

Привет. Могу ли я задать вопрос о том, как кодировать функцию, которая получит значение из listview.builder, а затем перенаправит его на второй экран,

Пример

из рисунка ниже Например, выбранный пункт 2, тогда внизу должна быть кнопка с надписью «Отправить», а на следующем экране должна быть указана эта позиция в середине экрана? и это должен быть только один элемент, а не множественный выбор,

помогите мне, пожалуйста, почесал голову, я понял, как работает выпадающий код для использования setstate и все, но я не могу понять, как он работает на listview.builder

screenshot

Ответы [ 2 ]

1 голос
/ 02 февраля 2020

Вы должны ожидать значения в следующем представлении:

class SecondView extends StatefulWidget {
  final String value;

  SecondView({this.value});

  @override
  _SecondViewState createState() => _SecondViewState();
}

class _SecondViewState extends State<SecondView> {
  @override
  Widget build(BuildContext context) {
    return Container(
      child: Text(widget.value),
    );
  }
}

и отправить его в предыдущем представлении:

void moveToNextView(String name){
  Navigator.of(context).push(MaterialPageRoute(
    builder: (context) {
      return SecondView(value: name);
    }
  ));
}
0 голосов
/ 04 февраля 2020
class MyWidget extends StatefulWidget {
  @override
  _MyWidgetState createState() => _MyWidgetState();
}

class _MyWidgetState extends State<MyWidget> {
  @override
  Widget build(BuildContext context) {
    return Container(
        color: Colors.white,
        child: ListView.builder(
            shrinkWrap: true,
            itemCount: 15,
            itemBuilder: (con, ind) {
              return ListTile(
                  title:
                      Text('Item $ind', style: TextStyle(color: Colors.black)),
                  onTap: () {
                    Navigator.push(
                        con,
                        MaterialPageRoute(
                            builder: (cc) => OtherScreen(value: 'Item $ind')));
                  });
            }));
  }
}

class OtherScreen extends StatefulWidget {
  //add your custom data
  final String value;

  OtherScreen({Key k, @required this.value}) : super(key: k);

  @override
  _OtherState createState() => _OtherState(value);
}

class _OtherState extends State<OtherScreen> {
  _OtherState(this.data);

  String data;

  @override
  Widget build(BuildContext context) {
    return Container(
        alignment: Alignment.center,
        color: Colors.white,
        child: Text(data, style: TextStyle(color: Colors.black)));
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...