Повернутый текст не заполнен свободным пространством - PullRequest
1 голос
/ 15 октября 2019

У меня есть контейнер, содержащий некоторый текст, и когда текст находится в обычном горизонтальном положении, он разбивается на 2 строки, так как он не помещается в одну строку, что я понимаю:

Container(
                    width: 30,
                    height: 250,
                    color: Color.fromRGBO(254, 242, 0, 1),
                    child: Center(
                      child: Text(
                        "dB per H",
                        style: TextStyle(
                          fontSize: 12,
                          color: Colors.black,
                        ),
                      ),
                    ),
                  ),

Это будетотображается как:

enter image description here

Теперь я поворачиваю текст, чтобы он отображался в вертикальном направлении, где в контейнере достаточно места. Однако он все еще разделен на 2 строки, когда ожидается, что теперь он будет соответствовать без проблем.

Как это исправить?

Container(
                    width: 30,
                    height: 250,
                    color: Color.fromRGBO(254, 242, 0, 1),
                    child: Center(
                      child: Transform.rotate(
                        angle: -pi / 2,
                        child: Text(
                          "dB per H",
                          style: TextStyle(
                            fontSize: 12,
                            color: Colors.black,
                          ),
                        ),
                      ),
                    ),
                  ),

Это будет отображаться как:

enter image description here

Ответы [ 5 ]

1 голос
/ 15 октября 2019

попробуйте

new RotationTransition(
  turns: new AlwaysStoppedAnimation(90 / 360),
  child: Container(
    width: 250,
    height: 60,
    color: Color.fromRGBO(254, 242, 0, 1),
    child: new Center(
      child: new Text("Lorem ipsum"),
    ),
  ),
),
1 голос
/ 15 октября 2019
import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Title')),
        body: Container(
          width: 30,
          height: 250,
          color: Color.fromRGBO(254, 242, 0, 1),
          child: Center(
            child: RotatedBox(
              quarterTurns: 3,
              child: Text(
                "dB per H",
                textAlign: TextAlign.center,
                style: TextStyle(
                  fontSize: 12,
                  color: Colors.black,
                ),
              ),
            ),
          ),
        ),
      ),
    );
  }
}

enter image description here

0 голосов
/ 15 октября 2019

Попробуйте это

Column(
    children: <Widget>[
      Container(
        height: 250,
        child: Row(
          children: <Widget>[
            Transform.rotate(
              angle: -pi / 2,
              child: Container(
                width: 250,
                color: Color.fromRGBO(254, 242, 0, 1),
                child: Row(
                  mainAxisAlignment: MainAxisAlignment.center,
                  children: <Widget>[
                    Text(
                      "dB per H",
                      style: TextStyle(
                        fontSize: 12,
                        color: Colors.black,
                      ),
                    ),
                  ],
                ),
              ),
            ),
          ],
        ),
      ),
    ],
  ),
0 голосов
/ 15 октября 2019

Вы можете использовать height: double.infinity;

enter image description here

return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Title')),
        body: Container(
          width: 30,
          height: double.infinity,
          color: Color.fromRGBO(254, 242, 0, 1),
          child: Center(
            child: RotatedBox(
              quarterTurns: 3,
              child: Text(
                "dB per H",
                textAlign: TextAlign.center,
                style: TextStyle(
                  fontSize: 12,
                  color: Colors.black,
                ),
              ),
            ),
          ),
        ),
      ),
    );
0 голосов
/ 15 октября 2019

Итак, сначала визуализируется дочерний элемент (определяется высота и ширина), затем виджет Transform применяет преобразование, основанное на этом. В этом случае его поворачивают на pi/2.
Так как, тем не менее, высота и ширина ребенка были зафиксированы до этого, вращение не меняет этого. Вы можете попробовать поместить текст либо в гибкий виджет, либо в контейнер с фиксированной высотой, чтобы увидеть желаемый результат. Вот пример с контейнерным подходом:

Container(
              width: 30,
              height: 250,
              color: Color.fromRGBO(254, 242, 0, 1),
              child: Center(
                child: Transform.rotate(
                  angle: -pi / 2,
                  child: Container(
                    height: 50,
                    child: Text(
                      "dB per H",
                      style: TextStyle(
                        fontSize: 12,
                        color: Colors.black,
                      ),
                    ),
                  ),
                ),
              ),
            ),
...