2022 최신버전으로 수정 😌

main.dart파일에 작성된 최상단 MaterialApp안에 child를 wrap widget을 해서
GestureDetector로 감싸준다.

그리고 FocusManager.instance.primaryFocus?.unfocus(); 작성

onTap: () => FocusManager.instance.primaryFocus?.unfocus(),

Full code:


Widget build(BuildContext context) {
  return MaterialApp(
    theme: DoryThemes.lightTheme,
    home: const HomePage(),
    builder: (context, child) => MediaQuery(
      child: GestureDetector(
        onTap: () => FocusManager.instance.primaryFocus?.unfocus(),
        child: child!,
      ),
      data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0),
    ),
  );
}  

설명

  • 가장 최상단 위젯에 GestureDetector 감싸기
    • VSCode 기준 Ctrl + . 해서 widget 감싸는걸로 하고 Gesture 자동완성
  • ontap()이라는 이벤트가 잘 먹히는지 테스트 후 _focusNode.unfocus(); 호출


update Code

GestureDetector(
      onTap: () => FocusScope.of(context).unfocus(),
      child: ...
)

Code

final _focusNode = FocusScopeNode();

...

Widget build(BuildContext context) {
  return GestureDetector(
      onTap: () {
        print('click');
        _focusNode.unfocus();
      },
      child: 
        ...
        FocusScope(
          node: _focusNode,
          child: Scaffold
        ...
profile
𝙸 𝚊𝚖 𝚊 𝚌𝚞𝚛𝚒𝚘𝚞𝚜 𝚍𝚎𝚟𝚎𝚕𝚘𝚙𝚎𝚛 𝚠𝚑𝚘 𝚎𝚗𝚓𝚘𝚢𝚜 𝚍𝚎𝚏𝚒𝚗𝚒𝚗𝚐 𝚊 𝚙𝚛𝚘𝚋𝚕𝚎𝚖. 🇰🇷👩🏻‍💻

1개의 댓글

comment-user-thumbnail
2022년 12월 5일

오 오늘도 역시나 다보님 블로그 였네요! 항상 플루터 개발할 때 큰 도움 받고 있습니다 감사합니다!

답글 달기