Back

Row et Column dans Flutter

Row et Column dans Flutter

  1. Objectif

    • Apprendre à organiser les widgets en lignes et en colonnes sur l’écran en Flutter
  2. Présentation

    • Row et Column sont des widgets dans Flutter et la plupart du temps, chaque mise en page peut être décomposée en ligne et en colonne.
    • La ligne et la colonne sont les deux widgets essentiels de Flutter qui permet aux développeurs d’aligner les child horizontalement et verticalement selon nos besoins.
    • Ces widgets sont très nécessaires lorsque nous concevons l’interface utilisateur de l’application dans Flutter.
    • Row et Column dans Flutter

  3. Row

    • Une ligne est un widget de mise en page multi-enfant qui prend une liste de widgets comme ses enfants.
    • Une ligne affiche les widgets dans la vue visible, c’est-à-dire qu’elle ne défile pas.
    • Nous pouvons contrôler la façon dont un widget de ligne aligne ses enfants en fonction de notre choix en utilisant la propriété crossAxisAlignment et mainAxisAlignment .
    • L’axe transversal de la ligne s’exécutera verticalement , et l’axe principal s’exécutera horizontalement .
    • Voir la représentation visuelle ci-dessous pour le comprendre plus clairement.
    • Row et Column dans Flutter

    • Définir l’alignement de l’axe transversal
      • L’alignement des ‘child’ dans l’axe transversal peut être défini en passant un crossAxisAlignmentargument. Si vous ne transmettez pas l’argument, l’alignement par défaut de l’axe transversal est centré. Les valeurs possibles sont :
        • start: Placez les enfants aussi près que possible du début de l’axe transversal.
        • end: Placez les enfants le plus près possible de l’extrémité de l’axe transversal.
        • center: Placez les enfants de manière à ce que leurs centres soient alignés avec le milieu de l’axe transversal.
        • stretch: Demander aux enfants de remplir l’axe transversal.
        • baseline: placez les enfants le long de l’axe transversal de sorte que leurs lignes de base correspondent.
    • mainAxisAlignment
      • Le mainAxisAlignment contrôle les ‘child’ à afficher dans la direction horizontale de la ligne ‘Row‘, mais contrôle la direction verticale du Colonne ‘column
  4. Column

    • Le widget de colonne comme la ligne est un widget de mise en page multi-enfant qui prend une liste de widgets comme ses enfants.
    • Row et Column dans Flutter

  5. Comparaison entre Row et Column

    • Row et Column dans Flutter

      Récipient

      Colonne/Ligne

      Prend exactement un widget enfant Prend plusieurs widgets enfants (illimités)
      Options d’alignement et de style riches disponibles Options d’alignement disponibles, mais il n’y a pas d’options de style
      Largeur flexible (ex. largeur enfant, largeur disponible, …) Prend toujours la pleine hauteur (colonne) / largeur (ligne) disponible
      Parfait pour un style et un alignement personnalisés Indispensable si les widgets sont placés les uns à côté des autres
  6. Application

    • Énoncé
      • Utiliser les widgets row et column pour réaliser la figure suivante:
      • Row et Column dans Flutter1

      Solution
        import 'package:flutter/material.dart';
        
        void main() => runApp(const MyApp());
        
        class MyApp extends StatelessWidget {
          const MyApp({Key? key}) : super(key: key);
        
          @override
          Widget build(BuildContext context) {
            return const MaterialApp(
              home: Home(),
            );
          }
        }
        
        class Home extends StatelessWidget {
          const Home({Key? key}) : super(key: key);
        
          @override
          Widget build(BuildContext context) {
            return Scaffold(
              appBar: AppBar(
                title: const Text('Formation apcpedagogie.com'),
                backgroundColor: const Color.fromARGB(190, 24, 255, 255),
              ),
              body: Column(
                //Tous les éléments sont emballés
                children: [
                  //Dans cette colonne
                  const SizedBox(
                    height: 15,
                  ),
                  const SizedBox(
                    height: 20,
                    child: Text('Démonstration de Row',
                        style: TextStyle(
                            color: Color.fromRGBO(69, 235, 18, 1),
                            fontWeight: FontWeight.bold)),
                  ),
                  Row(
                    children: [
                      /////////////Premier élément
                      Card(
                        margin: const EdgeInsets.all(10),
                        elevation: 8,
                        child: Container(
                          padding: const EdgeInsets.all(25),
                          child: const Text(
                            'apcpedagogie',
                            style: TextStyle(color: Colors.blue),
                          ),
                        ),
                      ),
                      const SizedBox(
                        width: 2,
                      ),
                      //////////////////Deuxsième élément
                      Card(
                        margin: const EdgeInsets.all(10),
                        elevation: 8,
                        child: Container(
                          padding: const EdgeInsets.all(25),
                          child: const Text(
                            'apcpedagogie',
                            style: TextStyle(color: Colors.blue),
                          ),
                        ),
                      ),
                      const SizedBox(
                        width: 2,
                      ),
                      /////////////////Troisième élément
                      Card(
                        margin: const EdgeInsets.all(10),
                        elevation: 8,
                        child: Container(
                          padding: const EdgeInsets.all(25),
                          child: const Text(
                            'apcpedagogie',
                            style: TextStyle(color: Colors.blue),
                          ),
                        ),
                      ),
                    ],
                  ),
                  const SizedBox(
                    height: 30,
                  ),
                  const SizedBox(
                    height: 20,
                    child: Text(
                      'Démonstration de Column',
                      style: TextStyle(
                          color: Color.fromARGB(255, 18, 50, 235),
                          fontWeight: FontWeight.bold),
                    ),
                  ),
                  Column(
                    children: [
                      /////////////Premier élément
                      Card(
                        margin: const EdgeInsets.all(10),
                        elevation: 8,
                        child: Container(
                          padding: const EdgeInsets.all(25),
                          child: const Text(
                            'apcpedagogie',
                            style: TextStyle(color: Color.fromARGB(255, 18, 50, 235)),
                          ),
                        ),
                      ),
                      const SizedBox(
                        width: 4,
                      ),
                      //////////////////Deuxsième élément
                      Card(
                        margin: const EdgeInsets.all(10),
                        elevation: 8,
                        child: Container(
                          padding: const EdgeInsets.all(25),
                          child: const Text(
                            'apcpedagogie',
                            style: TextStyle(color: Color.fromARGB(255, 18, 50, 235)),
                          ),
                        ),
                      ),
                      /////////////////Troisième élément
                      Card(
                        margin: const EdgeInsets.all(10),
                        elevation: 8,
                        child: Container(
                          padding: const EdgeInsets.all(25),
                          child: const Text(
                            'apcpedagogie',
                            style: TextStyle(color: Color.fromARGB(255, 18, 50, 235)),
                          ),
                        ),
                      ),
                    ],
                  )
                ],
              ),
            );
          }
        }
        



Riadh HAJJI

Abonnez vous à notre chaîne YouTube gratuitement