단위 설정 (섭씨/화씨) 변경 기능 구현

2025. 6. 16. 09:00·Flutter/Flutter 날씨 앱 만들기
728x90
반응형

기온을 보는 방식은 지역마다 다르다. 한국과 대부분의 국가는 섭씨(°C)를 사용하고, 미국은 화씨(°F)를 사용한다.

이번 글에서는 Flutter 날씨 앱에서 사용자가 섭씨/화씨 단위를 전환할 수 있는 기능을 직접 구현해본다.


🌡️ OpenWeather API의 단위 지원

OpenWeather API는 단위를 간단한 파라미터로 조절할 수 있다.

units=metric     // 섭씨
units=imperial  // 화씨

아무 단위도 지정하지 않으면 Kelvin(기본값)으로 반환되니 반드시 설정해줘야 한다.


⚙️ 단위 설정 상태 관리

앱 전체에서 사용할 수 있도록 enum과 상태 변수를 관리하자.

enum TempUnit { celsius, fahrenheit }

TempUnit currentUnit = TempUnit.celsius;

String getUnitParam() {
  return currentUnit == TempUnit.celsius ? 'metric' : 'imperial';
}

추후 Provider, Riverpod 등을 활용해 전역 상태로도 관리 가능하다.


📲 단위 전환 UI 구성

Row(
  mainAxisAlignment: MainAxisAlignment.center,
  children: [
    Text("°C"),
    Switch(
      value: currentUnit == TempUnit.fahrenheit,
      onChanged: (val) {
        setState(() {
          currentUnit = val ? TempUnit.fahrenheit : TempUnit.celsius;
          fetchWeather(); // 단위 변경 후 날씨 새로 불러오기
        });
      },
    ),
    Text("°F"),
  ],
)

스위치 또는 ToggleButtons를 활용해 사용자 선택 UI를 제공한다.


📡 API 요청 시 단위 적용

final url =
  'https://api.openweathermap.org/data/2.5/weather?q=Seoul&units=${getUnitParam()}&appid=$apiKey';

단위 설정값을 반영하여 API 요청 시에 함께 전달해야 정확한 결과를 받을 수 있다.


📖 온도 단위 표시 포맷

String formatTemperature(double temp) {
  return currentUnit == TempUnit.celsius
    ? '${temp.toStringAsFixed(1)}°C'
    : '${temp.toStringAsFixed(1)}°F';
}

UI에서 출력할 때도 단위 표시를 명확히 해야 혼동이 없다.


🧘 마무리하며

단위 설정은 단순해 보이지만, 사용자 경험을 글로벌하게 만드는 핵심이다.
Flutter 앱에서도 설정 하나로 섭씨와 화씨를 자유롭게 전환할 수 있는 기능을 더해보자.

디테일한 설정이 완성도 높은 날씨 앱을 만든다.

✍️ 이 글은 터미널 밖으로 나온 개발자의 Flutter 날씨 앱 만들기 여정입니다.

728x90
반응형

'Flutter > Flutter 날씨 앱 만들기' 카테고리의 다른 글

위젯처럼 홈 화면에서 현재 날씨 보여주기  (0) 2025.06.17
즐겨찾는 도시 날씨 추가 및 리스트 보기  (0) 2025.06.15
아이콘과 애니메이션으로 날씨 표현 개선  (1) 2025.06.14
온도, 습도, 바람 정보 시각화하기  (0) 2025.06.13
날씨에 따라 배경 바꾸기 — 애니메이션과 날씨 감성 UI  (2) 2025.06.12
'Flutter/Flutter 날씨 앱 만들기' 카테고리의 다른 글
  • 위젯처럼 홈 화면에서 현재 날씨 보여주기
  • 즐겨찾는 도시 날씨 추가 및 리스트 보기
  • 아이콘과 애니메이션으로 날씨 표현 개선
  • 온도, 습도, 바람 정보 시각화하기
코드를 걷는 사람
코드를 걷는 사람
devwanderer 님의 블로그 입니다.
  • 코드를 걷는 사람
    터미널 밖으로 나온 개발자
    코드를 걷는 사람
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Flutter
        • Flutter 게시판 앱 만들기
        • Flutter 뉴스 앱 만들기
        • Flutter 메모 앱 만들기
        • Flutter 캘린더 앱 만들기
        • Flutter 날씨 앱 만들기
      • Next.js
      • Ruby On Rails
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Nextjs
    백엔드개발
    UIUX
    flutter게시판
    flutter상태관리
    ActiveRecord
    Flutter
    다크모드
    rails보안
    코드를걷는사람
    fluttertips
    flutterui
    메모앱
    flutter기초
    모바일앱개발
    감성앱
    개발블로그
    북마크기능
    캘린더앱
    뉴스앱
    정적사이트
    flutter개발
    UI디자인
    RubyOnRails
    날씨앱
    flutter앱개발
    table_calendar
    openweather
    flutter디자인
    Firebase
  • 최근 댓글

  • 최근 글

  • 반응형
    250x250
  • hELLO· Designed By정상우.v4.10.3
코드를 걷는 사람
단위 설정 (섭씨/화씨) 변경 기능 구현
상단으로

티스토리툴바