flutter 使用可注入的发布包时未定义函数“$initGetIt”

l2osamch  于 2022-12-14  发布在  Flutter
关注(0)|答案(3)|浏览(140)

我正在尝试通过FilledStacks上传的视频来实现堆叠架构。我在使用可注入的pub包https://pub.dev/packages/injectable时遇到了一个问题
我的定位器.dart类代码如下

import 'package:get_it/get_it.dart';
import 'package:injectable/injectable.dart';

final locator = GetIt.instance;

@injectableInit
void setupLocator() => $initGetIt(locator);

$initGetIt(locator)上,我收到此错误

The function '$initGetIt' isn't defined.
Try importing the library that defines '$initGetIt', correcting the name to the name of an existing function, or defining a function named

即使我按照包文档中显示的方式实现包
https://www.youtube.com/watch?v=DO8le1W_HqQ&t=914s

uidvcgyl

uidvcgyl1#

1.在dev_dependencies中添加pubspec.yaml:injectable_generator:
1.运行flutter packages pub run build_runner build
1.从生成的文件导入$initGetIt

ymdaylpp

ymdaylpp2#

在终端上成功运行后

flutter packages pub run build_runner build

将生成的. config.dart文件导入到您的文件中

import 'locator.config.dart';

其中我的文件名为locator,因此生成的文件名为locator.config.dart

gg0vcinb

gg0vcinb3#

如果您使用的是injectable 2.1.0或更高版本,请使用以下命令:

@InjectableInit(asExtension: false)
FutureOr<GetIt> _init(GetIt getIt) => init(getIt);

然后运行build_runner:

flutter pub run build_runner build --delete-conflicting-outputs

相关问题