Как добавить контроллеры для пользовательских виджетов во флаттере - PullRequest
0 голосов
/ 14 октября 2019

У меня есть родительский виджет, который вызывает пользовательский виджет Switch, который я создал. Мне нужно значение переключателя (включен или выключен) в моем родительском виджете. Могу ли я создать контроллер в моем виджете переключателя, который бы возвращал это значение?

В настоящее время я передаю функцию из моего родительского виджета, которая изменяет значение логического значения, которое находится в моем родительском виджете, на основе значенияпереключатель в виджете переключателя.

Родительский виджет:

bool isSwitchOn = false;
Switch(onSwitchToggle: (bool val) {
                      isSwitchOn = val;
                  })

Пользовательский виджет переключения:

class Switch extends StatefulWidget {
 Widget build(BuildContext context) {
    return CupertinoSwitch(
        value: widget.value,
        onChanged: (bool value) {
          setState(() {
            widget.value = value;
          });
          widget.onSwitchToggle(value);
        },
),
}

Виджет переключения используется везде в коде всякий раз, когда мне нужнопереключатель, а иногда мне не нужно знать состояние переключателя, и мне просто нужно выполнить функцию при переключении переключателя, но так, как я написал код, мне нужно будет везде передавать bool всякий раз, когда я вызываюПереключатель. Ищете лучший способ сделать это. Например: Bool val не нужен, потому что он мне не нужен.

Switch(onSwitchToggle: (bool val) {
                     print('abc')
                 })
...