首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过绑定注入颤振依赖项

问通过绑定注入颤振依赖项
EN

Stack Overflow用户
提问于 2022-10-30 13:19:19
回答 2查看 96关注 0票数 -2

我试图使用绑定类将依赖项注入到我的快速应用程序中,但由于某些原因,它不像我所期望的那样工作。

绑定类

代码语言:javascript
复制
class LibraryHomeBinding extends Bindings {
  @override
  void dependencies() {
    Get.put(LibraryHomeController(), tag: 'home');
  }
}

控制器类

代码语言:javascript
复制
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();
  }
}

首页

代码语言:javascript
复制
class LibraryHome extends StatelessWidget {
  LibraryHome({super.key, required this.title});

  final String title;
  final libraryHomeBinding = Get.find(tag: 'home');
...
}

main

代码语言:javascript
复制
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())”。

EN

回答 2

Stack Overflow用户

发布于 2022-10-30 13:31:48

在绑定类上,我认为使用扩展并不完全正确,而是使用with/implements

代码语言:javascript
复制
class LibraryHomeBinding with Bindings {
  @override
  void dependencies() { 
   /// use lazy put
    Get.lazyPut(LibraryHomeController(),fenix: true,tag: 'home');
  }
}

然后在控制器上这样做

代码语言:javascript
复制
class LibraryHomeController extends GetxController {
  final findBind = Get.find<LibraryHomeController>( tag: "home");
  @override
  void onInit() {
    print('initilizing');
    super.onInit();
  }    
}
票数 1
EN

Stack Overflow用户

发布于 2022-10-30 13:28:06

在调用Get.find()时,您指定了标记,但没有指定类型,Getx使用类型和标记生成一致的键以获得所需的结果,因此需要这样做:

代码语言:javascript
复制
  final libraryHomeBinding = Get.find<LibraryHomeController>(tag: 'home');

或

代码语言:javascript
复制
  final LibraryHomeController libraryHomeBinding = Get.find(tag: 'home');

现在它会找到它的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74253400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档