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.
Sfida
FacileIl 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'),
),
],
),
),
);
}
}
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