시간대별/주간 날씨 예보 표시

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

Flutter 날씨 앱에서 현재 날씨만 보여주는 건 부족하다.
앞으로 몇 시간 후, 며칠 후 날씨까지 보여줘야 사용자는 더 똑똑하게 하루를 계획할 수 있다.

이번 글에서는 OpenWeather의 forecast API를 이용해 시간대별 및 주간 예보를 Flutter 앱에 구현해보자.


🌤️ forecast API 사용하기

OpenWeatherMap은 두 가지 예보 API를 제공한다.

  • 5-day / 3-hour forecast → 3시간 간격으로 5일치 예보
  • One Call API → 현재, 분단위, 시간별, 일별 통합 정보 제공 (유료 포함)

이번 글에서는 /forecast 엔드포인트를 사용한다.

https://api.openweathermap.org/data/2.5/forecast?lat={lat}&lon={lon}&appid={API_KEY}&units=metric

📦 응답 데이터 구조

{
  "list": [
    {
      "dt": 1717585200,
      "main": { "temp": 22.1 },
      "weather": [ { "description": "clear sky", "icon": "01d" } ],
      ...
    },
    ...
  ]
}

list 배열에 3시간 간격 예보가 담겨 있고, 총 40개 정도의 데이터가 있다 (5일 × 8 = 40).


🕐 시간대별 날씨 UI 구성

ListView.builder(
  scrollDirection: Axis.horizontal,
  itemCount: forecast.length,
  itemBuilder: (context, index) {
    final item = forecast[index];
    final time = DateFormat.Hm().format(item['dt_txt']);
    return Column(
      children: [
        Text(time),
        Image.network("http://openweathermap.org/img/wn/${item['weather'][0]['icon']}@2x.png"),
        Text("${item['main']['temp']}°C"),
      ],
    );
  },
)

스크롤 가능한 가로형 카드 UI를 만들면 하루의 흐름을 시각적으로 한눈에 볼 수 있다.


📅 주간 예보 구현하기

3시간 단위 예보에서 하루 중 가장 많은 시간대(예: 오후 3시)를 기준으로 추려낸다.

Map<String, List<dynamic>> dailyGroups = {};

for (var item in forecast) {
  String date = item['dt_txt'].split(' ')[0];
  dailyGroups.putIfAbsent(date, () => []).add(item);
}

List<Widget> dailyForecast = dailyGroups.entries.map((entry) {
  final day = entry.key;
  final items = entry.value;
  final middle = items[items.length ~/ 2];

  return ListTile(
    leading: Image.network("http://openweathermap.org/img/wn/${middle['weather'][0]['icon']}@2x.png"),
    title: Text("$day"),
    subtitle: Text("${middle['main']['temp']}°C, ${middle['weather'][0]['main']}"),
  );
}).toList();

하루의 평균 혹은 중간 시간대 데이터를 보여주면 주간 예보 형태로 정리할 수 있다.


📌 UI/UX 팁

  • 요일 단위로 표시 (예: 월, 화, 수)
  • 아이콘과 텍스트 색상은 날씨 상태에 따라 변경
  • 주간 예보는 ExpansionTile 등으로 세부 예보 열기

🧘 마무리하며

하루를 계획할 수 있는 앱, 한 주를 준비하게 해주는 앱 — 그게 바로 예보 기능이 들어간 Flutter 날씨 앱이다.

예보를 UI로 잘 풀어내는 것, 그게 좋은 날씨 앱의 완성이다.

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

728x90
반응형

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

온도, 습도, 바람 정보 시각화하기  (0) 2025.06.13
날씨에 따라 배경 바꾸기 — 애니메이션과 날씨 감성 UI  (2) 2025.06.12
위치 기반 날씨 정보 — GPS 권한 설정과 위치 사용  (0) 2025.06.10
OpenWeather API 연동하기 — 실시간 날씨 받아오기  (0) 2025.06.09
날씨 앱 UI 디자인 — 깔끔하고 직관적인 레이아웃  (0) 2025.06.08
'Flutter/Flutter 날씨 앱 만들기' 카테고리의 다른 글
  • 온도, 습도, 바람 정보 시각화하기
  • 날씨에 따라 배경 바꾸기 — 애니메이션과 날씨 감성 UI
  • 위치 기반 날씨 정보 — GPS 권한 설정과 위치 사용
  • OpenWeather API 연동하기 — 실시간 날씨 받아오기
코드를 걷는 사람
코드를 걷는 사람
devwanderer 님의 블로그 입니다.
  • 코드를 걷는 사람
    터미널 밖으로 나온 개발자
    코드를 걷는 사람
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Flutter
        • Flutter 게시판 앱 만들기
        • Flutter 뉴스 앱 만들기
        • Flutter 메모 앱 만들기
        • Flutter 캘린더 앱 만들기
        • Flutter 날씨 앱 만들기
      • Next.js
      • Ruby On Rails
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • 반응형
    250x250
  • hELLO· Designed By정상우.v4.10.3
코드를 걷는 사람
시간대별/주간 날씨 예보 표시
상단으로

티스토리툴바