#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. Большое спасибо 🙂