SWM-15th-Dnight / flutter-client

android / ios client source code
0 stars 0 forks source link

공통적으로 사용하는 rounded box form 만들어 사용하기 #43

Open call-me-bammer opened 2 weeks ago

call-me-bammer commented 2 weeks ago

현재 이메일 및 비밀번호 폼, plainText 일정 등록 폼 등 모두 기본 bottom border만 표시되어 있는 폼을 쓰는데 아래 형식대로 바꿔서 사용할 것이다.

폼 우측 바깥 아이콘은 폼과 별개로 구현하고 그럴 것임.

Image

call-me-bammer commented 2 weeks ago

기존의 AuthTextFormField에서의 변경사항 입니다. 이름은 나중에 RoundedInputBox로 바꾸겠습니다.

TextFormField를 Container로 감싸고 아래 decoration 속성을 줘서, 반원 형태로 양끝을 마감하고 drop shadow를 줍니다. 피그마에서 drop shadow에 줄 수 있는 부분과 동일해서 거의 똑같이 보입니다.

decoration: BoxDecoration(
        color: ColorPalette.GRAY_COLOR[50]!,
        borderRadius: BorderRadius.circular(45),
        boxShadow: [
          BoxShadow(
            color: Colors.black.withOpacity(0.25),
            blurRadius: 4,
            offset: Offset(0, 4),
          ),
        ],
      ),

TextFormField 안의 decoration, InputDecoration에서는 hintStyle, suffixIcon, onIconPressed 등을 줍니다.

InputBorder.none으로 TextFormField의 기본 하단 스트로크를 없앱니다.

decoration: InputDecoration(
          hintText: hintText,
          hintStyle: TextStyle(
            color: ColorPalette.GRAY_COLOR[400]!,
            fontSize: 14,
          ),
          counterText: '',
          /* give contentPadding to hintText align vertically center */
          contentPadding: EdgeInsets.symmetric(vertical: 12),
          /* set prefix to default IconButton size to hintText align horizontally center */
          prefix: SizedBox(width: 48),
          suffixIcon: IconButton(
            icon: Icon(
              suffixIcon,
              color: ColorPalette.GRAY_COLOR[400]!,
              size: 18,
            ),
            onPressed: () {
              onIconPressed();
            },
          ),
          enabledBorder: InputBorder.none,
          focusedBorder: InputBorder.none,
        ),

Image

call-me-bammer commented 2 weeks ago

UI 기준 height: 36으로 맞춰야하는데, 전송 또는 음성 입력 버튼과 Row 내에서 해당 폼들이 Expanded로 묶여있어서, Container로 감싸도 너비 및 높이 조절이 당장은 불가능함. 너무 높아서 어색하다 싶으면 수정하겠음.

아무튼 RoundedInputBox으로 위젯 및 파일명 변경했고, 로그인 및 자연어, 음성 입력 동작 확인함.

참고로 최대로 입력할 수 있는 길이, maxLength에 대해서

Image