【发布时间】:2021-12-27 15:59:42
【问题描述】:
我有下一个代码。
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
【问题讨论】:
-
您是否在将
Get.put添加到您的main函数后重新启动应用程序?你不能只是热重载。 -
@Lee3 是的,我完全重启了
标签: flutter dart flutter-getx