Utworzyłem ToggleButtons złożonych z trzech opcji, każdy z innym tekstem. Użytkownik może wybrać tylko jedną opcję z trzech, identyfikując ich płeć w tym przypadku. Chciałbym przejść ...

0
Joe 21 marzec 2021, 00:16

1 odpowiedź

Najlepsza odpowiedź

W każdej chwili chcesz zacząć przekazywać dane do stron, co jest naprawdę prawdziwą aplikacją, będziesz chciał wdrożyć rozwiązanie do zarządzania stanem. Oto jak zrobiłbym to za pomocą Getx.

Podobne rozwiązania są dostępne z całkiem jakiegokolwiek innego zarządzania stanem, tj. Dostawca, RiverPod, Bloc itp. ...

Oto klasa, w której ciąg zostanie przechowywany i zaktualizowany na podstawie wyboru ToggleButton.

class Controller extends GetxController {
  String gender = '';

  void selectGender(int index) {
    if (index == 0) {
      gender = 'male';
    } else if (index == 1) {
      gender = 'female';
    } else if (index == 2) {
      gender = 'non-binary';
    }
    update();
  }
}

Wrzuć to w swojej budowy metody strony za pomocą ToggleButton. Inicjuje getxcontroller.

final controller = Get.put(Controller());

Loop of Your onPressed wygląda teraz tak

 for (int buttonIndex = 0;
      buttonIndex < isSelected.length;
      buttonIndex++) {
     if (buttonIndex == index) {
      isSelected[buttonIndex] = true;
      controller.selectGender(index); // calling method from GetX Controller class
      _enableBtn = true;
     } else {
       isSelected[buttonIndex] = false;
       }
      }

A oto przykład tego, jak można uzyskać dostęp do tego ciągów z dowolnego miejsca w aplikacji. Ta sama koncepcja dotyczy każdej innej zmiennej, która mieszka w tej klasie.

class Page2 extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final controller =
        Get.find<Controller>(); // finding same instance of controller
    return Scaffold(
      body: Center(
        // this GetBuilder widget rebuilds based on any updates to the GetX variable inside
        child: GetBuilder<Controller>(
          builder: (_) {
            return Text(controller.gender);
          },
        ),
      ),
    );
  }
}
1
Loren.A 20 marzec 2021, 22:21