我有下一个代码。
main() {
Get.put(NavigationBarController());
Get.put(JobListController());
//...
runApp(MyApp());
}我不使用bindings,因为我不使用GetX路由/页面,而使用自定义的制表符切换。
接下来是我的小部件:
class Dashboard extends StatelessWidget {
var jobCtrl = Get.find<JobListController>();
@override
Widget build(context) {
return Container(
margin: EdgeInsets.only(top: 20.0),
child: Column(children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
ElevatedButton(
onPressed: () => jobCtrl.startNewConfigToJob(), child: Text("Run")),但是我得到了一个错误:
Error: "JobListController" not found. You need to call "Get.put(JobListController())" or "Get.lazyPut(()=>JobListController())"
at Object.throw_ [as throw] (http://localhost:56854/dart_sdk.js:5374:11)为什么我会得到这个错误?导航栏控制器也使用Get.find,工作正常:
class NavigationBarController extends GetxController {
get to => Get.find<NavigationBarController>();
var tabIndex = 0.obs;
List<Widget> pages = [
Dashboard(),
TableStatisticSpeedView()
];
Widget get currentPage => pages[tabIndex.value];
void changeTabIndex(int index) {
tabIndex.value = index;
}
@override
void onInit() {
super.onInit();
}
@override
void dispose() {
super.dispose();
}
}以下是完整的源代码:https://github.com/bubnenkoff/monitor_client/blob/main/lib/main.dart#L28
发布于 2021-11-17 05:02:05
您可以创建一个单独的文件,将依赖项注入到该文件中,以放置您的依赖项。
Future<void> init() async {
Get.put(NavigationBarController());
Get.put(JobListController());
}从main调用初始化函数,并将WidgetsFlutterBinding.ensureInitialized()放在main函数的顶部。
main() async{
WidgetsFlutterBinding.ensureInitialized();
await di.init();
runApp(MyApp());
}现在,在小部件类中调用控制器。
class Dashboard extends StatelessWidget {
var jobCtrl = Get.find<JobListController>();
@override
Widget build(context) {
return Container(
margin: EdgeInsets.only(top: 20.0),
child: Column(children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
ElevatedButton(
onPressed: () => jobCtrl.startNewConfigToJob(), child: Text("Run")),https://stackoverflow.com/questions/69991446
复制相似问题