自动换行不适用于长文本

时间:2019-10-16 14:02:33

标签: flutter

这是我的小部件:

  return Card(
      child: Container(
    height: 150,
    child: Row(
      children: <Widget>[
        Placeholder(
          fallbackHeight: 100,
          fallbackWidth: 100,
        ),
        Container(
          width: _deviceHeight,
          color: Colors.red,
          child: Column(
            mainAxisSize: MainAxisSize.max,
            children: <Widget>[
              Flexible(
                  child: Text(
                "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasssssaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
                overflow: TextOverflow.ellipsis,
                maxLines: 4,
              )),

              // Expanded(flex: 8, child: Text("bbb")),
              Flexible(child: Text("bbb")),
              // Flexible(child: Text("aaa")),
            ],
          ),
        )
      ],
    ),
  ));

我希望文本会放在新行上,但是我越来越溢出:

enter image description here

2 个答案:

答案 0 :(得分:1)

Container包裹内部Expanded,以为其提供可用的父约束,否则Container具有无限的height并会导致溢出(因为您在风景中。)

 Expanded(
     child: Container(
          width: _deviceHeight,
          color: Colors.red,
          child: Column(
  ...

答案 1 :(得分:0)

您可以将... static int sampleRate = 8000; static int bufferLen = minBufSize * 20; public static void main(String args[]) throws Exception { DatagramSocket serverSocket = new DatagramSocket(port); byte[] receiveData = new byte[bufferLen]; format = new AudioFormat(sampleRate, 16, 1, true, false); dataLineInfo = new DataLine.Info(SourceDataLine.class, format); sourceDataLine = (SourceDataLine) AudioSystem.getLine(dataLineInfo); sourceDataLine.open(format); sourceDataLine.start(); FloatControl volumeControl = (FloatControl) sourceDataLine.getControl(FloatControl.Type.MASTER_GAIN); volumeControl.setValue(volumeControl.getMaximum()); while (status == true) { DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); serverSocket.receive(receivePacket); toSpeaker(receivePacket.getData(), receivePacket.getLength()); } sourceDataLine.drain(); sourceDataLine.close(); } public static void toSpeaker(byte soundbytes[], int length) { try { sourceDataLine.write(soundbytes, 0, length); } catch (...) {...} } ... 的第二个元素包装为AudioFormat.ENCODING_PCM_16BIT,如下所示:

Row

Flexible内,您需要Row( children: <Widget>[ Placeholder(..), Flexible( child: Container( color: Colors.red, child: Column(... 保持宽度,而Row的宽度要灵活。

编辑:并且您应该删除Placeholder的宽度,因为它的宽度很灵活,并且需要尽可能多的空间适合屏幕。