我想在建立之前得到一个固定宽度的小部件高度。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我想在建立之前得到一个固定宽度的小部件高度。相关的知识,希望对你有一定的参考价值。

我有一个问题,要在构建之前得到一个widget的估计高度,问题是这样的,当内容很短时,它需要在一张卡片中显示,但如果内容很长,它需要在2张或更多的卡片中显示,卡片将像Tinder刷卡一样,所以我必须在构建之前计算卡片的数量。

ListView.builder(
    itemCount: 1 // count needs to be based on text length
    itemBuilder: (BuildContext context, int index) =>
        Card(child: Text('Some long message'))
)

我把它简单地做成了一个文本的Card chile,但实际上它是一个复杂的widget,有几个文本和图片,所以我需要计算需要多少个固定高度的卡片才能全部显示。

答案

从你的例子来看,这是一个解决方案。我在空格处拆分长文本,并创建一个字符串列表,然后用该列表填充Listview。

  String text = 'Very very long text';
  @override
  Widget build(BuildContext context) {
    List<String> list = (text.split(' '));
    return Scaffold(
        body: ListView.builder(
      itemCount: list.length,
      itemBuilder: (BuildContext context, int index) => Card(
        child: Text(list[index]),
      ),
    ));
  } 

输出

enter image description here

以上是关于我想在建立之前得到一个固定宽度的小部件高度。的主要内容,如果未能解决你的问题,请参考以下文章

无法获取小部件的高度/宽度 - gtkmm

如何在给定宽度的小部件中移动文本

设计 Android 小部件的宽度和高度

如何在tkinter中找出当前的小部件大小?

QWidget 调整大小问题

Flutter - 可滚动页面中的列表视图