首页 > 解决方案 > 尝试使用类型“FolderBasedDartSdk”作为函数

问题描述

我需要使用教程https://flutter.io/json/#code-generation中的代码生成库反序列化 JSON 当我执行“运行代码生成实用程序”步骤时,(在终端“flutter packages pub run build_runner build”中运行),我有错误:

C:\Users\Matusevich\StudioProjects\hr_metrics>flutter packages pub run build_runner build
[INFO] Generating build script...
[INFO] Generating build script completed, took 486ms

[INFO] Initializing inputs
[INFO] Building new asset graph...
[INFO] Building new asset graph completed, took 469ms

[INFO] Checking for unexpected pre-existing outputs....
[INFO] Checking for unexpected pre-existing outputs. completed, took 2ms



You have hit a bug in build_runner
Please file an issue with reproduction steps at https://github.com/dart-lang/build/issues


NoSuchMethodError: Attempted to use type 'FolderBasedDartSdk' as a function. Since types do not define a method 'call', this is not possible. Did you intend to call the FolderBasedDa
rtSdk constructor and forget the 'new' operator?
Receiver: FolderBasedDartSdk
Tried calling: FolderBasedDartSdk(Instance of 'PhysicalResourceProvider', Instance of '_PhysicalFolder')
dart:core                                                 Object.noSuchMethod
package:build_resolvers/src/resolver.dart 430:33          new AnalyzerResolvers
package:build_runner/src/generate/build_impl.dart 124:26  new BuildImpl._
package:build_runner/src/generate/build_impl.dart 154:21  BuildImpl.create
package:build_runner/src/generate/build_impl.dart 108:33  singleBuild
package:build_runner/src/generate/build_impl.dart 97:22   build
package:build_runner/src/generate/build.dart 69:5         build
package:build_runner/src/entrypoint/options.dart 329:24   _BuildCommand.run
package:args/command_runner.dart 194:27                   CommandRunner.runCommand
package:args/command_runner.dart 109:29                   CommandRunner.run.<fn>
dart:async                                                new Future.sync
package:args/command_runner.dart 109:11                   CommandRunner.run
package:build_runner/src/entrypoint/run.dart 22:31        run
.dart_tool\build\entrypoint\build.dart 11:22              main

pub finished with exit code 1

如何纠正错误?

C:\Users\Matusevich\StudioProjects\hr_metrics>flutter --version
Flutter 0.5.7 • channel dev • https://github.com/flutter/flutter.git
Framework • revision 66091f9696 (5 weeks ago) • 2018-07-09 12:52:41 -0700
Engine • revision 6fe748490d
Tools • Dart 2.0.0-dev.63.0.flutter-4c9689c1d2

标签: jsondartflutter

解决方案


发生这种情况是因为 Flutter 使用的是较旧的 SDK,其中 VM 不支持可选new的,并且构建运行程序包在没有正确的 SDK 约束的情况下发布。

此错误报告在https://github.com/dart-lang/build/issues/1746


推荐阅读