Flutter Getx:obs可以创建全局变量吗?
Flutter Getx: Can obs create a global variable?
如何让obs成为全局变量?
有Getx选项可以创建全局变量吗?
例如:
class Test extends GetxController {
RxString a = "".obs;
}
第 1 页:
Test test = Get.put(Test());
print(test.a.value); //""
test.a.value = "55555";
print(test.a.value); //"55555"
第 2 页:
Test test = Get.put(Test());
print(test.a.value); //""
Get.put()
创建单个实例,但是,如果你想创建一个全局控制器,有 Get.find()
获取最后创建的控制器实例并共享它,这样全局访问就可以了实现了。
您可以阅读更多相关内容here
注意,要使用Get.find()
,需要提前创建一个实例。
您的新代码将如下所示:
class Test extends GetxController {
RxString a = "".obs;
}
第 1 页:
Test test = Get.put(Test());
print(test.a.value); //""
test.a("55555");
print(test.a.value); //"55555"
第 2 页:
Test test = Get.find<Test>();
print(test.a.value); //"55555"
如果您的工作需要最新的价值,您可以关注@Sagnik Biswas 的评论。有效!
现在,我正在使用基本的全局实例。
test_cont.dart:
TestCont testContGlobals = Get.put(TestCont());
class TestCont extends GetxController {
RxString a = "".obs;
}
但我还是觉得我的方法可能不对
这种方法有什么缺点吗?
您可以使用 Get.put(Test());
将 class 插入到 main 中,它类似于:
void main() {
Get.put(Test());
runApp(...);
}
在您的测试中 class 添加以下代码:static Test get to => Get.find<Test>();
您的 Test
class 将如下所示:
class Test extends GetxController {
static Test get to => Get.find<Test>();
RxString a = "".obs;
}
现在您有了全局 class 并发送给调用者如下:
Test.to.a
您将按以下方式使用它:
//IMPORT TEST CLASS
//get the same instance that has already been created
Test test = Test.to.a;
print(test.value);
如何让obs成为全局变量?
有Getx选项可以创建全局变量吗?
例如:
class Test extends GetxController {
RxString a = "".obs;
}
第 1 页:
Test test = Get.put(Test());
print(test.a.value); //""
test.a.value = "55555";
print(test.a.value); //"55555"
第 2 页:
Test test = Get.put(Test());
print(test.a.value); //""
Get.put()
创建单个实例,但是,如果你想创建一个全局控制器,有 Get.find()
获取最后创建的控制器实例并共享它,这样全局访问就可以了实现了。
您可以阅读更多相关内容here
注意,要使用Get.find()
,需要提前创建一个实例。
您的新代码将如下所示:
class Test extends GetxController {
RxString a = "".obs;
}
第 1 页:
Test test = Get.put(Test());
print(test.a.value); //""
test.a("55555");
print(test.a.value); //"55555"
第 2 页:
Test test = Get.find<Test>();
print(test.a.value); //"55555"
如果您的工作需要最新的价值,您可以关注@Sagnik Biswas 的评论。有效!
现在,我正在使用基本的全局实例。
test_cont.dart:
TestCont testContGlobals = Get.put(TestCont());
class TestCont extends GetxController {
RxString a = "".obs;
}
但我还是觉得我的方法可能不对
这种方法有什么缺点吗?
您可以使用 Get.put(Test());
将 class 插入到 main 中,它类似于:
void main() {
Get.put(Test());
runApp(...);
}
在您的测试中 class 添加以下代码:static Test get to => Get.find<Test>();
您的 Test
class 将如下所示:
class Test extends GetxController {
static Test get to => Get.find<Test>();
RxString a = "".obs;
}
现在您有了全局 class 并发送给调用者如下:
Test.to.a
您将按以下方式使用它:
//IMPORT TEST CLASS
//get the same instance that has already been created
Test test = Test.to.a;
print(test.value);