Как встраивать содержимое файла Microsoft Word в приложение-флаттер, не переписывая его с помощью Rich text - PullRequest
1 голос
/ 23 января 2020

Я разрабатываю приложение флаттера для Android и IOS, я хочу встроить содержимое файла Microsoft Word .docx или .doc, предоставленного клиентом, для просмотра на экране about приложение.

Файл длинный, и я не могу переписать его, используя Виджет расширенного текста . файл прост и не содержит изображений.

Я провел небольшое исследование и нашел решение, которое говорит о преобразовании файла в pdf и встраивании представления в формате pdf. Мне это тоже не понравилось, потому что контент не будет отображаться как часть приложения и разделители страниц все еще будут там.

1 Ответ

1 голос
/ 25 января 2020

После долгих исследований я обнаружил пакет flutter_widget_from_ html, который представляет собой удивительный пакет, который преобразует ваш простой HTML в виджет флаттера и дает вам возможность использовать его в качестве веб-просмотра или просто для рендеринг stati c Html.

нам нужно добавить этот пакет в pubspec.yaml, пожалуйста, всегда устанавливайте последнюю версию

dependencies:
  flutter_widget_from_html: ^0.3.2+1

Задача Теперь нужно преобразовать слово document в простой HTML без js или внешних css файлов

Мне удалось найти бесплатный сайт https://wordhtml.com/, который позволяет вставлять ваши Содержимое файла Word в свой редактор, и он преобразует его непосредственно в HTML

. Последний шаг - скопировать содержимое с вкладки HTML и вставить его в виджет

const kHtml = """
<h1>Heading</h1>
<p>A paragraph with <strong>strong</strong> <em>emphasized</em> text.</p>
<ol>
  <li>List item number one</li>
  <li>
    Two
    <ul>
      <li>2.1 (nested)</li>
      <li>2.2</li>
    </ul>
  </li>
  <li>Three</li>
</ol>
<p>Thank you</p>
""";

class HelloWorldScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) => Scaffold(
        appBar: AppBar(
          title: Text('HelloWorldScreen'),
        ),
        body: HtmlWidget(
          kHtml,
          webView: false,
        ),
      );
}
* 1026. * В моем случае я хочу, чтобы содержимое прокручивалось, поэтому я окружил HtmlWidget списком просмотра
class HelloWorldScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) => Scaffold(
        appBar: AppBar(
          title: Text('HelloWorldScreen'),
        ),
        body: ListView(
          shrinkWrap: true,
          children: <Widget>[
            HtmlWidget(
                kHtml,
              ),
          ],
        )
      );
}
...