在 Flutter 导入错误中启用 Web

Posted

技术标签:

【中文标题】在 Flutter 导入错误中启用 Web【英文标题】:Enable web in flutter import errors 【发布时间】:2020-05-15 01:26:16 【问题描述】:

我们为 web 启用了 Flutter 应用程序,但我们遇到了一些导入错误。所有导入都是有效的并且在 android 中运行,所以我没有看到问题所在。

我研究了这个特定的导入,并了解到它是由应用程序中有多个 main() 引起的,但其他的都是有效的。

import 'generated_plugin_registrant.dart'; 5:1 来自 lbconnect_web|lib/screens/member/test_web_entrypoint.dart

对于似乎没有任何问题的包,还有 10 个其他导入错误。

这些是其他的,每个都有多个错误:

import 'package:lbconnect_web/models/checkin_model.dart'; 来自 lbconnect_web|lib/modules/check_in_question.dart 在 4:1 import 'package:flutter_cupertino_settings/flutter_cupertino_settings.dart';

checkin_model 只是一个变量的类,而 cupertino_settings 在我的 pubspec.yaml 中

flutter_cupertino_settings:^0.0.9+1

编辑 3 - 错误

无法找到某些来源的模块,这通常是由于 导入错误,包中缺少依赖项(或可能是 dev_dependency 需要移动到真正的依赖项),或者构建失败(如果导入一个 生成的文件)。

请检查以下导入:

import 'package:lbconnect_web/models/checkin_model.dart'; 来自 lbconnect_web|lib/screens/member/EmotionalWheel/choose.dart 在 8:1 import 'package:lbconnect_web/models/checkin_model.dart'; 来自 lbconnect_web|lib/modules/check_in_question.dart 在 4:1 import 'package:flutter_cupertino_settings/flutter_cupertino_settings.dart'; 来自 lbconnect_web|lib/screens/member/settings_2.0/widgets/selection_fields/card_settings_multiselect.dart 在 8:1 import 'package:flutter_cupertino_settings/flutter_cupertino_settings.dart'; 来自 lbconnect_web|lib/screens/member/settings_2.0/widgets/text_fields/card_settings_text.dart 在 7:1 import 'package:flutter_cupertino_settings/flutter_cupertino_settings.dart'; 来自 lbconnect_web|lib/screens/member/settings_2.0/widgets/numeric_fields/card_settings_switch.dart 在 8:1 import 'package:flutter_cupertino_settings/flutter_cupertino_settings.dart'; 来自 lbconnect_web|lib/screens/member/settings_2.0/widgets/picker_fields/card_settings_time_picker.dart 在 8:1 import 'package:flutter_cupertino_settings/flutter_cupertino_settings.dart'; 来自 lbconnect_web|lib/screens/member/settings_2.0/widgets/picker_fields/card_settings_color_picker.dart 在 9:1 import 'package:flutter_cupertino_settings/flutter_cupertino_settings.dart'; 来自 lbconnect_web|lib/screens/member/settings_2.0/widgets/picker_fields/card_settings_date_picker.dart 在 8:1 import 'package:flutter_cupertino_settings/flutter_cupertino_settings.dart'; 来自 lbconnect_web|lib/screens/member/settings_2.0/widgets/numeric_fields/card_settings_slider.dart 在 8:1 import 'package:flutter_cupertino_settings/flutter_cupertino_settings.dart'; 来自 lbconnect_web|lib/screens/member/settings_2.0/widgets/picker_fields/card_settings_list_picker.dart 在 8:1 import 'package:flutter_cupertino_settings/flutter_cupertino_settings.dart'; 来自 lbconnect_web|lib/screens/member/settings_2.0/widgets/card_settings_panel.dart 7:1import 'package:flutter_cupertino_settings/flutter_cupertino_settings.dart'; 来自 lbconnect_web|lib/screens/member/settings_2.0/widgets/information_fields/card_settings_header.dart 在 7:1 import 'package:flutter_cupertino_settings/flutter_cupertino_settings.dart'; 来自 lbconnect_web|lib/screens/member/settings_2.0/widgets/information_fields/card_settings_instructions.dart 在 6:1 import 'package:flutter_cupertino_settings/flutter_cupertino_settings.dart'; 来自 lbconnect_web|lib/screens/member/settings_2.0/widgets/action_fields/card_settings_button.dart 在 4:1

无法找到某些来源的模块,这通常是由于 导入错误,包中缺少依赖项(或者可能是 dev_dependency 需要移动到真正的依赖项),或构建失败(如果导入 生成的文件)。

请检查以下导入:

import 'generated_plugin_registrant.dart'; 5:1 来自 lbconnect_web|lib/screens/member/test_web_entrypoint.dart

655 毫秒后失败 为 Web 构建应用程序... 31.1s 无法为 Web 构建应用程序。

编辑 2 - 检查模型

 class CheckInModel 
  String checkInId;


  CheckInModel(this.checkInId);

  factory CheckInModel.fromJson(Map<String, dynamic> json) 
    return CheckInModel(
      checkInId: json['CheckInID'],

   );
 

编辑

YAML 中的包

    dependencies:
     flutter:
      sdk: flutter

     # The following adds the Cupertino Icons font to your application.
     # Use with the CupertinoIcons class for ios style icons.
       cupertino_icons: ^0.1.2
       rxdart: ^0.22.0
      provider: ^3.0.0+1
      shared_preferences: 0.5.2
      flutter_local_notifications:

       dev_dependencies:
        flutter_test:
         sdk: flutter

      flutter_redux: ^0.5.2
     snaplist: ^0.1.3
      font_awesome_flutter: ^8.0.1
     http: ^0.12.0
     intl: ^0.15.7
    device_calendar: ^0.0.7
    dynamic_theme:
     eva_icons_flutter:
     flutter_speed_dial:
        sqflite:
         url_launcher: ^5.0.3
      swipedetector: ^1.2.0
        contacts_service: ^0.2.1
        agora_rtc_engine: 1.0.5
           permission_handler: ^3.0.0
       validators: ^2.0.0
      path_provider: ^1.1.0
     share_extend: ^1.0.9
        shimmer: ^1.0.0
       flutter_launcher_icons: ^0.7.2
        flutter_tableview:
        flutter_masked_text: ^0.8.0
          flutter_colorpicker: ^0.2.6
        meta: ^1.1.6
       auto_size_text: ^1.0.0
        flutter_email_sender: ^2.0.3
        fl_chart: ^0.2.0
      flutter_sms: ^1.0.1
      firebase_messaging: ^5.1.1
         image_picker: 0.6.0+17
      carousel_slider: ^1.3.0
      sliding_up_panel:
        scoped_model: ^1.0.1
           awesome_dialog: ^0.0.4

     flutter_icons:
    android: "launcher_icon" 
     ios: false
     image_path: "assets/logo/ic_launcher.png"

     flutter_email_sender:
      path: ../

      flutter_cupertino_settings: ^0.0.9+1

【问题讨论】:

你可以添加你正在使用的打包列表吗? 是的,我会将其添加为编辑 我的意思是你能把你写在 pubspec.yaml 中的所有包的列表都粘贴进去 我在编辑下添加了它们 我想现在它归结为错误堆栈,您是否也可以显示您的错误堆栈。这门课看起来不错 【参考方案1】:

您的错误的原因很可能是因为可能有一些包没有 web 的本机实现,但仅适用于 android / ios 。这也是为什么您的应用程序在 android 上运行良好的原因。 Flutter 开发的官方包几乎都支持 web。 (可能仍有一些例外)。 要在 Web 上运行您的应用,您必须检查每个包是否支持 Web。

【讨论】:

cupertino_settings 是列出的唯一一个错误。这并不能解释为什么 checkin_model 会抛出错误。它是一个有一个变量的类。 我刚刚检查了 Cupertino 设置是否启用了网络 你能显示你的 checkin_model 文件吗?你的类是从任何包中扩展任何类? 确定我会把它添加到编辑中。我有 10 个其他模型以相同的方式编写,不会引发错误,所以我不知道它可能是什么。

以上是关于在 Flutter 导入错误中启用 Web的主要内容,如果未能解决你的问题,请参考以下文章

在 Flutter 的 Android Studio 中启用相对路径自动导入

如何在 Flutter 中启用 Null-Safety?

如何在 Flutter Web 上启用自定义图标?

全新 Flutter 和 Dart 安装时的构建错误(导入错误)

Flutter 错误:找不到符号导入 com.google.firebase.firestore.LoadBundleTaskProgress;

XMLHttpRequest 错误 - Flutter Web 中的 CORS 问题(C#)