Снимите флажок «Другое» при отмеченном флаттере

#flutter #checkbox

#флаттер #флажок

Вопрос:

У меня есть три флажка (позволяет пользователю выбирать разные трудности). Прямо сейчас все флажки доступны для просмотра.

Но по очевидной причине я хочу, чтобы пользователь мог выбирать только одну сложность одновременно — почему я пытаюсь снять все остальные флажки для каждого нового клика.

После того, как пользователь выбрал сложность, он сможет сделать другой выбор. Когда этот выбор будет сделан, он автоматически будет перенаправлен на другую страницу. (Другими словами — выбор флажка не имеет значения, пока пользователь не сделает свой второй выбор).

Я попробовал что-то вроде

 void checkBoxes() {
    if (_value1 = true) {
      _value2 = false;
      _value3 = false;
    } else if (_value2 = true) {
      _value1 = false;
      _value3 = false;
    } else if (_value3 = true) {
      _value1 = false;
      _value2 = false;
    }
  }
  

Но не повезло.

Ответ №1:

Вы можете изменить состояние других переменных, щелкнув флажок в методе OnChanged (), и присвоить это значение виджету checkbox, например, как показано ниже:

 import 'package:flutter/material.dart';

void main() => runApp(MaterialApp(
      home: MyHomePage(),
    ));

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  bool valMonday = false;
  bool valTuesday = false;
  bool valWednesday = false;
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text("Group Checkboxes"),
          centerTitle: true,
        ),
        body: Center(
          child: Row(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[

              // [Monday] checkbox
              Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[
                  Text("Monday"),
                  Checkbox(
                    value: valMonday,
                    onChanged: (bool value) {
                      setState(() {
                        valMonday = value;
                        valTuesday = false;
                        valWednesday = false;
                      });
                    },
                  ),
                ],
              ),


              // [Tuesday] checkbox
              Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[
                  Text("Tuesday"),
                  Checkbox(
                    value: valTuesday,
                    onChanged: (bool value) {
                      setState(() {
                        valTuesday = value;
                        valMonday = false;
                        valWednesday = false;
                      });
                    },
                  ),
                ],
              ),


              // [Wednesday] checkbox
              Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[
                  Text("Wednesday"),
                  Checkbox(
                    value: valWednesday,
                    onChanged: (bool value) {
                      setState(() {
                        valWednesday = value;
                        valMonday = false;
                        valTuesday = false;
                      });
                    },
                  ),
                ],
              ),
            ],
          ),
        ));
  }
}
  

Комментарии:

1. Большое спасибо 🙂