Перейдите к контакту из списка - PullRequest
0 голосов
/ 12 сентября 2018

Я хочу нажать на конкретный контакт и перенести меня на их страницу. Я не уверен, как заставить работать навигатор. Когда я нажимаю на имя страницы со списком контактов, я хочу, чтобы она переместилась на страницу просмотра контактов с информацией этого человека.

    class ContactList extends StatelessWidget {
  final List<Contact> _contacts;

  ContactList(this._contacts);

  @override
  Widget build(BuildContext context) {
    return new ListView.builder(
      padding: new EdgeInsets.symmetric(vertical: 8.0),
      itemBuilder: (context, index) {
        return new _ContactListItem(_contacts[index], onTap: () {
          Navigator.push(context,  MaterialPageRoute(builder: (context) => viewContact()),
        });
      },

      itemCount: _contacts.length,
    );

  }
}

Другой вариант, который я придумал:

class ContactList extends StatelessWidget {
  final List<Contact> _contacts;

  ContactList(this._contacts);

  @override
  Widget build(BuildContext context) {
    return new ListView.builder(
      padding: new EdgeInsets.symmetric(vertical: 8.0),
      itemBuilder: (context, index) {
        return new _ContactListItem(_contacts[index]);
        Navigator.push(context,  MaterialPageRoute(builder: (context) => viewContact())
        );
      },

      itemCount: _contacts.length,
    );

  }
}

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Я бы посоветовал вам взглянуть на этот учебник, поскольку он выглядит как раз то, чего вы пытаетесь достичь: https://flutter.io/docs/cookbook/navigation/passing-data

Идея состоит в том, чтобы переопределить MaterialRoutePage внутри вашей страницы для отправки определенных данных.

Вот пример

onTap: () {
  Navigator.push(
    context,
    MaterialPageRoute(
      builder: (context) => DetailScreen(contact: contact_information),
    ),
  );
},

Но ваш DetailScreen конструктор должен принимать контакт в качестве аргумента.

Надеюсь, это поможет!

0 голосов
/ 12 сентября 2018

Я думаю, что это дубликат Правильная навигация по страницам Не могу отметить его, потому что на другой вопрос нет ответа или принятого ответа. Также здесь можно вставить мой ответ.

Вот несколько вещей, на которые я могу сразу указать (Проблемы):

Предложения:

  • Возможно, вам придется обернуть _ContactListItem() внутри GestureDetector и реализовать onTap обратный вызов

Пример кода:

class ContactList extends StatelessWidget {
  final List<Contact> _contacts;

  ContactList(this._contacts);

  @override
  Widget build(BuildContext context) {
    return ListView.builder(
      padding: EdgeInsets.symmetric(vertical: 8.0),
      itemBuilder: (context, index) {
        return GestureDetector(
          onTap: () {
            //TODO: Insert your navigation logic here
            Navigator.of(context).push(MaterialPageRoute(
                builder: (BuildContext context) =>
                    ContactView(_contacts[index])));
          },
          child: _ContactListItem(_contacts[index]),
        );
      },
      itemCount: _contacts.length,
    );
  }
}

Надеюсь, это каким-то образом помогло, дайте мне знать, если я неправильно понял вопрос.

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