Le widget GridView de Flutter permet d’avoir des colonnes et des lignes, sous forme de grilles avec des éléments qui permettent de faire défiler et d’accéder aux fonctionnalités de l’application.

Comme son nom l’indique, le widget GridView permet d’afficher un objet sous forme de grille. Nous pouvons utiliser du texte, des images ou tout autre widget à l’intérieur de la grille. Puisqu’il s’agit d’un widget déroulant, nous devons spécifier le sens de défilement.

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: MaGridView(),
    );
  }
}

class MaGridView extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text("Le widget GridView"),
        ),
        body: GridView.count(
          crossAxisCount: 3,
          children: <Widget>[
            FlutterLogo(),
            FlutterLogo(),
            FlutterLogo(),
            FlutterLogo(),
            FlutterLogo(),
            FlutterLogo()
          ],
        ));
  }
}

La valeur trois (3) dans crossAxisCount est la valeur du nombre de colonnes dans la grille. En fait, les widgets enfants sont des widgets dérivés qui seront affichés avec un total de six logos Flutter sous la forme d’une grille. Le résultat du code ci-dessus sera comme ceci.

widget GridView

Le widget GridView est essentiellement un widget CustomScrollView déroulant, vous n’avez donc pas à vous soucier si le nombre de widgets de la grille dépasse la taille de l’écran. Dans GridView, nous pouvons également utiliser List.generate pour créer des widgets enfants en fonction du nombre de données.

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        debugShowCheckedModeBanner: false,
        home: Scaffold(
            appBar: AppBar(
              title: Text("Le widget GridView"),
            ),
            body: GridView.count(
                crossAxisCount: 3,
                children: List.generate(9, (index) {
                  return Container(
                    child: Card(
                      color: Colors.deepPurpleAccent,
                    ),
                  );
                }))));
  }
}
widget GridView

Il existe cinq façons d’utiliser GridView dans Flutter, à savoir :

GridView

GridView.count

GridView.builder

GridView.custom

GridView.extent

En fait, l’utilisation des cinq fonctions est très similaires. À titre d’exemple, nous afficherons une grille de 2 colonnes avec 4 widgets contenant le logo Flutter en utilisant tous les types de GridView disponibles.

GridView.count

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        debugShowCheckedModeBanner: false,
        home: Scaffold(
        appBar: AppBar(
        title: Text("Le widget GridView"),
    ),
    body: GridView.count(
    crossAxisCount: 2,
    children: <Widget>[
    FlutterLogo(),
    FlutterLogo(),
    FlutterLogo(),
    FlutterLogo(),
    ],
    ),
        ));
  }
}

GridView.builder

Dans la méthode builder, le nombre d’éléments de la grille à afficher suit la valeur de la propriété itemCount.

GridView.builder(
  gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2),
  itemBuilder: (_, index) => FlutterLogo(),
  itemCount: 4,
)

GridView.custom

GridView.custom(
  gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2),
  childrenDelegate: SliverChildListDelegate(
    [
      FlutterLogo(),
      FlutterLogo(),
      FlutterLogo(),
      FlutterLogo(),
    ],
  ),
)

GridView.extent

GridView.extent(
  maxCrossAxisExtent: 200,
  children: <Widget>[
    FlutterLogo(),
    FlutterLogo(),
    FlutterLogo(),
    FlutterLogo(),
  ],
)

Le widjet GridView

Nous pouvons également créer un GridView sans aucune méthode, son utilisation est comme une combinaison de GridView.count avec le constructeur. Où spécifier le nombre de colonnes de la grille doit utiliser un widget fixe pour les éléments de grille utilisant la propriété children .

GridView(
  gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2),
  children: <Widget>[
    FlutterLogo(),
    FlutterLogo(),
    FlutterLogo(),
    FlutterLogo(),
  ],
)

À partir des cinq exemples de code ci-dessus, le résultat sera le même que l’image ci-dessous

widget GridView

Utilisez la méthode qui convient le mieux à votre style. Cependant, pour le processus d’apprentissage, il est recommandé d’utiliser GridView.count ou GridView.builder parce que ces deux méthodes sont les plus utilisées.

GridView.count est pour l’utilisation d’un petit nombre de grilles. Si le nombre de grilles est inférieur à 16, utiliser gridView.count est le bon choix. Cependant, si vous créez une grille avec défilement infini qui affichera de nombreux éléments, vous devez utiliser GridView.builder.

Sachez que comme dans les autres widgets, GridView possède des propriétés que vous pouvez utiliser.

Catégories : Flutter

0 commentaire

Laisser un commentaire

Emplacement de l’avatar

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *