107 votes

Définir l'espace entre les éléments dans Row Flutter

Code:

new Container(
          alignment: FractionalOffset.center,
          child: new Row(
            mainAxisAlignment: MainAxisAlignment.spaceEvenly,
            children: [
              new FlatButton(
                child: new Text('Vous n'avez pas de compte?', style: new TextStyle(color: Color(0xFF2E3233))),
              ),
              new FlatButton(
                child: new Text('S'inscrire.', style: new TextStyle(color: Color(0xFF84A2AF), fontWeight: FontWeight.bold),),
                onPressed: moveToRegister,
              )
            ],
          ),
        ),  

Et voici le résultat : https://dartpad.dev/?id=6bbfc6139bdf32aa7b47eebcdf9623ba

Comment corriger le fait que les deux éléments FlatButton soient côte à côte sans espace entre le centre de la largeur de l'écran?

0 votes

3 votes

Avez-vous essayé : MainAxisAlignment.spaceAround ?

0 votes

Ajouter sizedbox. Consultez ce mightytechno.com/flutter-row-widget

3voto

Galal Points 15

Il suffit d'ajouter "Container(width: 5, color: Colors.transparent)," entre les éléments

new Container(
      alignment: FractionalOffset.center,
      child: new Row(
        mainAxisAlignment: MainAxisAlignment.spaceEvenly,
        children: [
          new FlatButton(
            child: new Text('Vous n'avez pas de compte?', style: new TextStyle(color: Color(0xFF2E3233))),
          ),
            Container(width: 5, color: Colors.transparent),
          new FlatButton(
            child: new Text('S'inscrire.', style: new TextStyle(color: Color(0xFF84A2AF), fontWeight: FontWeight.bold),),
            onPressed: moveToRegister,
          )
        ],
      ),
    ),

2voto

Jesse Smith Points 430

Je crois que le message original concernait la suppression de l'espace entre les boutons dans une ligne, et non l'ajout d'un espace.

La astuce est que l'espace minimum entre les boutons était dû au rembourrage intégré dans les boutons dans le cadre de la spécification de design matériel.

Donc, n'utilisez pas de boutons! Mais plutôt un GestureDetector à la place. Ce type de widget offre la fonctionnalité onClick / onTap mais sans le style.

Voir ce post pour un exemple.

https://stackoverflow.com/a/56001817/766115

0 votes

Merci je n'arrive pas à croire qu'ils n'ont même pas une propriété de rembourrage. J'ai passé presque une demi-heure à essayer de comprendre cet espace imaginaire!!!

2voto

IvanPavliuk Points 35

Pour créer un espacement précis, j'utilise Padding. Voici un exemple avec deux images :

Row(
    mainAxisAlignment: MainAxisAlignment.spaceAround,
    children: [
      Expanded(
        child: Padding(
          padding: const EdgeInsets.all(16.0),
          child: Image.asset('images/user1.png'),
        ),
      ),
      Expanded(
        child: Padding(
          padding: const EdgeInsets.all(16.0),
          child: Image.asset('images/user2.png'),
        ),
      )
    ],
  ),

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X