Fluter: Как я могу изменить переменную с помощью 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();
  }
}

person batu    schedule 05.12.2020    source источник


Ответы (1)


Если вы используете Reactive State Manager вам не нужно вызывать update() функцию.

Для сброса счетчика обратно на 0 просто присвойте 0 свойству .value.

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

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

  void increment() {
    counter++;
  }

  re() {
    counter.value = 0;
  }
}
person Matthias    schedule 05.12.2020