Мой запрос прост. У меня есть Icons.add
и Icons.remove
на основе условия, имеет ли массив значение или нет. и этот массив преобразуется в строку с .join()
в flutter
.
Если я использую Stateful Builder from flutter
, значение внутри simpleDialog
обновляется, и поэтому значки меняются по мере необходимости, но тогда я не я не могу получить данные на экране, откуда я звоню dailog widget
.
. Сейчас я могу получить доступ к нужным данным, только значки не обновляются.
showAlertDialog(BuildContext context) {
// set up the SimpleDialog
SimpleDialog dialog = SimpleDialog(
title: const Text('Choose Your Health Issue'),
children: <Widget>[
Container(
width: MediaQuery.of(context).size.width * 0.9,
height: MediaQuery.of(context).size.height * 0.9,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Expanded(
child: ListView.builder(
shrinkWrap: true,
itemCount: hi.length,
itemBuilder: (BuildContext ctxt, int index) {
return InkWell(
onTap: () => setState(() {
var x = hi[index].title;
if(hIssue.contains(x)){
hIssue.removeAt(hIssue.indexOf(x));
print("removing -> $x");
} else {
hIssue.add(x);
print("adding -> $x");
}
}),
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 10),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Text(
hi[index].title.toString(),
style: Theme.of(context).textTheme.title.copyWith(fontSize: 14),
),
(hIssue.contains(hi[index].title)) ? Icon(Icons.remove) : Icon(Icons.add)
],
),
),
);
},
),
),
],
),
),
],
);
// show the dialog
showDialog(
context: context,
builder: (BuildContext context) {
return dialog;
},
);
}
}