У меня проблема с использованием провайдера флаттера. Есть AlertDialog, который активируется, когда я нажимаю плавающую кнопку. Я нажимаю кнопку «Сохранить» в AlertDialog, и затем текст должен быть добавлен в мой предметный класс модели. После этого этот класс модели должен быть добавлен в Provider, но он не работает.
@override
Widget build(BuildContext context)
{
return new Scaffold(
appBar: new AppBar(
title: new Text('Subjects'),
),
body: listView(),
floatingActionButton: new FloatingActionButton(
onPressed: () {
_alertDialog(context);
},
child: Icon(Icons.add),
),
);
}
_alertDialog(BuildContext context) async {
_textEditingController.clear();
await showDialog<String>(
context: context,
builder: (BuildContext context) {
return AlertDialog(
content: new Row(
children: <Widget>[
new Expanded(
child: TextField(
controller: _textEditingController,
style: new TextStyle(fontSize: 20.0),
decoration: new InputDecoration(
labelText: 'Add new subject',
),
),
)
],
),
actions: <Widget>[
new FlatButton(
child: const Text('Cancel'),
onPressed: () {
Navigator.of(context).pop();
},
),
new FlatButton(
child: const Text('Save'),
onPressed: ()
async {
var subjectProvider = Provider.of<CrudModel>(context, listen: false);
subject = new Subject(_textEditingController.text.toString(), "homework");
await subjectProvider.addSubject(subject);
setState(() {
listSub.add(subject);
});
Navigator.of(context).pop();
},
)
],
);
});
}