Как заставить текст расти вертикально И обрезать? - PullRequest
2 голосов
/ 28 апреля 2019

Мой код прост:

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        home: Scaffold(
          appBar: AppBar(),
          body: Container(
              height: 60,
              color: Colors.orangeAccent,
              child: Row(
                children: [
                  Expanded(
                    child: Text(
                      'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.',
                      overflow: TextOverflow.ellipsis,
                    ),
                  ),
                ],
              )),
        ));
  }
}

Он производит следующее:

enter image description here

Чего я хочу достичьэто:

enter image description here

Я смог сделать это, добавив maxLines: 3 к Text, но, очевидно, жесткое кодирование maxLines не являетсяoptions.

Я хочу, чтобы Text заполнил всю высоту родительского элемента и при необходимости обрезал многоточием.

1 Ответ

1 голос
/ 29 апреля 2019

что по этому поводу

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        home: Scaffold(
      appBar: AppBar(),
      body: Container(
          height: 60,
          color: Colors.orangeAccent,
          child: Row(
            children: [
              Expanded(
                child: LayoutBuilder(
                  builder: (context, constraints) {
                    return Text(
                      'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.',
                      overflow: TextOverflow.ellipsis,
                      maxLines: (constraints.maxHeight / Theme.of(context).textTheme.body1.fontSize).floor() - 1,
                    );
                  },
                ),
              ),
            ],
          )),
    ));
  }
}
...