Снимите другой флажок на проверенном флаттере - PullRequest
0 голосов
/ 20 апреля 2019

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

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

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

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

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 Ответ

1 голос
/ 20 апреля 2019

Вы можете изменить состояние другой переменной, нажав на флажок в методе onChanged (). и присвойте это значение виджету-флажку, как показано ниже:

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;
                      });
                    },
                  ),
                ],
              ),
            ],
          ),
        ));
  }
}
...