【问题标题】:Flutter GetX setStateFlutter GetX 设置状态
【发布时间】:2022-01-21 23:38:20
【问题描述】:
bool download=false; setState(() {download=true;});download==true?Text("new"):("old");

如何在没有状态小部件的情况下使用 get X 编写此代码。

谢谢;

【问题讨论】:

    标签: flutter flutter-getx


    【解决方案1】:

    首先定义一个控制器类

    class ControllerClass extends GetxController{
     RxBool download == false.obs;
    }
    

    在你的无状态类中,你可以用两种方式声明一个集合

    像这样先注入一个控制器

     ControllerClass controller = Get.put(ControllerClass());
    

    第一:

        Obx(()=>controller.download.value == true?Text("new"):("old"))
    

    在某些功能中

    downloadCondition(){
       controller.download.value == // true or false;
    
    }
    

    第二:

        GetBuilder<ControllerClass>(builder: (controller){ return 
         controller.download.value == true? 
        Text("new"):("old"));}
    

    在某些功能中

    downloadCondition(){
       controller.download.value == // true or false;
     controller.update();
    }
    

    【讨论】:

    • 如果你使用getbuilder你不必使用RxBool,你也可以使用简单的bool
    • 是的,这是正确的,但更新大约需要 10 秒
    【解决方案2】:

    先试试这个,创建一个控制器:

     class ControllerName extends GetxController {
        final download = false.obs;
        
           yourFunc(){
            download(!download.value);
       }
        }
    

    那时我通常使用obx

        // You can also put your controller above on stateful or inside depends on you
           // final controller = Get.put(ControllerName());
            class YourPageName extends StatelessWidget {
    
           YourPageName({Key? key}) : super(key: key);
    
         final controller = Get.put(ControllerName());
    
          @override
          Widget build(BuildContext context) {
            return Obx(()=>
                Scaffold(
               body: SafeArea(
                 child: Column(
                     children:[
                          Text(controller.download.isFalse ? "Old" : "New"),
                          SizedBox(
                          height: 60,
                         width: 120,
                         child: ElevatedButton(
                        style: ElevatedButton.styleFrom(
                       primary: Colors.red,
                    child: Center(
                       child: Text("Click")
                           ),
                         onPressed: ()=>controller.yourFunc(),
                             ),
                            ),
                     ]
                    ),
                ),
              ),
              );
           }
            
            }
    

    【讨论】:

      猜你喜欢
      • 2021-08-20
      • 2021-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-10
      • 2021-06-25
      • 2021-08-18
      • 2021-05-03
      相关资源
      最近更新 更多