#flutter #class #listview #dart #navigator
#трепетание #класс #просмотр списка #дротик #навигатор
Вопрос:
Я создал эти классы и этот список, чтобы сделать его интерактивным в flutter с помощью ListView.builder. Когда я нажимаю на имя, я попадаю на страницу клана. Как мне показать список участников в классе клана и сделать его доступным для просмотра на «Странице профиля участника»? или есть другой способ сделать это?
Это и есть классы
class Clan{
String name;int member;DateTime born;
List<MemberClan> listMemberClan;
List<Videogame> listVieogame;
Clan ({this.born,this.member,this.name, this.listMemberClan, this.listVieogame});
}
class MemberClan{
String memberClanName, email; int age;
List<Videogame> memberVideogamelist;
MemberClan({this.age,this.email,this.memberClanName, this.memberVideogamelist});
}
class Videogame{
String videogameName, softwarehouse, type;
Videogame({this.softwarehouse,this.videogameName,this.type});
}
List<Clan> clanList =[
Clan(
name: "Wof",
member: 2,
listMemberClan: [
MemberClan(
memberClanName: "redwolf",
email: "redwolf@email.com",
memberVideogamelist: [
Videogame(
videogameName: "fifa20",
softwarehouse: "Ea",
type: "sport"
),
]
),
MemberClan(
memberClanName: "shaps",
email: "shaps@email.com",
memberVideogamelist: [
Videogame(
videogameName: "fifa21",
softwarehouse: "Ea",
type: "sport"
),
Videogame(
videogameName: "callofduty MW",
softwarehouse: "Activision",
type: "fps"
),
]
),
],
),
Clan(
name: "Ika",
member: 1,
listMemberClan: [
MemberClan(
memberClanName: "stinfo",
email: "stinfo@email.com",
memberVideogamelist: [
Videogame(
videogameName: "Call Of Duty: MW",
softwarehouse: "Activision",
type: "fps"
),
]
),
],
),
];
это простой виджет для списка, а clanpage — это просто простой пример, в котором нет пользовательского интерфейса
class ClanList extends StatelessWidget {
final Clan clan;
final MemberClan memberClan;
final Videogame videogame;
const ClanList({Key key, this.clan, this.memberClan, this.videogame})
: super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: Expanded(
child: ListView.builder(
itemCount: clanList.length,
itemBuilder: (context, index) => InkWell(onTap: (){Navigator.push(context, MaterialPageRoute(builder: (context)=> ClanPage(clan: clanList[index],)));},
child: ListTile(
title: Text(clanList[index].name),
),
),
),
),
),
);
}
}
class ClanPage extends StatelessWidget {
final Clan clan;
final MemberClan memberClan;
final Videogame videogame;
const ClanPage({Key key, this.clan, this.memberClan, this.videogame})
: super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: Column(
children: [
Text(clan.name),
Text(clan.member.toString()),
//here i want show a clickable list of the member
//and tap or clik on name I want show the member profilepage
],
),
),
);
}
}
Ответ №1:
В вашем классе clan добавьте следующий код:-
class ClanPage extends StatelessWidget {
final Clan clan;
final MemberClan memberClan;
final Videogame videogame;
const ClanPage({Key key, this.clan, this.memberClan, this.videogame})
: super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: Expanded(
child: ListView.builder(
itemCount: clan.listMemberClan.length,
itemBuilder: (context, index) => ListTile(
onTap: (){Navigator.push(context, MaterialPageRoute(builder: (context)=> MemberPage(memberClan: clan.listMemberClan[index],)));},
title: Text(clan.listMemberClan[index]),
),
),
),
),
);
}
}
class MemberPage extends StatelessWidget {
final MemberClan memberClan;
const ClanPage({this.memberClan});
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
//show your details here like:-
child:Text(memberClan.email),
)
);
}
}
Комментарии:
1. спасибо, то же самое думаю, если я хочу добавить больше информации, я просто делаю то же самое, думаю, большое вам спасибо
2. нет проблем, если вы нашли это полезным, нажмите «галочку», чтобы принять ответ. «Галочка» будет присутствовать в начале ответа.