Reputation: 1865
I have the following code:
Get.put(DbController(HabitDao(AppDb())));
When I hot reload my app, I get the following error:
"WARNING (moor): It looks like you've created the database class AppDb multiple times. When these two databases use the same QueryExecutor, race conditions will occur and might corrupt the database."
I need to check if I have put a DbController
before creating a new AppDb
instance. I never had this problem while using the Provider package.
What is the best practice to solve this?
Upvotes: 11
Views: 12022
Reputation: 37
You may find this useful while writing widget test when you want to use your mocked controller instead of putting a controller in screen
late ParentProfileController controller;
@override
void initState() {
if (Get.isRegistered<ParentProfileController>()) {
controller = Get.find<ParentProfileController>();
} else {
controller = Get.put(ParentProfileController());
}
super.initState();
}
Upvotes: 0
Reputation: 729
You can check with Get.isRegistered
.
For your code:
bool test = Get.isRegistered<DbController>(tag: 'TagInPut');
If you didn't use tag, you can delete it.
bool test = Get.isRegistered<DbController>();
Upvotes: 47