작성
·
27
·
수정됨
0
질문드립니다. :)
review_write_page.dart 에서
/////
class _ReviewBox extends StatefulWidget {
final String? initReview;
const _ReviewBox({super.key, this.initReview});
@override
State<_ReviewBox> createState() => _ReviewBoxState();
}
class _ReviewBoxState extends State<_ReviewBox> {
TextEditingController editingController = TextEditingController();
@override
void didUpdateWidget(covariant _ReviewBox oldWidget) {
super.didUpdateWidget(oldWidget);
editingController.text = widget.initReview ?? '';
}
@override
Widget build(BuildContext context) {
return TextField(
maxLines: null,
controller: editingController,
decoration: const InputDecoration(
border: InputBorder.none,
hintText: "리뷰를 입력해주세요.",
contentPadding: EdgeInsets.symmetric(horizontal: 25),
hintStyle: TextStyle(color: Color(0xff585858)),
),
onChanged: context.read<ReviewWriteCubit>().changeReview,
style: const TextStyle(color: Colors.white),
);
}
}
리뷰 작성 시,
iOS 실기기에서 TextFiled에 텍스트를 입력을 하면 키보드가 내려가지 않습니다.
이를 해결하기 위해서 FocusScope.of(context).unfocus();를 하면 키보드가 내려간다고 해서 Scafford 쪽에 GestureDetector onTap에 해당 함수를 호출하도록 했을 때는 TextFiled에 입력 텍스트가 없어지면서 초기화가 됩니다.
Android 실기기에서 TextField에 텍스트를 입력하고 키보드를 내릴 수가 있어서 내리면 TextField에 입력한 텍스트가 사라지면서 초기화됩니다.
어떻게 수정을 해야할까요? 🙂
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. 류지영님께서 겪고 계신 문제는 Flutter에서 키보드가 숨겨질 때 TextField의 값을 유지하는 것과 관련된 문제로 보입니다. 이와 관련된 문제는 Flutter 애플리케이션에서 State 관리와 위젯의 생명주기를 올바르게 이해하는 것이 중요합니다.
관련해서 유사한 문제를 해결한 게시물이 있습니다. 리뷰 작성화면에서 질문이 있습니다 질문에서 소개된 방법은 didUpdateWidget
메서드에 수정된 조건을 사용하여 이 문제를 해결하는 것입니다. ‘didUpdateWidget’에서 조건문을 변경하여 잘못된 초기화 문제를 해결할 수 있습니다.
문제 발생 시 ‘editingController.text’의 불필요한 초기화를 방지하기 위해 다음과 같은 방식으로 코드를 수정해보세요:
@override
void didUpdateWidget(covariant _ReviewBox oldWidget) {
super.didUpdateWidget(oldWidget);
if (oldWidget.initReview != widget.initReview) {
editingController.text = widget.initReview ?? '';
}
}
또한, FocusScope.of(context).unfocus();
를 사용해 키보드를 숨기는 새로운 GestureDetector를 추가하는 대신 TextField의 onChanged
메서드를 활용해 상태를 업데이트 하는 것이 유용할 수 있습니다.
문제를 해결하는데 어려움을 겪으신다면 추가 정보를 제공해주시면 더 자세한 도움을 드릴 수 있을 것 같습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.