Selam, Flutter’da GridView.count widgetını kullanıyorum. Lengthini 10 verdim, fakat 10 tane aynı fotoğrafları döndürüyor. Her bir indexe farklı bir fotoğraf nasıl verebilirim?
https://hizliresim.com/a8ItSt

can list string içinde resimlerin adreslerini tut. Grid içinde image.Asset(resimler[index]) kullan

Flutter changed the title to GridView data Index.

    HseyinAkkaya onTap te herhangi bit fotoğrafa tıklandığında hepsi aynı sayfaya gidiyor ama farklı sayfalara gitmesi gerekiyor

    can [index] değerini orada da yapmanız gerekiyor

    • can replied to this.
      int _currentPageIndex = 0;
        Widget get _page {
          switch (_currentPageIndex) {
            case 0:
              return FirstView();
              break;
            case 1:
              return SecondView();
              break;
            default:
          }
        }
      return GridView.count(
              crossAxisCount: 2,
              children: List.generate(10, (index) {
                return GestureDetector(
                  onTap: () {
                    setState(() {
                      _currentPageIndex = index;
                    });
                  },
                  child: Card(
                    //semanticContainer: true,
                    clipBehavior: Clip.antiAliasWithSaveLayer,
                    elevation: 5,
                    margin: EdgeInsets.all(20),
                    shape: RoundedRectangleBorder(
                        borderRadius: BorderRadius.circular(20)),
                    child: Image.asset(images[index]
                        //   fit: BoxFit.fill,
                        ),
                  ),
                );
              }));
      • can replied to this.

        can set state aktif olmadı , herhangi bir fotoğrafa tıklandığında sayfaya gitmiyor

        can Aktif oluyor.
        Siz böyle yaparsanız _currentPageIndex her zaman son fotoğrafın id’sini alır.

        • can replied to this.

          Flutter her sayfaya bir index tanımlayıp , gesturedetector indexine yani fotoğraflardaki indexe eşleşmesi gerekiyor böylelikle set state tetiklenmesi gerekir :/

          can Burada tek bir int olduğu için bu hata alınıyor
          bunun yerin dizi oluşturarak yapmayı deneyin

          • can replied to this.
            `var currentPageIndex = [];
              Widget get page {
                switch (currentPageIndex.length) {
                  case 0:
                    return FirstView();
                    break;
                  case 1:
                    return SecondView();
                    break;
                  default:
                    return page;
                }
              }
                @override
              Widget build(BuildContext context) {
                return GridView.count(
                    crossAxisCount: 2,
                    children: List.generate(10, (index) {
                      return GestureDetector(
                        onTap: () {
                          setState(() {
                            page;
                          });
                        },
                        child: Card(
                          //semanticContainer: true,
                          clipBehavior: Clip.antiAliasWithSaveLayer,
                          elevation: 5,
                          margin: EdgeInsets.all(20),
                          shape: RoundedRectangleBorder(
                              borderRadius: BorderRadius.circular(20)),
                          child: Image.asset(images[index]
                              //   fit: BoxFit.fill,
                              ),
                        ),
                      );
                    }));
              }
            }
              `

              Flutter

              1. GridView.count ile list içine 10 tane fotoğrafın adreslerini tutarak, 10 fotoğrafı gönderiyorum. Bu okey.
                2.Şimdi ise GestureDetector un onTap içine setstate ile her fotoğrafın farklı sayfaları açması gerekiyor örneğin index 1 fotoğrafı tıklandığında index 1 sayfası açılmalı. Index 2 fotoğrafı tıklandığında index 2 sayfası açılmalı şeklinde.
                Switch-case yapısı ile sayfalarımı tutuyorum. Şuan ki dizi index değişkenini oluşturdum. Fakat fotoğraflar tıklandığında herhangi bir reaksiyon alamıyorum.
                 var currentPageIndex = [0];
                  Widget get page {
                    switch (currentPageIndex.length) {
                      case 0:
                        return FirstView();
                        break;
                      case 1:
                        return SecondView();
                        break;
                      default:
                        return page;
                    }
                  }
                
                  @override
                  Widget build(BuildContext context) {
                    return GridView.count(
                        crossAxisCount: 2,
                        children: List.generate(10, (index) {
                          return GestureDetector(
                            onTap: () {
                              setState(() {
                                index = currentPageIndex.length;
                              });
                              page;
                            },
                            child: Card(
                              //semanticContainer: true,
                              clipBehavior: Clip.antiAliasWithSaveLayer,
                              elevation: 5,
                              margin: EdgeInsets.all(20),
                              shape: RoundedRectangleBorder(
                                  borderRadius: BorderRadius.circular(20)),
                              child: Image.asset(images[index]
                                  //   fit: BoxFit.fill,
                                  ),
                            ),
                          );
                        }));
                  }

              can onTap: () {
              setState(() {
              index = currentPageIndex.length;
              });
              page;
              },

              index = currentPageIndex.length;
              Bunun yerine

              Navigator.push(
                  context,
                  MaterialPageRoute(builder: (context) => SecondRoute(index:index)),
                );

              Kullanabilirsiniz.
              Siz yine indexe tek değer veriyorsunuz hocam

              • can likes this.
              • can replied to this.

                Flutter çözdüm onu hocam tesekkürler route dosyasında sayfaları toplayıp index degerlerini atılması kaldı

                Flutter router yapısında tüm sayfaları toplayıp indexleri nasıl tanımlanır

                can Demek istediğinizi anlamadım ama bu başka bir konu oluyor galiba
                Eğer öyleyse yeni bir tartışma açın lütfen 🙂

                  Write a Reply...