【问题标题】:How to correctly import custom source generation packages如何正确导入自定义源生成包
【发布时间】:2021-06-15 11:10:48
【问题描述】:

我正在尝试使用我自己编写的名为animated_widget_generator 的源代码生成包。注释包称为animated_widget_annotations,而我尝试使用它的应用程序称为example_usage

我将必要的包添加到我的dev_dependencies。这是我的pubspec.yaml

name: example_usage
description: A new Flutter project.

publish_to: 'none'

version: 1.0.0+1

environment:
  sdk: ">=2.12.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter
  cupertino_icons: ^1.0.2

dev_dependencies:
  flutter_test:
    sdk: flutter
  animated_widget_generator:
    path: ../animated_widget_generator
  animated_widget_annotations:
    path: ../animated_widget_annotations
  build_runner: ^2.0.4

flutter:
  uses-material-design: true

但是当我尝试在我的手机上运行该应用程序时,它给了我以下错误:

Launching lib\main.dart on ONEPLUS A6003 in debug mode...
√ Built build\app\outputs\flutter-apk\app-debug.apk.
E/flutter (17052): [ERROR:flutter/shell/common/shell.cc(242)] Dart Error: error: import of dart:mirrors is not supported in the current Dart runtime
E/flutter (17052): [ERROR:flutter/runtime/dart_isolate.cc(169)] Could not prepare isolate.
E/flutter (17052): [ERROR:flutter/runtime/runtime_controller.cc(401)] Could not create root isolate.
E/flutter (17052): [ERROR:flutter/shell/common/shell.cc(571)] Could not launch engine with configuration.
Exited (1)

Stack Overflow 上还有其他关于此错误的问题,但它们始终与某些第三方软件包有关,而不是与自定义源代码生成软件包有关,而且这些问题的任何答案似乎都与我无关

编辑:pubspec.yamlanimated_widget_generatoranimated_widget_annotations

name: animated_widget_annotations
description: A new Flutter package project.
version: 0.0.1
author:
homepage:

environment:
  sdk: ">=2.12.0 <3.0.0"
  flutter: ">=1.17.0"

dependencies:
  flutter:
    sdk: flutter

dev_dependencies:
  flutter_test:
    sdk: flutter

flutter:

name: animated_widget_generator
description: A new Flutter package project.
version: 0.0.1
author:
homepage:

environment:
  sdk: ">=2.12.0 <3.0.0"
  flutter: ">=1.17.0"

dependencies:
  flutter:
    sdk: flutter
  path: ^1.8.0
  source_gen: ^1.0.2
  json_serializable: ^4.1.3
  animated_widget_annotations:
    path: ../animated_widget_annotations

dev_dependencies:
  flutter_test:
    sdk: flutter
  pedantic: ^1.11.0
  build_runner: ^2.0.4

flutter:

【问题讨论】:

    标签: flutter dart sourcegenerators


    【解决方案1】:

    您收到此错误是因为 dart:mirrors 包不适用于颤振。

    请查看google groupsgithub 上的这些对话以了解更多信息。

    一个名为reflectable 的替代包可用于反射,但目前它有限制。

    【讨论】:

    • 我没有将包 dart:mirrors 导入我的应用程序!我怎样才能让颤振避免在我的应用中包含这个包,这样它就不会产生这个错误?
    • 好吧,如果你没有直接导入你已经完成了你的工作,也许在其他包之一中animated_widget_generatoranimated_widget_annotations 被导入了?
    • 我的理解是这些包只是一个开发依赖,因此应该能够导入他们想要的任何东西。
    • 没错。但是如果没有看到生成器的代码,很难说为什么它不能工作。
    • 我也为生成器添加了 pubspec.yaml。这有助于澄清问题吗?
    【解决方案2】:

    对于即将到来的 Flutter 开发者来说,这是一个非常常见的问题。主要原因是flutter和dart更新很快。有时在他们升级之后,比如说在最新版本的 Flutter 2.2 之后,你可以在他们的 github 上看到一些包已从其稳定模式中删除,以便对其进行处理以提高它们的效率。因此,您无法访问这些软件包。确保为同一任务找到替代包或尝试将依赖项的版本号更改为较低的数字,这可能由于向后兼容性而起作用。如果您有版本问题,pubspec.yaml 可能很难理解,因为它会告诉您依赖项不存在但不会告诉您原因。

    【讨论】:

    • 似乎我使用的所有软件包都是最新的并且与最新版本的 Flutter 兼容,所以我认为这不是问题
    猜你喜欢
    • 2017-06-24
    • 2019-09-16
    • 1970-01-01
    • 2017-07-20
    • 1970-01-01
    • 2021-08-30
    • 1970-01-01
    • 2020-01-20
    • 2019-05-13
    相关资源
    最近更新 更多