inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[Bloc 응용] 실전 앱 만들기 (책 리뷰 앱) : SNS 로그인, Firebase 적용, Bloc 상태 관리, GoRouter

리뷰 슬라이더 직접 만들기

실제 폰에서 테스트 시 리뷰 작성 버튼 위치

해결된 질문

251

011414

작성한 질문수 10

0

강사님.. 안녕하세요?

좋은 강의 제공해 주셔서 감사드립니다.

다름이 아니라 버그까진 아니지만, 실제 폰에 설치를 해서 테스트 해 보니

리뷰 작성시에 내용을 쓰고 저장하기 버튼을 클릭할 수 없는 상황이 되더라고요.

키보드가 내려오든가 입력 텍스트 박스를 줄이던가, 버튼이 누를 수 있게 올라가든가 하는 부분이 필요하지 않을까 생각됩니다.

flutter firebase bloc

답변 1

0

개발하는남자

확인해보니 그렇군요 시뮬레이터로 하다보니 가상 키보드가 올라오지 않아서 확인이 안됐었군요.

알려주셔서 감사합니다. 해당 문제는 여러가지 방법으로 문제를 해결 할 수 있겠지만 그 중 가장 간단한 방법은

하단 리뷰 TextField가 아닌 다른 영역을 더치시 키보드가 닫히도록 처리 하는 방법이 있습니다.

그것을 위해서는 body 영역의 Column 위젯을 GestureDetector로 감싸주고 onTap시 FocusScope를 onfocus 시켜주는 것입니다. 소스코드는 다음과 같습니다.

GestureDetector(
    onTap: () => FocusScope.of(context).unfocus(),
    behavior: HitTestBehavior.translucent,
    child: Column(
       children: [
         BookReviewHeaderWidget(
            naverBookInfo: naverBookInfo,
            reviewCountDisplayWidget: 
     // 이하 소스 동일 

이렇게 작성을 하게 되면 다른 영역 터치시 키보드가 다시 내려가는 것을 확인 할 수 있습니다.

그렇게 하면 발생되는 문제는 이상하게 수정한 내용이 다시 초기화 되는 문제가 발생되는 것을 알 수 있습니다.

그것은 _ReviewBox 위젯에 didUpdateWidget을 initReview 값으로 초기화 해주고 있기 때문입니다.

이 부분은 최초 위젯이 랜더링 될때만 initreview를 받고 그 이후에는 업데이트 해줄 필요가 없는 부분입니다.

그래서 최초 위젯 랜더링 시에는 editingController.text 값이 빈 상태이기 때문에 다음과 같은 조건을 추가해줘야 합니다.

  @override
  void didUpdateWidget(covariant _ReviewBox oldWidget) {
    super.didUpdateWidget(oldWidget);
    if (editingController.text.isEmpty) {
      editingController.text = widget.initReview ?? '';
    }
  }

이렇게 수정해주면 문제를 해결 할 수 있습니다.

 

또 다른 방법은 외부 라이브러리를 이용한 방법입니다.

keyboard_attachable

이 라이브러리를 사용하면 키보드 상단에 고정을 시키는 방식으로 채팅 화면을 생각하시면 쉬울 것입니다.

단 이렇게 하면 화면 디자인을 수정해 줘야 하는 부분도 있고 소스코드를 많이 수정해야 하는 부분이라

현 강의에서는 위 첫번째 방식으로 문제를 해결하는 것을 추천드리겠습니다.

 

0

011414

명쾌한 답변 감사드립니다.!!

Figma 디자인 링크는 어디서 받을 수 있을까요? ☺️

0

76

1

TextFiled 키보드, rebuild 이슈 - review_write_page.dart

0

61

1

오류..

0

149

2

혹시 웹에서 디버깅하시는분들은

0

441

1

비동기 처리방식

0

238

3

애뮬레이터 동작안됨과 xcode 실행안됨

0

196

1

기능별로 정리가 되지않아요

0

194

2

임포트 자동생성

0

229

4

클래스 이름 동시 변경

0

181

2

단축키옵션

0

200

2

의존성 세팅이 끝나면

0

114

1

플러터 설치

0

169

2

goRouter

0

158

2

appBar 텍스트 컬러 적용이 안돼요!

0

171

1

모델 객체에 대해

0

213

1

네이버api프로젝트세팅부분에서

0

291

2

doc id와 uid

0

455

2

샘플 소스 전체 다운받아볼 수 있을까요?

0

343

1

애플 로그인 위해 애플 개발자 인증센터는 Developer 프로그램 가입해야 하나요?

0

379

1

GoogleService-Info.plist > REVERSED_CLIENT_ID 안보입니다.

0

1608

2

즐겨찾기 기능 질문 요청드립니다..

1

486

1

리뷰작성 별점 문의

0

336

1

플러터 바탕화면 빠진후 앱 진행시

1

852

6

구글 로그인 관련 질문합니다.

0

235

1