Кроссплатформенный веб-сайт и мобильная версия Fluter

Я пытаюсь создать кросс-платформу для Интернета и мобильных устройств с буферами протоколов. Итак, в моем коде у меня есть функция для входа в систему, и мне нужно импортировать grpc_web:

import 'package:flutter/foundation.dart';
import 'package:grpc/grpc.dart';
import 'package:dsu_site/models/user.pb.dart';
import 'package:dsu_site/models/user.pbgrpc.dart' as grpc;
import 'package:grpc/grpc_web.dart' as grpc_web;
import 'package:flutter/services.dart';
import 'dart:convert';



Future<Utilizador> login({String username, String password}) async {
  Utilizador user;

  if (kIsWeb) {
    final channel =
        grpc_web.GrpcWebClientChannel.xhr(Uri.parse('https://pl1772:8443'));
    final service = grpc.UtilizadoresServiceClient(
      channel,
    );

    var request = Auth();

    request.username = username;
    request.password = password;

    try {
      user = await service.login(request);
    } catch (e) {
      print('Error in login form: $e');
      user = grpc.Utilizador();
    }
    return user;
  }

  final caCert = await rootBundle.loadString('certs/server.crt');

  final ClientChannel channel = ClientChannel(
    'localhost',
    port: 9002,
    options: ChannelOptions(
      connectionTimeout: Duration(seconds: 5),
      credentials: ChannelCredentials.secure(
        authority: 'localhost',
        certificates: utf8.encode(caCert),
      ),
    ),
  );

  final service = grpc.UtilizadoresServiceClient(channel);

  var request = Auth();

  request.username = username;
  request.password = password;

  try {
    user = await service.login(request);
  } catch (e) {
    print('Error in login form: $e');
    user = grpc.Utilizador();
  }

  return user;
}

Проблема в том, что когда я запускаю это для Интернета (используя Chrome), все в порядке, но для мобильных устройств я получаю следующие ошибки:

[38; 5; 244m [39; 49m [38; 5; 248m # 3
FrontendCompiler.compile (package: frontend_server / frontend_server.dart: 554: 15) [39; 49m

  • BrowserClient находится из пакета: http / src / browser_client.dart ('../../.pub-cache/hosted/pub.dartlang.org/http-0.12.2/lib/src/browser_client.dart '). Попробуйте изменить имя на имя существующего метода или определить метод с именем HttpRequest. var xhr = HttpRequest (); ^^^^^^^^^^^ ../../.pub-cache/hosted/pub.dartlang.org/http-0.12.2/lib/src/browser_client.dart:58:42: Ошибка: Метод Blob не определен для класса BrowserClient.
  • BrowserClient находится из пакета: http / src / browser_client.dart ('../../.pub-cache/hosted/pub.dartlang.org/http-0.12.2/lib/src/browser_client.dart '). Попробуйте изменить имя на имя существующего метода или определить метод с именем «Blob». var blob = xhr.response as Blob ?? Blob ([]); ^^^^ ../../.pub-cache/hosted/pub.dartlang.org/http-0.12.2/lib/src/browser_client.dart:59:20: Ошибка: метод FileReader isn t определен для класса BrowserClient.
  • BrowserClient находится из пакета: http / src / browser_client.dart ('../../.pub-cache/hosted/pub.dartlang.org/http-0.12.2/lib/src/browser_client.dart '). Попробуйте изменить имя на имя существующего метода или определить метод с именем FileReader. var reader = FileReader (); ^^^^^^^^^^ Необработанное исключение: FileSystemException (uri = org-dartlang-untranslatable-uri: dart% 3Ahtml; message = StandardFileSystem поддерживает только URI file: * и data: *) [38; 5; 248m # 0 StandardFileSystem.entityForUri (пакет: front_end / src / api_prototype / standard_file_system.dart: 33: 7) [39; 49m [38; 5; 248m # 1 asFileUri (пакет: vm / kernel_front_end.dart: 599: 37) [39; 49m [38; 5; 248m # 2
    writeDepfile (пакет: vm / kernel_front_end.dart: 739: 21) [39; 49m
  • пожалуйста, посмотрите этот ответ stackoverflow.com/a/58713064/6813907

[38; 5; 244m [39; 49m [38; 5; 248m # 4
_FlutterFrontendCompiler.compile (package: flutter_frontend_server / server.dart: 43: 22) [39; 49m

[38; 5; 248m # 5 стартер (package: flutter_frontend_server / server.dart: 180: 27) [39; 49m [38; 5; 248m # 6 main (file: /// b / s / w / ir / cache /builder/src/flutter/flutter_frontend_server/bin/starter.dart:13:30)[39;49m

[38; 5; 244m # 7 _startIsolate. (dart: изолят-патч / изолят_патч.dart: 299: 32) [39; 49м [38; 5; 244м # 8
_RawReceivePortImpl._handleMessage (dart: изолят-патч / изолят_патч.dart: 168: 12) [ 39; 49м

ОШИБКА: сбой при сборке за исключением.

Где: строка сценария '/home/sfm1977/flutter/packages/flutter_tools/gradle/flutter.gradle': 900

  • Что пошло не так: не удалось выполнить задачу ': app: compileFlutterBuildDebug'.

  • Процесс 'command' / home / sfm1977 / flutter / bin / flutter 'завершен с ненулевым значением выхода 1

Попробуйте: запустить с параметром --stacktrace, чтобы получить трассировку стека. Запустите с параметром --info или --debug, чтобы получить больше результатов журнала. Запустите с --scan, чтобы получить полную информацию.

  • Получите дополнительную помощь на странице https://help.gradle.org

  • BUILD FAILED через 10 секунд Исключение: задача Gradle AssemblyDebug завершилась неудачно с кодом выхода 1 Выход (sigterm)

Можно ли запускать два выпуска одновременно, веб-версию и мобильную версию?

'XhrClientConnection' находится из 'package: grpc / src / client / transport / xhr_transport.dart' ('../../.pub-cache/hosted/pub.dartlang.org/grpc-2.7.0/lib/src /client/transport/xhr_transport.dart '). Попробуйте изменить имя на имя существующего метода или определить метод с именем HttpRequest. HttpRequest createHttpRequest () = ›HttpRequest (); ^^^^^^^^^^^ ../../.pub-cache/hosted/pub.dartlang.org/grpc-2.7.0/lib/src/client/transport/xhr_transport.dart:200: 11: Ошибка: «HttpRequest» не является типом. финальный запрос HttpRequest = createHttpRequest (); ^^^^^^^^^^^ ../../.pub-cache/hosted/pub.dartlang.org/http-0.12.2/lib/src/browser_client.dart:58:34: Ошибка: «Клякса» - это не тип. var blob = xhr.response as Blob ?? Blob ([]); ^^^^ ../../.pub-cache/hosted/pub.dartlang.org/http-0.12.2/lib/src/browser_client.dart:46:15: Ошибка: метод 'HttpRequest' isn ' t определен для класса BrowserClient.


person Sérgio Marques    schedule 05.11.2020    source источник
comment
Слишком много для меня, я не понимаю код. Я предпочитаю делать два приложения. Спасибо   -  person mohandesR    schedule 05.11.2020
comment
Я сделал это спокойно и терпеливо. Спасибо   -  person Sérgio Marques    schedule 05.11.2020
comment
Запуск flutter pub в dsu_site ... Запуск lib / main.dart на sdk gphone x86 в режиме отладки ... lib / main.dart Недопустимый файл деплоя: /home/sfm1977/Programming/dsu_site/.dart_tool/flutter_build/efe6e5ca256642d6c0c0ca767 .d Неверный файл деплоя: /home/sfm1977/Programming/dsu_site/.dart_tool/flutter_build/efe6e5ca256642d6c0ca767b5f0e6af5/kernel_snapshot.d ../../.pub-cache/hosted.org/pub.0g.dartlang /src/client/transport/xhr_transport.dart:17:8: Ошибка: не найдено: 'dart: html' import 'dart: html'; ^ ../../.pub-cache/hosted/pub.dartlang.org/http-0.12.2/lib/src/browser_client.dart:6:8: Ошибка: не найдено: 'dart: html' import ' dart: html '; ^ ../../.pub-cache/hosted/pub.dartlang.org/grpc-2.7.0/lib/src/client/transport/xhr_transport.dart:40:9: Ошибка: тип «HttpRequest» не найден . final HttpRequest _request; ^^^^^^^^^^^ ../../.pub-cache/hosted/pub.dartlang.org/grpc-2.7.0/lib/src/client/transport/xhr_transport.dart:168: 27: Ошибка: тип «HttpRequest» не найден. void _initializeRequest (запрос HttpRequest, Map ‹String, String› метаданные) {^^^^^^^^^^^ ../../.pub-cache/hosted/pub.dartlang.org/grpc-2.7.0 /lib/src/client/transport/xhr_transport.dart:181:3: Ошибка: тип «HttpRequest» не найден. HttpRequest createHttpRequest () = ›HttpRequest (); ^^^^^^^^^^^ ../../.pub-cache/hosted/pub.dartlang.org/http-0.12.2/lib/src/browser_client.dart:34:18: Ошибка: HttpRequest - это не тип. финальный _xhrs = {}; ^^^^^^^^^^^ ../../.pub-cache/hostedthe fowling /pub.dartlang.org/grpc-2.7.0/lib/src/client/transport/xhr_transport.dart:40 : 9: Ошибка: «HttpRequest» не является типом. final HttpRequest _request; ^^^^^^^^^^^ ../../.pub-cache/hosted/pub.dartlang.org/grpc-2.7.0/lib/src/client/transport/xhr_transport.dart:66: 14: Ошибка: не найден получатель: «HttpRequest». case HttpRequest.HEADERS_RECEIVED: ^^^^^^^^^^^ ../../.pub-cache/hosted/pub.dartlang.org/grpc-2.7.0/lib/src/client/transport/xhr_transport .dart: 69: 14: Ошибка: Getter не найден: 'HttpRequest'. case HttpRequest.DONE: ^^^^^^^^^^^ ../../.pub-cache/hosted/pub.dartlang.org/grpc-2.7.0/lib/src/client/transport/xhr_transport .dart: 82: 30: Ошибка: «ProgressEvent» не является типом. _request.onError.listen ((событие ProgressEvent) {^^^^^^^^^^^^^ ../../.pub-cache/hosted/pub.dartlang.org/grpc-2.7.0/lib /src/client/transport/xhr_transport.dart:168:27: Ошибка: «HttpRequest» не является типом. void _initializeRequest (запрос HttpRequest, карта ‹String, String› метаданные) {^^^^^^^^^ ^^ ../../.pub-cache/hosted/pub.dartlang.org/grpc-2. 7.0 / lib / src / client / transport / xhr_transport.dart: 181: 38: Ошибка: метод HttpRequest не определен для класса XhrClientConnection.   -  person Sérgio Marques    schedule 05.11.2020