#list #flutter #dart #controller #radio-button
#Список #flutter #dart #контроллер #переключатель
Вопрос:
Я создал виджет, который отправляет данные через API в формате json, созданный с помощью таких контроллеров, как ;
final quantNumberController = TextEditingController();
И я получаю значение от контроллера ;
String quant = quantNumberController.text;
И я сохраняю данные в формате json, например ;
var data = {'quant': quant}
Моя текущая структура контейнера текстового виджета выглядит так ;
Container(
width: 280,
padding: EdgeInsets.all(10.0),
child: TextField(
controller: quantNumberController,
autocorrect: true,
decoration: InputDecoration(hintText: 'Enter location'),
)
),
Я хотел бы получить эти данные в структуре переключателя. Возможно ли получить данные с помощью контроллера, как раньше, или как я должен получить данные в свой результирующий файл json?
Я пробовал так ;
Container(
margin: EdgeInsets.fromLTRB(0, 0, 0, 10),
child: Column(
children: <Widget>[
Text('Location'),
ListTile(
title: const Text('First value'),
leading: Radio(
value: Cap.Cap33,
groupValue: _capp,
onChanged: (Capp value) {
setState(() {
_capp = value;
capp = 'Cap33';
});
},
),
),
ListTile(
title: const Text('Second value'),
leading: Radio(
value: Capp.Cap22,
groupValue: _capp,
onChanged: (Capp value) {
setState(() {
_capp = value;
capp = 'Cap22';
});
},
),
),
ListTile(
title: const Text('Third value'),
leading: Radio(
value: Capp.Cap44,
groupValue: _capp,
onChanged: (Capp value) {
setState(() {
_capp = value;
capp = 'Cap44';
});
},
),
),
],
) ,
),
Спасибо.
Ответ №1:
вы можете определить функцию, которая принимает контроллер
widget myRadioButton(TextEditingController quantNumberController ){
return Radio(
value:quantNumberController.text
groupValue: _capp,
onChanged: (Capp value) {
setState(() {
_capp = value;
capp = 'Cap33';
});}
для использования
Container(
child:myRadioButton (quantNumberController:quantNumberController)
)
Ответ №2:
Вы можете использовать переменную типа синтаксиса «Значение местоположения» —
late String LocationValue = '';
перед @override
Сборка виджета (контекст BuildContext)
А затем назначить LocationValue для переключателя при изменении атрибута
onChanged: ((value) {
LocationValue = 'cap33';
setState(() {
_value = value!;
});
}),