key, required this.personId}) : super(key: key);
PostsController controller = Get.put(PostsController());
void addPost() {
if (controller.titleController.text.isEmpty ||
controller.bodyController.text.isEmpty) return;
var post = Post(
userId: personId,
title: controller.titleController.text,
body: controller.bodyController.text,
);
controller.titleController.text = '';
controller.bodyController.text = '';
controller.addPost(data: post);
}
@override
Widget build(BuildContext context) {
return ElevatedButton(
onPressed: () => showDialog<String>(
context: context,
builder: (BuildContext context) => AlertDialog(
title: Container(
height: 100,
child: TextFormField(
autofocus: true,
onEditingComplete: () {
controller.bodyFocus.requestFocus();
},
controller: controller.titleController,
decoration: const InputDecoration(
hintText: 'Title',
border: InputBorder.none,
)),
),
content: TextFormField(
controller: controller.bodyController,
focusNode: controller.bodyFocus,
maxLines: 5,
decoration: const InputDecoration(
hintText: 'Body',
border: InputBorder.none,
)),
actions: <Widget>[
TextButton(
onPressed: () => Navigator.pop(context, 'Cancel'),
child: const Text('Cancel'),
),
TextButton(
onPressed: () {
addPost();
Navigator.pop(context, 'Create');
},
child: const Text('Create'),
),
],
),
),
child: const Text('create post', style: TextStyle(color: Colors.black)),
);
}
}
ММММ. Навигация из ui )
ММММ. Бизнес логика в onPressed )
Обсуждают сегодня