Flutter Bottomsheet在关闭键盘后重新加载问题



在todoapp中,我试图从任务列表中编辑单个任务。单击编辑图标后,我可以使用showmodalbottomsheet函数打开一个底部表单小部件,并使用textditingcontrollers预先填充了两个文本字段。当我尝试编辑单个文本字段并取消键盘时,底部表单再次加载以前的值。我无法保存我编辑过的值,请帮忙

我使用了无状态的bottomsheet widget。

代码如下。我知道这不是理想的编码方式。但我试图得到工作的功能,以后我会在优化工作。

Tasklist.dart

IconButton (图标:图标(Icons.edit),onPressed: () {_startEditTask(context, index);//index是来自lisview的单个任务}),

void _startEditTask(BuildContext ctx, int index){
showModalBottomSheet(context: ctx, builder: (btx){
return GestureDetector(
onTap: (){},
child: EditTask(_taskList[index].taskName,_taskList[index].description,index,_editTask),
);
});
}
void _editTask(String taskName, String description, int index){
setState(() {
_taskList[index].taskName = taskName;
_taskList[index].description = description;
});
}

EditTask.dart

class EditTask extends StatelessWidget {
EditTask(this.taskName,this.description,this.index,this.editTask);
String taskName;
String description;
int index;
final Function editTask;
var taskNameController = TextEditingController();
var taskDescriptionController = TextEditingController();
@override
Widget build(BuildContext context) {
taskNameController.text = taskName;
taskDescriptionController.text = description;
return Column(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
TextField(
controller: taskNameController,
decoration: InputDecoration(
labelText: 'Task Name'
),
),
TextField(
controller: taskDescriptionController,
decoration: InputDecoration(
labelText: 'Description'
),
),
TextButton(
child: Text('Save Task'),
onPressed: (){
editTask(taskNameController.text,taskDescriptionController.text,index);
Navigator.of(context).pop();
},
)
],
);
}
}
StatelessWidget

StatefulWidget 

将解决您的问题----试试现在


class EditTask extends StatelessWidget

class EditTask extends StatefulWidget

最新更新