<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Victor Moreira</title>
    <description>The latest articles on DEV Community by Victor Moreira (@victormoreira).</description>
    <link>https://dev.to/victormoreira</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F706232%2F1d2eb5e2-e559-49bc-8178-666b718c5e5e.jpeg</url>
      <title>DEV Community: Victor Moreira</title>
      <link>https://dev.to/victormoreira</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/victormoreira"/>
    <language>en</language>
    <item>
      <title>Entendendo GridView com Flutter</title>
      <dc:creator>Victor Moreira</dc:creator>
      <pubDate>Wed, 15 Sep 2021 23:08:51 +0000</pubDate>
      <link>https://dev.to/victormoreira/entendendo-gridview-com-flutter-1fhk</link>
      <guid>https://dev.to/victormoreira/entendendo-gridview-com-flutter-1fhk</guid>
      <description>&lt;p&gt;Imagine que você precise criar uma tela de exibição de items como fotos ou cards de comidas como os apps de delivery, pois então com certeza o GridView irá lher ajudar e muito na construção.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ly5WiN8s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/add0tgv9px5myqdwo4vq.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ly5WiN8s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/add0tgv9px5myqdwo4vq.jpeg" alt="GridView Capa"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  GridView.count
&lt;/h3&gt;

&lt;p&gt;A maneira mais simples de implementarmos o GridView é através do construtor &lt;code&gt;GridView.count()&lt;/code&gt;. Com ele é possível já termos uma exibição de grid, como o código de exemplo abaixo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GridView.count(
      crossAxisCount: 2,
      children: List.generate(10, (index) {
        return Container(
          child: Card(
            color: Colors.grey,
          ),
        );
      }),
    );
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Neste exemplo vemos a presença de um atributo chamado &lt;code&gt;crossAxisCount&lt;/code&gt; esse atributo delimita quantas colunas teremos na grid, que no exemplo são duas.&lt;/p&gt;

&lt;p&gt;No &lt;code&gt;children&lt;/code&gt; estamos passando o &lt;code&gt;List.generate&lt;/code&gt; este o qual sua função é replicar as grades que estão sendo demonstradas, neste exemplo colocamos 10 grades, que irão apresentar o nosso &lt;code&gt;container&lt;/code&gt; , conforme exemplo ilustrado abaixo:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--heig-PcV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h3n2tkqh88b9co6v9esx.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--heig-PcV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h3n2tkqh88b9co6v9esx.gif" alt="GridView Count Exemplo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  GridView.builder
&lt;/h3&gt;

&lt;p&gt;O GridView.builder é utilizado para requisições de itens em API, no qual não se temos ao certo o número exato de retorno. Através dele podemos ter uma melhor performance em nossas aplicações, pois ele vai trabalhar sob demanda.&lt;/p&gt;

&lt;p&gt;Um dos atributos do builder é o &lt;code&gt;gridDelegate&lt;/code&gt; que é responsável pelo controle de nossa grid, nele podemos passar a instância do &lt;code&gt;SliverGridDelegateWithFixedCrossAxisCount&lt;/code&gt;, que neste caso vamos fixar a nossa grade em 2 colunas passando &lt;code&gt;crossAxisCount:2&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Os outros dois atributos do nosso builder que são importantes é o &lt;code&gt;itemCount&lt;/code&gt; que vamos passar a quantidade de itens que nossa requisição a API trouxe, e o &lt;code&gt;itemBuilder&lt;/code&gt; que é onde vamos passar os itens para serem apresentados em widget.&lt;/p&gt;

&lt;p&gt;Abaixo exemplo de um código de um &lt;code&gt;GridView.builder&lt;/code&gt; recebendo itens da &lt;a href="https://dog.ceo/dog-api/"&gt;API Dog&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GridView.builder(
  padding: EdgeInsets.all(12),
  gridDelegate: new SliverGridDelegateWithFixedCrossAxisCount(
               crossAxisCount: 2),
               itemCount:_dogAPIStore.dogAPI.message.length,
               itemBuilder: (context, index) {
                   return Column(
                      children: [
                        DogItem(
                         imageDog:_dogAPIStore.dogAPI.message[index]
                                  .toString(),
                           heigth: 0.2,
                           width: 0.4,
                         ),
                       ],);
}),
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O widget &lt;code&gt;DogItem&lt;/code&gt; será o que representará cada item vindo da API, nele criamos um atributo para receber a imagem, e os outros dois atributos para setar a altura e largura.&lt;/p&gt;

&lt;p&gt;Exemplo em execução:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--S0fxBaTM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sgg5a2aqc388dnsp5bu4.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--S0fxBaTM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sgg5a2aqc388dnsp5bu4.gif" alt="GridView builder Exemplo"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>dart</category>
      <category>gridview</category>
      <category>widget</category>
    </item>
  </channel>
</rss>
