Почему мой флажок работает, когда я извлекаю его в свой собственный виджет в отличие от монолитной страницы - PullRequest
0 голосов
/ 07 ноября 2019

Флажок работает только тогда, когда я извлек виджет в его собственный класс с состоянием, почему он не работает в коде в целом?

Изображение древовидной структуры

class LoginForm extends StatefulWidget {
  @override
  _LoginFormState createState() => _LoginFormState();
}

class _LoginFormState extends State<LoginForm> {
  bool rememberUser = false;

  @override
  Widget build(BuildContext context) {
...
Row(
  children: <Widget>[
    Align(
      alignment: Alignment.centerLeft,
      child: Checkbox(
        value: rememberUser,
        onChanged: (bool value) {
          setState(() {
            rememberUser = value;
          });
        },
      ),
    ),
    Align(
      alignment: Alignment.centerLeft,
      child: Text("Remember Me")),
    Expanded(
      child: Align(
        alignment: Alignment.centerRight,
        child: Text(
          "FORGOT PASSWORD?",
          style: TextStyle(
          fontWeight: FontWeight.w600,
          color: Colors.greenAccent[400]),
        ),
      ),
    )
  ],
),
...
}

Вот как мне удалось заставить его работать

class RememberUserCheck extends StatefulWidget {
  @override
  RememberUserCheckState createState() => RememberUserCheckState();
}

class RememberUserCheckState extends State<RememberUserCheck> {
  bool rememberUser = false;

  @override
  Widget build(BuildContext context) {
    return Checkbox(
      value: rememberUser,
      onChanged: (bool value) {
        setState(() {
          rememberUser = value;
        });
      },
    );
  }
}

Кроме того, если бы не было слишком хлопотных советов по хорошей практике кодирования для флаттера, было бы полезно.

...