날짜별 뉴스 필터링 기능 구현하기

2025. 5. 27. 16:32·Flutter/Flutter 뉴스 앱 만들기
728x90
반응형

뉴스 앱을 만들다 보면 사용자가 원하는 날짜의 기사만 보고 싶어하는 경우가 생긴다.
특히 시사/경제 뉴스일수록 "어제 뉴스만 보기" 같은 필터링 기능이 중요하다.
이번 글에서는 Flutter에서 DatePicker를 통해 날짜를 선택하고, 해당 날짜에 해당하는 뉴스만 필터링하는 UI를 구현해보자.


📅 날짜 선택을 위한 DatePicker 구현

void _selectDate(BuildContext context) async {
  final DateTime? picked = await showDatePicker(
    context: context,
    initialDate: DateTime.now(),
    firstDate: DateTime(2020),
    lastDate: DateTime.now(),
  );

  if (picked != null && picked != _selectedDate) {
    setState(() {
      _selectedDate = picked;
      _filterNewsByDate();
    });
  }
}

Flutter에서 제공하는 showDatePicker()는 직관적인 UI를 제공해
모바일에서도 터치로 쉽게 날짜를 선택할 수 있다.


🧠 날짜 기준 뉴스 필터링 로직

API에서 모든 데이터를 받아왔다는 전제 하에, publishedAt 필드 기준으로 뉴스 리스트를 걸러보자.

void _filterNewsByDate() {
  final selected = DateFormat('yyyy-MM-dd').format(_selectedDate);
  final filtered = _allNews.where((news) {
    final date = DateFormat('yyyy-MM-dd').format(news.publishedAt);
    return date == selected;
  }).toList();

  setState(() {
    _filteredNews = filtered;
  });
}

시간까지 비교하면 오차가 생기기 쉬우니, 날짜만 포맷해서 비교하는 것이 중요하다.


🖥️ 전체 UI 구성 예시

@override
Widget build(BuildContext context) {
  return Scaffold(
    appBar: AppBar(
      title: const Text("뉴스"),
      actions: [
        IconButton(
          icon: Icon(Icons.date_range),
          onPressed: () => _selectDate(context),
        )
      ],
    ),
    body: _filteredNews.isEmpty
        ? Center(child: Text("해당 날짜의 뉴스가 없습니다"))
        : ListView.builder(
            itemCount: _filteredNews.length,
            itemBuilder: (context, index) {
              return NewsCard(news: _filteredNews[index]);
            },
          ),
  );
}

상단 앱바에 날짜 아이콘을 배치하고, 선택된 날짜에 따라 ListView를 업데이트하는 구조다.


📌 팁: 서버 측 필터링이 가능한 경우

데이터가 너무 많거나 성능상 부담이 된다면, 날짜를 서버로 전달해 필터링된 결과만 받아오는 방식도 좋다.

// 예시
final url = 'https://example.com/news?date=2025-05-27';
final response = await http.get(Uri.parse(url));

이 방식은 앱의 부하를 줄이고, 필요한 데이터만 받아오기 때문에 실무에서 많이 쓰인다.


🧘 마무리하며

뉴스는 시간의 흐름을 따라가고, 사용자는 그 흐름 중 원하는 지점을 찾는다.
날짜 필터링 기능은 단순한 기술이 아니라, 사용자의 정보 탐색 경험을 돕는 도구다.

오늘의 뉴스만 보고 싶은 누군가를 위해, 날짜 선택을 선물하자.

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

728x90
반응형

'Flutter > Flutter 뉴스 앱 만들기' 카테고리의 다른 글

카테고리 탭 만들기 — 정치, 경제, 스포츠를 손쉽게 구분하기  (0) 2025.05.27
뉴스 상세 페이지 — 이미지, 본문, 공유 버튼까지 세련되게  (0) 2025.05.27
무한 스크롤 구현 — 더 보기 없이 계속 내려보는 뉴스 피드 만들기  (0) 2025.05.27
HTTP 통신으로 뉴스 불러오기 — http 패키지와 JSON 파싱 완전정복  (0) 2025.05.27
뉴스 앱 UI 설계 — 카드형 vs 리스트형 어떤 게 더 좋을까?  (2) 2025.05.27
'Flutter/Flutter 뉴스 앱 만들기' 카테고리의 다른 글
  • 카테고리 탭 만들기 — 정치, 경제, 스포츠를 손쉽게 구분하기
  • 뉴스 상세 페이지 — 이미지, 본문, 공유 버튼까지 세련되게
  • 무한 스크롤 구현 — 더 보기 없이 계속 내려보는 뉴스 피드 만들기
  • HTTP 통신으로 뉴스 불러오기 — http 패키지와 JSON 파싱 완전정복
코드를 걷는 사람
코드를 걷는 사람
devwanderer 님의 블로그 입니다.
  • 코드를 걷는 사람
    터미널 밖으로 나온 개발자
    코드를 걷는 사람
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Flutter
        • Flutter 게시판 앱 만들기
        • Flutter 뉴스 앱 만들기
        • Flutter 메모 앱 만들기
        • Flutter 캘린더 앱 만들기
        • Flutter 날씨 앱 만들기
      • Next.js
      • Ruby On Rails
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • 반응형
    250x250
  • hELLO· Designed By정상우.v4.10.3
코드를 걷는 사람
날짜별 뉴스 필터링 기능 구현하기
상단으로

티스토리툴바