Estou tentando criar uma linha em que o texto central tenha um tamanho máximo e, se o conteúdo do texto for muito grande, ele se ajusta ao tamanho.
Insiro a TextOverflow.ellipsis
propriedade para encurtar o texto e inserir os pontos triplos, ...
mas não está funcionando.
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)
),
),
],
),
]
)
)
],
),
)
),
]
)
);
}
resultado:
esperado:
flutter
dart
flutter-layout
rafaelcb21
fonte
fonte
Usando reticências
Usando Fade
Usando Clip
Nota:
Se você estiver usando
Text
dentro de umRow
, pode colocar acimaText
dentroExpanded
como:fonte
softWrap: false
é exatamente o que eu precisava, obrigado!Você pode usar este código cortado para mostrar o texto com reticências
fonte
Você pode fazer assim
fonte
primeiro, envolva seu
Row
ouColumn
em um widgetFlexible
ou, emExpanded
seguidafonte
Encapsulamento cujos elementos filhos estão em uma linha ou coluna, agrupe sua coluna ou linha é novo Flexível ();
https://github.com/flutter/flutter/issues/4128
fonte
Uma maneira de corrigir um estouro de um widget de texto dentro de uma linha se, por exemplo, uma mensagem de bate-papo puder ser uma linha muito longa. Você pode criar um Container e um BoxConstraint com um maxWidth nele.
fonte
Basta envolver dentro de um widget que pode ter uma largura específica para funcionar ou assumirá a largura do contêiner pai.
fonte
Acho que o Container pai precisa receber um maxWidth do tamanho adequado. Parece que a caixa de texto irá preencher qualquer espaço fornecido acima.
fonte
Dependendo da sua situação, acho que essa é a melhor abordagem a seguir.
fonte
Se você simplesmente colocar o texto como filho (s) de uma coluna, esta é a maneira mais fácil de quebrar o texto automaticamente. Supondo que você não tenha nada mais complicado acontecendo. Nesses casos, acho que você criaria seu contêiner com o tamanho que achar melhor e colocaria outra coluna dentro e depois seu texto. Isso parece funcionar bem. Os contêineres querem diminuir para o tamanho de seu conteúdo, e isso parece entrar em conflito natural com a embalagem, que requer mais esforço.
fonte
Existem muitas respostas, mas haverá mais algumas observações.
1. clipe
Corte o texto transbordando para corrigir seu contêiner.
Resultado:
2. desvanecer
Fade o texto transbordando para transparente.
Resultado:
3. elipse
Use reticências para indicar que o texto transbordou.
Resultado:
4.visível
Renderize o texto transbordando fora de seu contêiner.
Resultado:
fonte
Experimentar:
Isso vai mostrar
OVER FLOW
. Se houver um estouro, ele será tratado.fonte