1-) FLUTTER - GridView builder ile örnek resimli card item
not : InkWell kullanırsan button efecti sağlar
child: Card(
//elevation: 10,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(20)),
child: InkWell(
onTap: (){
EasyLoading.showToast(anasayfaList[index].ad);
},
child: Container(
child: getColumnItem(
anasayfaList[index].logo, anasayfaList[index].ad),
),
),
),
AŞAĞISI DİĞER
@override
Widget build(BuildContext context) {
return getCardItem();
}
Padding getCardItem() {
return Padding(
padding: EdgeInsets.only(top: 5),
child: Card(
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)),
child: Container(
height: 150,
width: 200,
child: Column(
children: [
Expanded(
flex: 70,
child: Container(
padding: EdgeInsets.only(top: 5),
child: Image.asset("assets/images/alakart_rezervasyon.png"),
)),
Expanded(
flex: 30,
child: Container(
alignment: Alignment.center,
child: Text(
"Alakart Rezervasyon",
style:
TextStyle(fontSize: 17, fontWeight: FontWeight.bold),
),
)),
],
),
),
),
);
}
EKRAN ÇIKTISI
Gridview builder ile yapılmış hali
anasayfa_page.dart
import 'package:flutter/material.dart';
import 'anasayfa_card_item.dart';
class AnaSayfaPage extends StatefulWidget {
static String routeName = "/AnaSayfaPage";
const AnaSayfaPage({Key? key}) : super(key: key);
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<AnaSayfaPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: null,
body: SafeArea(
child: Padding(
padding: EdgeInsets.only(top: 20,left: 10,right: 10,bottom: 10),
child: Container(
height: MediaQuery.of(context).size.height-100,
alignment: Alignment.center,
child: SingleChildScrollView(
child: Column(
children: [
Container(
alignment: Alignment.center,
child: Text(
"HOŞ GELDİNİZ SAYIN HAYRETTİN MENDİ",
style: TextStyle(fontSize: 17, fontWeight: FontWeight.bold), textAlign: TextAlign.center
),
),
AnaSayfaCardItem(),
],
),
),
),
),
),
);
}
}
anasayfa_card_item.dart
import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'anasayfa_model.dart';
class AnaSayfaCardItem extends StatefulWidget {
const AnaSayfaCardItem({Key? key}) : super(key: key);
@override
_AnaSayfaCardItemState createState() => _AnaSayfaCardItemState();
}
class _AnaSayfaCardItemState extends State<AnaSayfaCardItem> {
late List<AnasayfaModel> anasayfaList;
@override
void initState() {
// TODO: implement initState
super.initState();
anasayfaList = [];
anasayfaList.add(new AnasayfaModel("Memnuniyet", "memnuniyet"));
anasayfaList.add(new AnasayfaModel("Mesajlar", "mesajlar"));
anasayfaList.add(new AnasayfaModel("Şikayet Girişi", "sikayet_girisi"));
anasayfaList.add(new AnasayfaModel("Teknik Servis", "teknik_servis"));
anasayfaList.add(new AnasayfaModel("Hotel Aktivite", "hotel_aktivite"));
anasayfaList.add(new AnasayfaModel("Housekeeping", "housekeeping"));
anasayfaList.add(new AnasayfaModel("Anket", "anket"));
anasayfaList.add(new AnasayfaModel("Hesap", "hesap"));
anasayfaList.add(new AnasayfaModel("Minibar", "minibar"));
anasayfaList.add(new AnasayfaModel("Spa", "spa"));
anasayfaList.add(new AnasayfaModel("Oda Servisi", "oda_servisi"));
anasayfaList
.add(new AnasayfaModel("Alakart Rezervasyon", "alakart_rezervasyon"));
}
@override
Widget build(BuildContext context) {
return Container(
child: GridView.builder(
controller: new ScrollController(keepScrollOffset: false),
scrollDirection: Axis.vertical,
shrinkWrap: true,
itemCount: anasayfaList.length,
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
mainAxisExtent: 115, // yükseklik demek
),
itemBuilder: (BuildContext contex, int index) {
return Container(
height: 100,
child: Padding(
padding: EdgeInsets.only(top: 5),
child: GestureDetector(
onTap: (){
EasyLoading.showToast(anasayfaList[index].ad);
},
child: Card(
//elevation: 10,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)),
child: Container(
child: getColumnItem(anasayfaList[index].logo, anasayfaList[index].ad),
),
),
),
),
);
},
));
}
Column getColumnItem(String logo, String isim) {
return Column(
children: [
Expanded(
flex: 65,
child: Container(
padding: EdgeInsets.only(top: 5),
child: Image.asset("assets/images/$logo.png"),
)),
Expanded(
flex: 35,
child: Container(
alignment: Alignment.center,
child: Text(isim,
style: TextStyle(
fontSize: 15,
fontWeight: FontWeight.bold,
),
textAlign: TextAlign.center),
)),
],
);
}
}
EKRAN ÇIKTISI