Menu
CoddyTech

Una griglia creata con un builder

Fa parte della sezione Elenchi e schermate del percorso Flutter di Coddy. Lezione 11 di 33.

Una griglia di cento foto ha lo stesso problema di un elenco lungo: non puoi scrivere ogni riquadro e crearli tutti in una volta è lento. GridView.builder crea i riquadri man mano che scorri, come ListView.builder:

GridView.builder(
  gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
    crossAxisCount: 3,
  ),
  itemCount: photos.length,
  itemBuilder: (context, index) {
    return Image.network(photos[index]);
  },
)

Il nome lungo, SliverGridDelegateWithFixedCrossAxisCount, definisce il layout della griglia: un numero fisso di riquadri per riga. Accetta crossAxisCount e la spaziatura che GridView.count accettava direttamente.

itemCount e itemBuilder funzionano come in un elenco: il builder riceve l'index di ogni riquadro, a partire da 0.

challenge icon

Sfida

Facile

Il calendario mostra solo la prima settimana di giugno, inserita a mano. Sostituisci GridView.count con GridView.builder per visualizzare tutti i 30 giorni, numerati da 1, con sette giorni per riga.

Provalo tu

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        appBar: AppBar(title: const Text('June')),
        body: GridView.count(
          padding: const EdgeInsets.all(8),
          crossAxisCount: 7,
          mainAxisSpacing: 4,
          crossAxisSpacing: 4,
          children: [
            Container(
              alignment: Alignment.center,
              color: Colors.teal.shade100,
              child: const Text('1'),
            ),
            Container(
              alignment: Alignment.center,
              color: Colors.teal.shade100,
              child: const Text('2'),
            ),
            Container(
              alignment: Alignment.center,
              color: Colors.teal.shade100,
              child: const Text('3'),
            ),
            Container(
              alignment: Alignment.center,
              color: Colors.teal.shade100,
              child: const Text('4'),
            ),
            Container(
              alignment: Alignment.center,
              color: Colors.teal.shade100,
              child: const Text('5'),
            ),
            Container(
              alignment: Alignment.center,
              color: Colors.teal.shade100,
              child: const Text('6'),
            ),
            Container(
              alignment: Alignment.center,
              color: Colors.teal.shade100,
              child: const Text('7'),
            ),
          ],
        ),
      ),
    );
  }
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Elenchi e schermate

Esercitati da solo: Compilatore Flutter online