95 votes

Flutter Multiline pour le texte

Tout ce dont j'ai besoin, c'est que mon texte soit multiligne. Je donne la propriété de maxLines mais elle obtient toujours une RenderFlex vers la droite car la suivante ne va pas à la deuxième ligne,

       Align( alignment: Alignment.bottomCenter,
      child: new ButtonBar(
        alignment: MainAxisAlignment.center,
        children: <Widget>[
          Padding(
            padding: EdgeInsets.all(20.0),
            child: new Text(
              "This is a very bigggggggg text !!!",textDirection: TextDirection.ltr,
              style: new TextStyle(fontSize: 20.0, color: Colors.white),
              maxLines: 2,
            ),
          )
        ],
      ),
    )

49voto

Danford Kija Points 342

Enveloppez simplement votre widget de texte avec Expanded comme ci-dessous

     Expanded(
      child: Text('data', maxLines: 4,
        overflow: TextOverflow.ellipsis,
        textDirection: TextDirection.rtl,
        textAlign: TextAlign.justify,),
    ),

24voto

Basel Abuhadrous Points 700

essaye ça:

 Expanded(            
    child: Text(
      'a long text',
      overflow: TextOverflow.clip,
    ),
),

dans mon implémentation, je l'ai mis dans une rangée et je l'ai entouré de cases dimensionnées de chaque côté afin que j'aie un peu d'espace entre mes éléments, pourquoi utiliser élargi vous pouvez demander, eh bien, il prend autant d'espace que possible pour que le texte ressemble bon en mode portrait ou paysage.

et voici un exemple complet sur la façon de le faire réagir même verticalement et pas seulement horizontalement:

 Card(
  child: InkWell(
    onTap: (){},
    child: Padding(
      padding: const EdgeInsets.all(8.0),
      child: Row(
        children: <Widget>[
          SizedBox(
            height: 70, // default\minimum height
          ),
          Container(
            height: 44,
            width: 44,
            decoration: BoxDecoration(
                color: Colors.blue,
                borderRadius: BorderRadius.all(Radius.circular(22))),
          ),
          SizedBox(
            width: 15,
          ),
          Expanded(
            child: Text(
              'the very long title',
              overflow: TextOverflow.clip,
            ),
          ),
          SizedBox(
            width: 10,
          ),
          Text(
            'value', //some other text in the end of the card or maybe an icon instead
          ),
          SizedBox(
            width: 30,
          ),
        ],
      ),
    ),
  ),
)

16voto

mohammed mahmoud Points 172

Je pense que vous avez oublié d'ajouter le type overflow .

Vous pouvez utiliser quelque chose comme ceci:

 Text(
     "TOP ADDED",
     textAlign: TextAlign.justify,
     overflow: TextOverflow.ellipsis,
     style: TextStyle(fontSize: 18.0),
     maxLines: 2,)

11voto

Mohd Danish Khan Points 396

Utilisez un widget étendu avec une colonne pour obtenir un texte multiligne.

 Expanded(child: 
 Column(crossAxisAlignment: CrossAxisAlignment.start ,
 children: [
            Text(food.title),
            Text(food.price)
           ]
))

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