ListView.builderla belirli sayıda button oluşturup bu butonları, route kullanarak , tıklandığında kendi sayfalarına yollayacak biçimde ayarlamam gerekiyor.Sıkıntı ben her sayfa için yeniden kod yazmak istemiyorum(çünkü çok fazla). Benim bir şekilde butona tıklandığında hangi butona tıklandığını bir değişkene aktarmam ve bu değişkeni o hazırladığım sayfadaki değişkenin yerine entegre etmem gerekiyor. Biraz karışık olabilir bu yüzden kullandığım kodları alta koyuyorum.
Burada buttonları oluşturuyorum:
ListView.builder(
itemCount: itemlist2.length,
itemBuilder: (context, int index) {
return GestureDetector(
child: Column(
children:[ Container(
height: 250,
width: 300,
child: Card(
color: Colors.deepOrange[100],
shape: RoundedRectangleBorder(
side: BorderSide(color: Colors.white70, width: 1),
borderRadius: BorderRadius.circular(10),),
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
children: [
SizedBox(
height: 5,
),
Image.network(
'${itemlist2[index].planetimage}',
height: 110,
width: 110,
),
SizedBox(
height: 30,
),
Text(
'${itemlist2[index].planetname}',
style: TextStyle(fontSize: 25),
),
SizedBox(
height: 20,
),
Icon(Icons.east,size: 40,color: Colors.black,),
],
),
),
),
SizedBox(height: 15,),
],
),
onTap: (){
setState(() {
a=index;
Route plr = MaterialPageRoute(builder: (context) {
return planetpages();
});
Navigator.push(context, plr);
});
},
);
},
),
Bu ise buttona basıldığında gidilen sayfa:
class planetpages extends StatelessWidget {
List itemlist2=totalitems;
@override
Widget build(BuildContext context) {
return Material(
child:SafeArea(
child: Scaffold(
appBar: AppBar(
title: Text('${itemlist2[1].planetname}'),
backgroundColor: Colors.black,),
body:
ListView(
padding: const EdgeInsets.all(8),
children: <Widget>[
Card(
shape: RoundedRectangleBorder(
side: BorderSide(color: Colors.black, width: 1),
borderRadius: BorderRadius.circular(15.0)),
child: Padding(
padding: EdgeInsets.all(16.0),
child: Image.network('${itemlist2[1].planetimage}',height: 200,width: 200,),),),
SizedBox(height: 50,),
Card(
shape: RoundedRectangleBorder(
side: BorderSide(color: Colors.black, width: 2),
borderRadius: BorderRadius.circular(15.0)),
child: Padding(padding :EdgeInsets.all(4.0), child: Text('${itemlist2[1].planettexts}',style: TextStyle(fontSize: 22),)),),
],
),
),
),
);
}
}
yardımcı olursanız sevinirim🙂