在 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 和 Dart 安装时的构建错误(导入错误)
Flutter 错误:找不到符号导入 com.google.firebase.firestore.LoadBundleTaskProgress;