简体   繁体   English

列表到 class 在 flutter 中的可点击 ListView.builder 之后显示它

[英]List into a class show it after a a clickable ListView.builder in flutter

I created these classes and this list to make it clickable in flutter with a ListView.builder.我创建了这些类和这个列表,使其可以在 flutter 中使用 ListView.builder 进行点击。 When I click on a name I take me to the clan page.当我点击一个名字时,我会将我带到氏族页面。 How do I show the list of members in the clan class and make it tapable to the "Member profile page"?如何显示氏族 class 中的成员列表并使其可点击到“成员资料页面”? or is there a different way to do it?或者有不同的方法吗?

These are the classes这些是类

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"
          ),
        ]
      ),
    ],
    
  ),
];

these are the the simply widget for the list and the clanpage are just a simply example there isn't UI这些是列表的简单小部件,而 clanpage 只是一个简单的示例,没有 UI

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
          ],
        ),
      ),
    );
  }
}

In your clan class add the following code:-在您的部落 class 添加以下代码:-

 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), ) ); } }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM