Estava com medo de meu código ficar muito confuso, então separei a lógica em outro arquivo.
Criei uma pasta controllers
e dentro dela criei o arquivo counter_controller.dart
:
class CounterController extends GetxController {
CounterController({int initialValue = 0}) : _counter = initialValue.obs;
RxInt _counter;
RxInt get counter => _counter;
void increment() => _counter++;
void decrement() {
if (_counter > 0) {
_counter--;
}
}
}
Converti a tela para StatefulWidget e fiz a instancia "atrasada" do objeto: [...]
late CounterController counterController;
@override
void initState() {
counterController = Get.put(
CounterController(),
tag: widget.item.nome,
);
super.initState();
}
[...]
Depois, eu chamo as funções dessa classe na tela: [...]
// Botão de (-)
InkWell(
borderRadius: BorderRadius.circular(20),
onTap: () {
counterController.decrement();
},
[...]
Obx(
() => Text(
counterController.counter.toString(),
),
),
// Botão de (+)
InkWell(
borderRadius: BorderRadius.circular(20),
onTap: () {
counterController.increment();
},
[...]