getComponents static method

List<Widget> getComponents(
  1. GetComponentsParams params
)

Implementation

static List<Widget> getComponents(GetComponentsParams params) {
  List<Widget> pageWidgets = [];
  if (params.component.runtimeType.toString() == "Paragraph") {
    List<MsTextSpan> textSpans = params.component.textSpans;
    List<MsImage> images = params.component.images;
    List<InlineSpan> paragraphWidget = [];
    for (int k = 0; k < (textSpans.length + images.length); k++) {
      MsTextSpan? textSpan = textSpans.firstWhereOrNull((span) {
        return span.pSeqNo == k;
      });
      MsImage? image = images.firstWhereOrNull((img) {
        return img.pSeqNo == k;
      });
      if (textSpan != null) {
        paragraphWidget.add(getTextSpan(textSpan, params.stylesList));
      }
      if (image != null) {
        paragraphWidget.add(WidgetSpan(
            child: Image.file(
          File(image.imagePath),
          width: image.cx / 12700,
          height: image.cy / 12700,
        )));
      }
    }
    pageWidgets.addAll(getRichText(params.component, paragraphWidget, params.stylesList, params.wordDocument));
  } else if (params.component.runtimeType.toString() == "MsTable") {
    MsTable msTable = params.component;

    String tableStyle = getTableStyle(msTable, params.stylesList);
    String htmlString = "<html><body>";

    htmlString = "$htmlString<table style='$tableStyle ; border-collapse: collapse;'>";
    for (int k = 0; k < msTable.rows.length; k++) {
      String rowStyle = getRowStyle(msTable, params.stylesList, msTable.rows[k].isFirstRow, msTable.rows[k].isLastRow);
      htmlString = "$htmlString<tr style='$rowStyle ; border-collapse: collapse;'>";
      String colSpan = "0";
      if (msTable.rows[k].gridSpan != null) {
        colSpan = msTable.rows[k].gridSpan.toString();
      }
      for (int l = 0; l < msTable.rows[k].cells.length; l++) {
        String cellStyle = getCellStyle(msTable, params.stylesList, msTable.rows[k].isFirstRow, msTable.rows[k].isLastRow,
            msTable.rows[k].isFirstCol, msTable.rows[k].isLastCol);
        htmlString = "$htmlString<td style='$cellStyle ; border-collapse: collapse;padding: 5px;' colSpan=$colSpan>";
        htmlString = htmlString + msTable.rows[k].cells[l].cellText;
        htmlString = "$htmlString</td>";
      }

      htmlString = "$htmlString</tr>";
    }

    htmlString = "$htmlString</table>";

    htmlString = '$htmlString</body></html>';
    pageWidgets.add(HtmlWidget(htmlString));
  }
  return pageWidgets;
}