我试图使用绑定类将依赖项注入到我的快速应用程序中,但由于某些原因,它不像我所期望的那样工作。
绑定类
class LibraryHomeBinding extends Bindings {
@override
void dependencies() {
Get.put(LibraryHomeController(), tag: 'home');
}
}控制器类
class LibraryHomeController extends GetxController {
@override
void onInit() {
print('initilizing');
super.onInit();
}
@override
void onReady() {
print('Controller ready');
super.onReady();
}
@override
void onClose() {
print('Controller closing');
super.onClose();
}
}首页
class LibraryHome extends StatelessWidget {
LibraryHome({super.key, required this.title});
final String title;
final libraryHomeBinding = Get.find(tag: 'home');
...
}main
void main() {
WidgetsFlutterBinding.ensureInitialized();
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return GetMaterialApp(
debugShowCheckedModeBanner: false,
title: 'Flutter Demo',
theme: lightTheme,
getPages: [
GetPage(
name: '/home',
page: () => LibraryHome(title: 'Library'),
binding: LibraryHomeBinding(),
)
],
initialRoute: '/home',
);
}
}我收到了这个错误
没有找到“动态”。您需要调用“Get.put(动态())”或“Get.lazyPut(()=>dynamic())”。
发布于 2022-10-30 13:31:48
在绑定类上,我认为使用扩展并不完全正确,而是使用with/implements
class LibraryHomeBinding with Bindings {
@override
void dependencies() {
/// use lazy put
Get.lazyPut(LibraryHomeController(),fenix: true,tag: 'home');
}
}然后在控制器上这样做
class LibraryHomeController extends GetxController {
final findBind = Get.find<LibraryHomeController>( tag: "home");
@override
void onInit() {
print('initilizing');
super.onInit();
}
}发布于 2022-10-30 13:28:06
在调用Get.find()时,您指定了标记,但没有指定类型,Getx使用类型和标记生成一致的键以获得所需的结果,因此需要这样做:
final libraryHomeBinding = Get.find<LibraryHomeController>(tag: 'home');或
final LibraryHomeController libraryHomeBinding = Get.find(tag: 'home');现在它会找到它的。
https://stackoverflow.com/questions/74253400
复制相似问题