Как мне отобразить указанные данные при нажатии на указанный список?

#android #flutter #listview

#Android #флаттер #просмотр списка

Вопрос:

итак, я начал изучать flutter и застрял в своем собственном проекте, на этот раз я пытаюсь создать приложение для списка контактов.

 class MyContacts extends StatelessWidget {

  final name = [
    "Mark Zuckerberg",
    "Udin Sasaki",
    "Eagle Man",
    "Mario Speedwagon",
    "Gail Forcewind",
    "Riqfi Dayat",
    "Fityan fitiw",
    "Awwala khalqyn",
    "lathon",
    "Arifin",
    "SMK Yusuf",
    "Harley",
    "Mom",
    "Brother"
  ];
  final number = [
    " 62 0895643242455",
    " 62 0895062457455",
    " 62 0895603211255",
    " 62 0895345357455",
    " 62 0898764247455",
    " 62 0895676247455",
    " 62 0895602247455",
    " 62 0895602656455",
    " 62 0895602247877",
    " 62 5567567567567",
    " 62 3454564687900",
    " 62 2343245345646",
    " 62 4567686798767",
    " 62 6785634232342"
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Contact'),
        leading: Icon(Icons.arrow_back),
        actions: <Widget>[
          IconButton(
            icon: Icon(
              Icons.search,
              color: Colors.white,
            ),
            onPressed: () {
              // do something
            },
          )
        ],
      ),
      body: ListView.builder(
        itemCount: name.length,
        itemBuilder:(context,index){
          return ListTile(
            title: Text(name[index]),
            subtitle: Text(number[index]),
            leading: CircleAvatar(
                backgroundColor: Colors.lightBlue,
                backgroundImage: NetworkImage(
                    'https://cdn.iconscout.com/icon/free/png-512/avatar-372-456324.png')),
            trailing: Icon(Icons.arrow_forward),
            onTap: (){
              Navigator.push(
                  context,
                  MaterialPageRoute(builder: (context) => Contact()),
              );
            },
          );
        },
      ),
    );
  }
}

class Contact extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Contact'),
        actions: <Widget>[
          IconButton(
            icon: Icon(
              Icons.search,
              color: Colors.white,
            ),
            onPressed: () {
              // do something
            },
          )
        ],
      ),
        body: Container(
            margin: EdgeInsets.only(top: 50),
            child: Row(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                Image.network('https://cdn.iconscout.com/icon/free/png-512/avatar-372-456324.png', height: 150,),
                SizedBox(height: 100),
                Text("data that stored in the array")
              ],
            )
        )
    );
  }
}
  

мой вопрос в том, как мне отобразить данные, которые я нажимаю на указанном контакте? например, если я нажму на контакт «Harley», текст на нем будет отображать harley сам по себе. любая помощь будет оценена, спасибо

список контактов:

список контактов

результат, который мне нужен:

результат, который мне нужен

Комментарии:

1. Можете ли вы поделиться изображением пользовательского интерфейса, чтобы понять

2. Вы хотите отобразить данные пользователя с помощью диалогового окна или вы хотите перейти на другую страницу для этого? Если вы хотите использовать диалоговое окно, вы можете использовать это api.flutter.dev/flutter/material/Dialog-class.html или, если вы хотите перейти на другую страницу, вы можете использовать этот flutter.dev/docs/cookbook/navigation/основы навигации

Ответ №1:

В MyContacts передайте имя классу Contact.

 Navigator.push(
      context, MaterialPageRoute(builder: (context) => Contact(name:name[index])),
    );
  

В классе Contact объявите так

 final String name;
Contact({Key key, @required this.name}) : super(key: key);
  

В теле замените

  Text("data that stored in the array")
  

Для

  Text(name)
  

Вы можете найти больше информации здесь.

Комментарии:

1. когда я передаю «Контакт (имя:name [index]))», он показывает, что именованный параметр «name» не определен. как это может быть?

2. вы определились name в контакте?

3. да, я уже определил name в Contact , но это показывает, что его необходимо инициализировать перед использованием