在我的 flutter 应用程序中构建运行程序包以进行 JSON 序列化不起作用

Moh*_*ele 10 flutter

我在我的 flutter 应用程序中使用 build_runner 包进行 JSON 序列化。我已将其正确安装pubspec.yamldev dependencies. 但是当我尝试使用flutter pub run build_runner build它时会释放以下内容。

\n
    C:\\Users\\MoBix\\Music\\islamic_social_media>flutter pub run build_runner build\nUnhandled exception:\nBad state: Unable to generate package graph, no `C:\\Users\\MoBix\\Music\\islamic_social_media\\.dart_tool\\flutter_gen\\pubspec.yaml` found.\n#0      _pubspecForPath (package:build_runner_core/src/package_graph/package_graph.dart:232:5)\n#1      _parsePackageDependencies (package:build_runner_core/src/package_graph/package_graph.dart:206:21)\n#2      PackageGraph.forPath (package:build_runner_core/src/package_graph/package_graph.dart:101:33)\n<asynchronous suspension>\n#3      main (file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/build_runner-2.1.5/bin/build_runner.dart:27:30)\n<asynchronous suspension>\npub finished with exit code 255\n
Run Code Online (Sandbox Code Playgroud)\n

我的pubspec.yaml

\n
dev_dependencies:\n  flutter_launcher_icons: ^0.9.2\n  flutter_app_name: ^0.1.1\n  build_runner:\n  flutter_test:\n    sdk: flutter\n
Run Code Online (Sandbox Code Playgroud)\n

我的flutter doctor -v

\n
C:\\Users\\MoBix>flutter doctor -v\n[\xe2\x88\x9a] Flutter (Channel stable, 2.5.3, on Microsoft Windows [Version 10.0.19043.1348], locale en-US)\n    \xe2\x80\xa2 Flutter version 2.5.3 at C:\\flutter\n    \xe2\x80\xa2 Upstream repository https://github.com/flutter/flutter.git\n    \xe2\x80\xa2 Framework revision 18116933e7 (6 weeks ago), 2021-10-15 10:46:35 -0700\n    \xe2\x80\xa2 Engine revision d3ea636dc5\n    \xe2\x80\xa2 Dart version 2.14.4\n\n[\xe2\x88\x9a] Android toolchain - develop for Android devices (Android SDK version 31.0.0)\n    \xe2\x80\xa2 Android SDK at C:\\Users\\MoBix\\AppData\\Local\\Android\\sdk\n    \xe2\x80\xa2 Platform android-Sv2, build-tools 31.0.0\n    \xe2\x80\xa2 Java binary at: C:\\Program Files\\Android\\Android Studio\\jre\\bin\\java\n    \xe2\x80\xa2 Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7249189)\n    \xe2\x80\xa2 All Android licenses accepted.\n\n[\xe2\x88\x9a] Chrome - develop for the web\n    \xe2\x80\xa2 Chrome at C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe\n\n[\xe2\x88\x9a] Android Studio (version 2020.3)\n    \xe2\x80\xa2 Android Studio at C:\\Program Files\\Android\\Android Studio\n    \xe2\x80\xa2 Flutter plugin can be installed from:\n       https://plugins.jetbrains.com/plugin/9212-flutter\n    \xe2\x80\xa2 Dart plugin can be installed from:\n       https://plugins.jetbrains.com/plugin/6351-dart\n    \xe2\x80\xa2 Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7249189)\n\n[\xe2\x88\x9a] Connected device (2 available)\n    \xe2\x80\xa2 Chrome (web) \xe2\x80\xa2 chrome \xe2\x80\xa2 web-javascript \xe2\x80\xa2 Google Chrome 96.0.4664.45\n    \xe2\x80\xa2 Edge (web)   \xe2\x80\xa2 edge   \xe2\x80\xa2 web-javascript \xe2\x80\xa2 Microsoft Edge 94.0.992.50\n\n\xe2\x80\xa2 No issues found!\n
Run Code Online (Sandbox Code Playgroud)\n

解决这个问题的方法是什么?

\n

dum*_*azy 35

有趣的是它指向.dart_tool/flutter_gen/pubspec.yaml. 这个问题generate: true在设置时提到了这个问题pubspec.yaml

如果您不需要它,请尝试将其删除。另外,flutter cleanandflutter pub get可能是必要的。

  • `flutter clean` 然后 `flutter pub run build_runner build --delete-conflicting-outputs`。问题解决了。 (2认同)

sel*_*lan 7

就我而言,这种情况发生在我尝试使用mockito和注释生成测试代码时:

@GenerateMocks([ClassToMock])
Run Code Online (Sandbox Code Playgroud)

尝试执行时会出现错误flutter pub run build_runner build ,并且<...>/.dart_tool/flutter_gen/路径不存在。

解决方案是创建一个空.dart_tool/flutter_gen/pubspec.yaml文件:

mkdir .dart_tool/flutter_gen && touch .dart_tool/flutter_gen/pubspec.yaml
Run Code Online (Sandbox Code Playgroud)

并用(如此处指出的)来充实

name: test
description: A new Flutter application.
version: 1.0.0

dependencies:

dev_dependencies:
Run Code Online (Sandbox Code Playgroud)