Flutter – Text bei Überlauf umbrechen, wie Ellipse einfügen oder verblassen

Lesezeit: 6 Minuten

Benutzeravatar von rafaelcb21
rafaelcb21

Ich versuche, eine Zeile zu erstellen, in der der mittlere Text eine maximale Größe hat, und wenn der Textinhalt zu groß ist, passt er in die Größe.

Ich füge die ein TextOverflow.ellipsis -Eigenschaft, um den Text zu kürzen und die Tripelpunkte einzufügen ... aber es funktioniert nicht.

main.dart

import 'package:flutter/material.dart';

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

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

class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) => new Scaffold(
    appBar: new AppBar(
      backgroundColor: new Color(0xFF26C6DA),
    ),
    body: new ListView  (
      children: <Widget>[
        new Card(
          child: new Container(
            padding: new EdgeInsets.symmetric(horizontal: 16.0, vertical: 18.0),
            child: new Row(
              children: <Widget>[
                new Container(
                  padding: new EdgeInsets.only(right: 24.0),
                  child: new CircleAvatar(
                    backgroundColor: new Color(0xFFF5F5F5),
                    radius: 16.0,
                  )
                ),
                new Container(
                  padding: new EdgeInsets.only(right: 13.0),
                  child: new Text(
                    'Text lar...',
                    overflow: TextOverflow.ellipsis,
                    style: new TextStyle(
                      fontSize: 13.0,
                      fontFamily: 'Roboto',
                      color: new Color(0xFF212121),
                      fontWeight: FontWeight.bold,
                    ),
                  ),
                ),
                new Container(
                  child: new Column(
                    crossAxisAlignment: CrossAxisAlignment.end,
                    children: <Widget>[
                      new Row(
                        children: <Widget>[
                          new Text(
                            'Bill  ',
                            style: new TextStyle(
                              fontSize: 12.0,
                              fontFamily: 'Roboto',
                              color: new Color(0xFF9E9E9E)
                            ),
                          ),
                          new Text(
                            '\$ -999.999.999,95',
                            style: new TextStyle(
                              fontSize: 14.0,
                              fontFamily: 'Roboto',
                              color: new Color(0xFF212121)
                            ),
                          ),
                        ],
                      ),
                      new Row(
                        children: <Widget>[
                          new Text(
                            'Limit  ',
                            style: new TextStyle(
                              fontSize: 12.0,
                              fontFamily: 'Roboto',
                              color: new Color(0xFF9E9E9E)
                            ),
                          ),
                          new Text(
                            'R\$ 900.000.000,95',
                            style: new TextStyle(
                              fontSize: 14.0,
                              fontFamily: 'Roboto',
                              color: new Color(0xFF9E9E9E)
                            ),
                          ),
                        ],
                      ),
                    ]
                  )
                )
              ],
            ),
          )
        ),
      ]
    )
  );
}

Ergebnis:

Geben Sie hier die Bildbeschreibung ein

erwartet:

Geben Sie hier die Bildbeschreibung ein

  • Titel und Inhalt dieser Frage stimmen nicht überein. Dein erwartet Ergebnis zeigt Ellipsenbildung. Allerdings sagt der Titel wrap Und fade. Bitte passen Sie Ihren Titel so an, dass er zu Ihrer eigentlichen Frage passt. Es verwirrt diese Frage: stackoverflow.com/questions/51930754/flutter-wrapping-text

    – Dunkler Trick

    7. Mai 2022 um 7:36 Uhr

Benutzeravatar von Collin Jackson
Collin Jackson

Sie sollten Ihre wickeln Container in einem Flexible Ihre zu lassen Row wissen, dass es für die ok ist Container schmaler sein als seine eigentliche Breite. Expanded wird auch funktionieren.

Bildschirmfoto

Flexible(
  child: new Container(
    padding: new EdgeInsets.only(right: 13.0),
    child: new Text(
      'Text largeeeeeeeeeeeeeeeeeeeeeee',
      overflow: TextOverflow.ellipsis,
      style: new TextStyle(
        fontSize: 13.0,
        fontFamily: 'Roboto',
        color: new Color(0xFF212121),
        fontWeight: FontWeight.bold,
      ),
    ),
  ),
),

  • Ich habe ein ähnliches Problem mit Column. Dieser Ansatz funktioniert bei mir nicht. stackoverflow.com/questions/52206221/…

    – Michael Tedla

    6. September 2018 um 14:44 Uhr


  • Gibt es eine Möglichkeit, dies in Textfield zu implementieren?

    – mangkool

    31. Juli 2019 um 6:51 Uhr

  • wenn Sie möchten, dass es auch den Text wrap_content hat, geben Sie die Eigenschaft fit mit FlexFit.loose an,

    – martinseal1987

    30. Juni 2020 um 15:53 ​​Uhr

  • Dieser Ansatz funktioniert nicht immer. In meinem Fall funktionieren alle TextFlow-Requisiten wie Ellipse oder Fade oder Clip nicht für einen Text in einem InkWell und in einer Zeile und einer weiteren Zeile. Alle Permutationen auf Zeile, Container, Text, Tintenfass, Spalte usw. mit erweitertem und flexiblem FAIL.

    – ombiro

    2. September 2020 um 10:21 Uhr

  • Wenn dieser Ansatz bei der Verwendung von Column für Sie nicht funktioniert, wickeln Sie die Column in Flexible ein

    – Isaac Oluwatemilorun

    26. Februar 2021 um 15:16 Uhr

Benutzeravatar von CopsOnRoad
CopsOnRoad

Ellipse verwenden

Text(
  "This is a long text",
  overflow: TextOverflow.ellipsis,
),

Geben Sie hier die Bildbeschreibung ein


Überblenden verwenden

Text(
  "This is a long text",
  overflow: TextOverflow.fade,
  maxLines: 1,
  softWrap: false,
),

Geben Sie hier die Bildbeschreibung ein


Clip verwenden

Text(
  "This is a long text",
  overflow: TextOverflow.clip,
  maxLines: 1,
  softWrap: false,
),

Geben Sie hier die Bildbeschreibung ein


Notiz:

Wenn Sie verwenden Text in einem Rowkönnen Sie oben setzen Text innen Expanded wie:

Expanded(
  child: AboveText(),
)

  • kann ich hinzufügen, wenn der Text überläuft, dann fügen Sie eine flache Schaltfläche wie …mehr Link hinzu

    – herr.hir

    28. Januar 2019 um 6:33 Uhr

  • Dies funktioniert nicht, wenn Sie Text und ein anderes Widget (z. B. Symbol) in einer Zeile zentriert haben.

    – Lukasz Ciastko

    23. Oktober 2019 um 16:07 Uhr

  • softWrap: false ist genau das, was ich brauchte, danke!

    – kalte Umarmung

    7. Mai 2020 um 12:08 Uhr

  • Hey, was ist, wenn wir zum Beispiel eine neue Seite mit dem überlaufenden Text hinzufügen möchten?

    – Nithin Sai

    5. Juli 2020 um 8:47 Uhr

  • softWrap: false besagt im Wesentlichen, den Effekt horizontal statt vertikal anzuwenden. Ich habe es mit den Ellipsen nicht bemerkt, aber als ich zu Fade wechselte, brauchte ich es, damit es nicht den unteren Teil des Textes verblasst oder einfach umbricht

    – Kilkfoe

    24. September 2020 um 19:32 Uhr

Benutzeravatar von Abdurahman Popal
Abdurahman Popal

Wickeln Sie zuerst Ihre ein Row oder Column In Expanded Widget

Dann

Text(
    'your long text here',
    overflow: TextOverflow.fade,
    maxLines: 1,
    softWrap: false,
    style: Theme.of(context).textTheme.body1,
)

  • Ja, das ist der richtige Weg, zuerst die Spalte in das Expanded zu wickeln, hat wirklich funktioniert! und den Text innerhalb der untergeordneten Spalten zu verwenden.

    – Arif Mustafa

    17. Dezember 2019 um 14:41 Uhr

Benutzeravatar von Jitesh Mohite
Jitesh Mohite

1. Klammer

Beschneiden Sie den überlaufenden Text so, dass er in seinen Container passt.

SizedBox(
          width: 120.0,
          child: Text(
            "Enter Long Text",
            maxLines: 1,
            overflow: TextOverflow.clip,
            softWrap: false,
            style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold, fontSize: 20.0),
          ),
        ),

Ausgang:

Geben Sie hier die Bildbeschreibung ein

2.verblassen

Blenden Sie den überfließenden Text transparent aus.

SizedBox(
          width: 120.0,
          child: Text(
            "Enter Long Text",
            maxLines: 1,
            overflow: TextOverflow.fade,
            softWrap: false,
            style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold, fontSize: 20.0),
          ),
        ), 

Ausgang:

Geben Sie hier die Bildbeschreibung ein

3.Ellipse

Verwenden Sie Auslassungspunkte, um anzuzeigen, dass der Text übergelaufen ist.

SizedBox(
          width: 120.0,
          child: Text(
            "Enter Long Text",
            maxLines: 1,
            overflow: TextOverflow.ellipsis,
            softWrap: false,
            style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold, fontSize: 20.0),
          ),
        ),

Ausgang:

Geben Sie hier die Bildbeschreibung ein

4.sichtbar

Rendern Sie überlaufenden Text außerhalb seines Containers.

SizedBox(
          width: 120.0,
          child: Text(
            "Enter Long Text",
            maxLines: 1,
            overflow: TextOverflow.visible,
            softWrap: false,
            style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold, fontSize: 20.0),
          ),
        ),

Ausgang:

Geben Sie hier die Bildbeschreibung ein

Benutzeravatar von Yauhen Sampir
Yauhen Sampir

Sie können diesen ausgeschnittenen Code verwenden, um Text mit Auslassungspunkten anzuzeigen

Text(
    "Introduction to Very very very long text",
    maxLines: 1,
    overflow: TextOverflow.ellipsis,
    softWrap: false,
    style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold),
),

  • Bitte fügen Sie auch eine Beschreibung dieses Codes bei, um zu erklären, wie er die Frage beantwortet.

    – jkdev

    28. November 2018 um 20:04 Uhr

Benutzeravatar von Cenk YAGMUR
Cenk YAGMUR

Du kannst es so machen

Expanded(
   child: Text(
   'Text',
   overflow: TextOverflow.ellipsis,
   maxLines: 1
   )
)

  • Bitte fügen Sie auch eine Beschreibung dieses Codes bei, um zu erklären, wie er die Frage beantwortet.

    – jkdev

    28. November 2018 um 20:04 Uhr

Benutzeravatar von Preety Kumari
Preety Kumari

Sie können das tun, indem Sie zuerst Ihre einwickeln Column innen Flexible oder Expanded und dann verwenden Text wie gewohnt und es wird automatisch eingepackt.

Container(
  child: Row(
    children: [
      Flexible(
        child: Column(
          children: [
            Text("This text is so long and long and long and long and long and that's why it is not wrapping to next line.")
          ]
        ),
      )
    ],
  ),
),

Screenshot mit umbrochenem Text

  • Bist du sicher, dass das die Ausgabe ist?

    – Francisca Mkina

    9. Januar 2022 um 19:23 Uhr

  • @FranciscaMkina Ya, es ist die Ausgabe für die text Sie sehen unter dem Bild, wenn ich auf meinem Gerät getestet habe.

    – Preety Kumari

    19. Januar 2022 um 17:51 Uhr


  • Was ich sehe, ist, dass Sie die Abmessungen dieses einzelnen Elements beibehalten müssen, Sie müssen Ihren Text auf eine bestimmte Länge beschränken. Wenn Sie den sehr langen Text eingeben, wird dieser eine Artikel lang wie eine Schlange.

    – Francisca Mkina

    20. Januar 2022 um 15:30 Uhr

1449520cookie-checkFlutter – Text bei Überlauf umbrechen, wie Ellipse einfügen oder verblassen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy