Flutter: как я могу изменить переменную с помощью Getx?

#flutter #flutter-getx

#flutter #flutter-getx

Вопрос:

Я хочу изменить значение счетчика на 0. Но каждый раз, когда я пытаюсь, это не работает, и я больше не могу использовать increment() . Я считаю, что это решение было бы простым, но я не могу этого понять.

 class Home extends StatelessWidget {
  final controller = Get.put(Controller());

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
          leading: IconButton(
        icon: Icon(Icons.offline_bolt),
        onPressed: () {
          controller.increment();
        },
      )),
      body: Center(
        child: Obx(() => Text('${controller.counter}')),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          controller.re();
        },
        child: Icon(Icons.access_alarms),
      ),
    );
  }
}

class Controller extends GetxController {
  var counter = RxInt(0);
  void increment() {
    counter  ;
    update();
  }

  re() {
    counter = RxInt(0);
    update();
  }
}
 

Ответ №1:

Если вы используете диспетчер реактивных состояний, вам не нужно вызывать эту update() функцию.

Чтобы сбросить счетчик обратно на 0, просто присвоите .value свойству значение 0.

Так что измените свой Controller вот так, и он должен работать:

 class Controller extends GetxController {
  var counter = RxInt(0);

  void increment() {
    counter  ;
  }

  re() {
    counter.value = 0;
  }
}