Flutter auto_route_generator 未构建,FormatException : Not an instance of List

标签 flutter

我正在尝试运行 Flutter pub run build_runner build, 生成用于导航的 router.g.dart 文件。

我已经运行了一个 build_runner clean,一个完整的项目,然后构建但没有运气。 我正在学习一个教程,他似乎只是用我拥有的代码来运行它并且它很好。评论中似乎没有其他人有这个问题,我在网上找不到任何相关信息。

它没有说:

[SEVERE] auto_route_generator:autoRouteGenerator on lib/app/router.dart:

FormatException: Not an instance of List.
[INFO] Running build completed, took 16.2s

[INFO] Caching finalized dependency graph...
[INFO] Caching finalized dependency graph completed, took 48ms

[SEVERE] Failed after 16.3s
pub finished with exit code 1

我的 router.dart 代码:

import 'package:auto_route/auto_route_annotations.dart';
import 'package:stacktest/ui/views/covers/cover_view.dart';
import 'package:stacktest/ui/views/home/home_view.dart';
import 'package:stacktest/ui/views/startup/startup_view.dart';

@MaterialAutoRouter()
class $Router {
  @initial
  StartupView startupViewRoute;
  HomeView homeViewRoute;
  CoverView coverViewRoute;
}

Pubspec.yaml:

  sdk: ">=2.7.0 <3.0.0"

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.3
  stacked: ^1.7.1+1
  auto_route: 0.6.1
  stacked_services: 0.4.4+3

dev_dependencies:
  build_runner: 1.10.0
  auto_route_generator: 0.6.0
  flutter_test:
    sdk: flutter

flutter 医生-v

✓] Flutter (Channel master, 1.20.0-8.0.pre.41, on Mac OS X 10.15.5 19F101, locale en-AU)
    • Flutter version 1.20.0-8.0.pre.41 at /Users/mikaelwills/Documents/Flutter
    • Framework revision fd80503fd3 (34 hours ago), 2020-07-10 14:41:02 +0530
    • Engine revision 9b3e3410f0
    • Dart version 2.9.0 (build 2.9.0-20.0.dev 06cb010247)

 
[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
    • Android SDK at /Users/mikaelwills/Library/Android/sdk
    • Platform android-29, build-tools 29.0.2
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 11.5)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.5, Build version 11E608c
    • CocoaPods version 1.8.4

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 3.5)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 42.1.1
    • Dart plugin version 191.8593
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)

[✓] VS Code (version 1.47.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.12.2

[✓] Connected device (2 available)
    • Web Server (web) • web-server • web-javascript • Flutter Tools
    • Chrome (web)     • chrome     • web-javascript • Google Chrome 83.0.4103.116

• No issues found!

最佳答案

0.6.0 版本以来,auto_route package 中出现了一些重大变化。 ,最重要的是将路由声明方式从类字段更改为静态列表。您可以查看更多详情here .

因此,为了修复它,只需使用静态列表更新它,如下所示:

@MaterialAutoRouter(
  routes: <AutoRoute>[
    MaterialRoute(page: StartupView, initial: true),
    MaterialRoute(page: HomeView),
    MaterialRoute(page: CoverView),
  ],
)
class $Router {}

然后运行构建运行器命令:flutter pub run build_runner watch --delete-conflicting-outputs

另一个选项可以使用早期版本,如 0.5.0,但建议保持更新,有关更多信息,请查看 auto route package 中的文档。 .

关于Flutter auto_route_generator 未构建,FormatException : Not an instance of List,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62853598/

相关文章:

dart - 在 Flutter 中,在 pubspec.yaml 文件中添加包的最佳方法是什么?

dart - 在 Flutter 中处理错误后如何设置文本字段的 setState()?

firebase - flutter :CircularProgressIndicator()

flutter - 在 flutter 中的换行文本末尾添加一个小部件

Flutter SlideTransition 以 Offset OFF SCREEN 开始

flutter - 使用提供程序包,如何管理单本书以在同一页面中调用两种方法

android - 带代理的 Flutter WebView

android - 如何解决无效的 keystore 格式?

flutter - 错误未处理的异常:切换另一个BottomNavigationBar时,在dispose()之后调用setState()

Flutter:删除所有已保存的共享首选项