#sqlite #flutter
#sqlite #flutter
Вопрос:
TextEditingController textEditingController = TextEditingController();
bool editState = false;
StatefulBuilder(
builder: (context, setState){
return AlertDialog(
content: SingleChildScrollView(
child: Column(
children: [
Container(
child: Padding(
padding: const EdgeInsets.only(bottom: 8, left: 8, right: 8),
child: Align(
alignment: Alignment.centerLeft,
child: editState ?
TextField(
controller: textEditingController,
) :
Text(checkpoint["memo"])
),
),
),
Container(
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Padding(
padding: const EdgeInsets.only(bottom: 8),
child: GestureDetector(
child: editState ? Text("Save") : Text("Edit"),
onTap: () async {
if(editState == true){
DBHelper dbHelper = DBHelper();
await dbHelper.updateCheckpoint(checkpoint["userkey"], checkpoint["id"], textEditingController.text);
}
else{
setState((){
editState = !editState;
});
}
},
),
),
],
),
)
],
),
)
);
},
)
Это мой код. Я хочу Text (checkpoint ["memo"])
, чтобы они обновлялись, когда я что-то набираю и нажимаю кнопку сохранить.
Я пытался использовать ChangeNotifierProvider
, но это не сработало. Возможно, я использовал его неправильно. Поэтому я не знаю, как подойти к этой проблеме. Как я могу это решить?
Ответ №1:
Для текстового поля существует один метод OnChanged() . Что дает вам обновленный текст. Вы можете сохранить этот текст в некоторой переменной и использовать ту же переменную для отображения текста там, где вы хотите его отобразить. Не забудьте вызвать setState() что-то вроде следующего в OnChanged(), чтобы обновить текст текстового поля.
setState(() { _memo = newTextValue; });