Estoy tratando de crear una línea en la que el texto central tenga un tamaño máximo y, si el contenido del texto es demasiado grande, se ajusta al tamaño.
Inserto la TextOverflow.ellipsis
propiedad para acortar el texto e insertar los puntos triples ...
pero no funciona.
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
fuente
fuente
Usar puntos suspensivos
Usando Fade
Usando Clip
Nota:
Si está utilizando
Text
dentro de aRow
, puede poner arribaText
dentroExpanded
como:fuente
softWrap: false
es exactamente lo que necesitaba, gracias!Puede utilizar este código recortado para mostrar texto con puntos suspensivos
fuente
Puedes hacerlo asi
fuente
primero, envuelve tu
Row
oColumn
en un widgetFlexible
oExpanded
luegofuente
Envolviendo cuyos elementos secundarios están en una fila o columna, envuelva su columna o fila es nueva Flexible ();
https://github.com/flutter/flutter/issues/4128
fuente
Una forma de arreglar un desbordamiento de un widget de texto dentro de una fila si, por ejemplo, un mensaje de chat puede ser una línea realmente larga. Puede crear un contenedor y un BoxConstraint con un maxWidth en él.
fuente
Simplemente envuelva dentro de un widget que puede tomar un ancho específico para que funcione o asumirá el ancho del contenedor principal.
fuente
Creo que el contenedor principal debe recibir un ancho máximo del tamaño adecuado. Parece que el cuadro de texto llenará cualquier espacio que se le dé arriba.
fuente
Dependiendo de su situación, creo que este es el mejor enfoque a continuación.
fuente
Si simplemente coloca el texto como hijo (s) de una columna, esta es la forma más fácil de ajustar el texto automáticamente. Suponiendo que no tenga nada más complicado. En esos casos, creo que crearía su contenedor del tamaño que mejor le parezca y pondría otra columna dentro y luego su texto. Esto parece funcionar muy bien. Los contenedores quieren encogerse al tamaño de su contenido, y esto parece naturalmente entrar en conflicto con el envoltorio, que requiere más esfuerzo.
fuente
Hay muchas respuestas, pero alguna observación más.
1. clip
Recorta el texto desbordado para arreglar su contenedor.
Salida:
2.desvanecimiento
Difumina el texto desbordado para que sea transparente.
Salida:
3.elipsis
Use una elipsis para indicar que el texto se ha desbordado.
Salida:
4.visible
Renderiza texto desbordado fuera de su contenedor.
Salida:
fuente
Tratar:
Esto se mostrará
OVER FLOW
. Si hay un desbordamiento, se manejará.fuente