Как загрузить HTML из строки на локальном сервере дротиков? - PullRequest
0 голосов
/ 05 мая 2020

Привет, в настоящее время я загружаю файл HTML из ресурсов на локальном сервере дротиков в приложении Flutter, и он отлично работает, даже загружая данные из других связанных скриптов и стилей.

Вот мой код.

  HttpServer.bind('127.0.0.1', _port, shared: true).then((server) {
    print('Server running on http://localhost:' + _port.toString());

    this._teXViewServer = server;

    server.listen((HttpRequest httpRequest) async {
      request(httpRequest);
      var body = List<int>();
      var path = httpRequest.requestedUri.path;
      path = (path.startsWith('/')) ? path.substring(1) : path;
      path += (path.endsWith('/')) ? 'index.html' : '';

      try {
        body = (await rootBundle.load("path/to/index.html")).buffer.asUint8List();
      } catch (e) {
        //    print(e.toString());
        httpRequest.response.close();
        return;
      }

      var contentType = ['text', 'html'];
      if (!httpRequest.requestedUri.path.endsWith('/') &&
          httpRequest.requestedUri.pathSegments.isNotEmpty) {
        var mimeType = lookupMimeType(httpRequest.requestedUri.path,
            headerBytes: body);
        if (mimeType != null) {
          contentType = mimeType.split('/');
        }
      }

      httpRequest.response.headers.contentType =
          new ContentType(contentType[0], contentType[1], charset: 'utf-8');
      httpRequest.response.add(body);
      httpRequest.response.close();
    });
    completer.complete();
  });

Как я могу выполнить sh это с помощью дротика? Я пробовал несколько подходов, но они не работают должным образом. Я попытался преобразовать строку в Unit8List и попытался загрузить ее, но она не работает.

body = stringTOUnit8List("HTML_code_string");

Uint8List stringTOUnit8List(String source) {
  // String (Dart uses UTF-16) to bytes
  var list = new List<int>();
  source.runes.forEach((rune) {
    if (rune >= 0x10000) {
      rune -= 0x10000;
      int firstWord = (rune >> 10) + 0xD800;
      list.add(firstWord >> 8);
      list.add(firstWord & 0xFF);
      int secondWord = (rune & 0x3FF) + 0xDC00;
      list.add(secondWord >> 8);
      list.add(secondWord & 0xFF);
    } else {
      list.add(rune >> 8);
      list.add(rune & 0xFF);
    }
  });
  Uint8List bytes = Uint8List.fromList(list);
  return bytes;
}

Я хочу загрузить связанные скрипты и стили из ресурсов. Просто хочу загрузить index. html из String.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...