sun*_*ree 3 code-generation dart flutter flutter-dependencies
auto_route您好,我在 Flutter 项目中启动和运行软件包时遇到问题。根据官方文档,我做了以下工作:
@MaterialAutoRouter--enable-experiment=enhanced-enums)MaterialApp当我尝试使用 运行应用程序时flutter run,这是我收到的错误消息:
lib/app_router.gr.dart:16:26: Error: Type \'NavigatorState\' not found.\n _$AppRouter([GlobalKey<NavigatorState>? navigatorKey]) : super(navigatorKey);\n ^^^^^^^^^^^^^^\nlib/app_router.gr.dart:16:16: Error: Type \'GlobalKey\' not found.\n _$AppRouter([GlobalKey<NavigatorState>? navigatorKey]) : super(navigatorKey);\n ^^^^^^^^^\nlib/app_router.gr.dart:16:26: Error: \'NavigatorState\' isn\'t a type.\n _$AppRouter([GlobalKey<NavigatorState>? navigatorKey]) : super(navigatorKey);\n ^^^^^^^^^^^^^^\nlib/app_router.gr.dart:16:16: Error: \'GlobalKey\' isn\'t a type.\n _$AppRouter([GlobalKey<NavigatorState>? navigatorKey]) : super(navigatorKey);\nRun Code Online (Sandbox Code Playgroud)\n的输出flutter --version:
Flutter 3.0.0 \xe2\x80\xa2 channel stable \xe2\x80\xa2 https://github.com/flutter/flutter.git\nFramework \xe2\x80\xa2 revision ee4e09cce0 (3 days ago) \xe2\x80\xa2 2022-05-09 16:45:18 -0700\nEngine \xe2\x80\xa2 revision d1b9a6938a\nTools \xe2\x80\xa2 Dart 2.17.0 \xe2\x80\xa2 DevTools 2.12.2\nRun Code Online (Sandbox Code Playgroud)\npubspec.yaml具有相关依赖项的文件摘录
lib/app_router.gr.dart:16:26: Error: Type \'NavigatorState\' not found.\n _$AppRouter([GlobalKey<NavigatorState>? navigatorKey]) : super(navigatorKey);\n ^^^^^^^^^^^^^^\nlib/app_router.gr.dart:16:16: Error: Type \'GlobalKey\' not found.\n _$AppRouter([GlobalKey<NavigatorState>? navigatorKey]) : super(navigatorKey);\n ^^^^^^^^^\nlib/app_router.gr.dart:16:26: Error: \'NavigatorState\' isn\'t a type.\n _$AppRouter([GlobalKey<NavigatorState>? navigatorKey]) : super(navigatorKey);\n ^^^^^^^^^^^^^^\nlib/app_router.gr.dart:16:16: Error: \'GlobalKey\' isn\'t a type.\n _$AppRouter([GlobalKey<NavigatorState>? navigatorKey]) : super(navigatorKey);\nRun Code Online (Sandbox Code Playgroud)\n(1) 占位符类 ( app_router.dart) 注释为@MaterialAutoRouter...
Flutter 3.0.0 \xe2\x80\xa2 channel stable \xe2\x80\xa2 https://github.com/flutter/flutter.git\nFramework \xe2\x80\xa2 revision ee4e09cce0 (3 days ago) \xe2\x80\xa2 2022-05-09 16:45:18 -0700\nEngine \xe2\x80\xa2 revision d1b9a6938a\nTools \xe2\x80\xa2 Dart 2.17.0 \xe2\x80\xa2 DevTools 2.12.2\nRun Code Online (Sandbox Code Playgroud)\nflutter pub run build_runner build --enable-experiment=enhanced-enums --delete-conflicting-outputs...以及 (2)命令 ( app_router.gr.dart)自动生成的代码
environment:\n sdk: ">=2.17.0 <3.0.0"\n\ndependencies:\n flutter:\n sdk: flutter\n auto_route: ^4.0.1\n \ndev_dependencies:\n auto_route_generator: ^4.0.0\n build_runner: ^2.1.10\nRun Code Online (Sandbox Code Playgroud)\n最后,(3),这就是我将其与以下连接起来的方式MaterialApp:
part \'app_router.gr.dart\';\n\nconst authRoutes = AutoRoute(\n name: \'AuthRouter\',\n path: \'/\',\n initial: true,\n page: LoginScreen,\n);\n\n@MaterialAutoRouter(\n routes: <AutoRoute>[authRoutes],\n)\nclass AppRouter extends _$AppRouter {}\nRun Code Online (Sandbox Code Playgroud)\n我昨天已经迁移到 Flutter 3,同时也开始使用增强型枚举。如果没有该--enable-experiment=enhanced-enums标志,代码生成器似乎无法工作。我尝试过flutter run使用或不使用相同标志来运行应用程序 ( ),但上述错误仍然存在。
如果有人知道可能出现什么问题,我们将不胜感激。谢谢。
\n好的,我找到了解决方案。这是微不足道的,是由不完整的文档造成的。浏览auto_routeGitHub 问题页面后,我发现了这个,2021 年 12 月 1 日起。
修复方法是添加
import 'package:flutter/material.dart';
Run Code Online (Sandbox Code Playgroud)
到占位符类(在我的例子中,app_router.dart)。所以,
// + other relevant imports
import 'package:flutter/material.dart';
part 'app_router.gr.dart';
const authRoutes = AutoRoute(
name: 'AuthRouter',
path: '/',
initial: true,
page: LoginScreen,
);
@MaterialAutoRouter(
routes: <AutoRoute>[authRoutes],
)
class AppRouter extends _$AppRouter {}
Run Code Online (Sandbox Code Playgroud)
编辑(2022 年 3 月 16 日):正如 Yogi Arif Widodo 在下面的评论中指出的那样,如果您需要的话,您可能想导入 Material 和 Cupertino
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2989 次 |
| 最近记录: |