🙂 İNSANLARIN EN HAYIRLISI INSANLARA FAYDALI OLANDIR 🙂

Ramazan HABER / FLUTTER / GridView builder ile örnek resimli card item

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

 

 2022 Şubat 28 Pazartesi
 636