我如何使文本小部件将长文本包装成多行?

问题描述 投票:4回答:4

我正在使用Stepper小部件,并且正在使用Text小部件作为标题参数。

我用于文本的字符串很长,我希望将其包装成多行。我该怎么办?

这是我用来构建此代码:

  @override
  Widget build(BuildContext context) => Scaffold(
        appBar: AppBar(
          title: Text(widget.title),
        ),
        body: Stepper(
          currentStep: currentStepIndex,
          onStepContinue: () => setState(() => currentStepIndex++),
          onStepTapped: (int index) => setState(() => currentStepIndex = index),
          steps: questions
              .map((String q) => Step(
                    title: Text(q),
                    content: QuestionWidget(),
                  ))
              .toList(),
        ),
      );

这是当前的样子:enter image description here

dart flutter
4个回答
8
投票

这可能不是最好的解决方案,但这是唯一对我有用的方法。

用容器包围文本小部件,并根据屏幕大小设置其最大宽度。

屏幕尺寸-84似乎是避免溢出的最小值。我已经在2种设备上对其进行了测试,并且工作正常。

steps: widget.questions
  .map(
    (String q) => Step(
      title: new Container(
        constraints: new BoxConstraints(
          maxWidth: MediaQuery.of(context).size.width - 84),
        child: Text(q),
      ),
      content: new Container(),
    ),
  )
  .toList(),

8
投票

如果您想多行,请使用flexible

Flexible (child: Text('Some text here'))

1
投票

这是softWrap功能

child: Text("text",softWrap: true,),

-4
投票

您可以利用内置的Expanded Widget来占用可用空间,如果水平/垂直没有可用空间,则切换为多行,这主要取决于父窗口小部件。如果展开的窗口小部件在行下,则将水平占用可用空间;如果其展开在列下,则将垂直占用可用空间。这是显示输出差异的小代码片段。

没有展开它会破坏屏幕

    Center(
       child: Row(
           mainAxisAlignment: MainAxisAlignment.center,
           children: <Widget>[
             Text( // without expanded Widget breaks on right
                 'Hello World This is some long text,this will break the screen for sure')
           ]),
     );

使用扩展的小部件切换到多行

   Center(
        child: Row(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Expanded(
                child: Text(
                    'Hello World This is some long text,this wont break screen trust me,Some More Long tesxt a little more and more and more  and more......                     '),
              )
            ]),
      ));

使用或不使用扩展小部件在此处输出

© www.soinside.com 2019 - 2024. All rights reserved.