计算每个列表文字的长度

  List<double> itemWidths = [];

 // 计算每个列表项的宽度
  void calculateItemWidths() {
    // 清空之前计算的宽度
    itemWidths.clear();
    update();

    // 创建一个 TextPainter 实例来计算文本的宽度
    final textPainter = TextPainter(
      textDirection: TextDirection.ltr, // 设置文本的方向为从左到右
    );

    // 遍历每个 item 以计算其宽度
    for (var item in homeController.answerListShow) {
      // 设置 TextSpan,定义要计算的文本及其样式
      textPainter.text = TextSpan(
        text:
            "${item.questionYw}Q ${homeController.questionIndex + 1}", // 需要测量的文本内容
        style: TextStyle(
            fontSize: ScreenAdapter.fontSize(30)), // 设置文本的样式,这里是字体大小为 30
      );
      // 布局计算文本的实际宽度
      textPainter.layout();

      // 计算文本宽度,并加上额外的 20 像素的边距
      // 这个边距通常用于保证文本不紧贴容器的边缘
      itemWidths.add(textPainter.width + ScreenAdapter.width(160));
    }
  }

 

posted on 2024-08-11 22:25  鲤斌  阅读(45)  评论(0编辑  收藏  举报