카테고리 탭 만들기 — 정치, 경제, 스포츠를 손쉽게 구분하기

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

뉴스를 더 보기 좋게 나누는 방법은 다양하지만, 가장 흔하고 효과적인 방식은 카테고리 탭이다.
정치, 경제, 스포츠, 기술 등 관심 있는 분야만 쏙쏙 골라보는 경험은 사용자에게 편안함을 준다.

이번 글에서는 Flutter에서 TabBar와 TabBarView를 활용해 뉴스 앱에 탭 형태의 카테고리 UI를 구현해보자.


📐 기본 구조 — DefaultTabController

가장 간단한 방식은 DefaultTabController를 사용하는 것이다. 탭 개수만 정해주면 된다.

DefaultTabController(
  length: 3, // 탭 수
  child: Scaffold(
    appBar: AppBar(
      title: Text("뉴스 카테고리"),
      bottom: TabBar(
        tabs: [
          Tab(text: "정치"),
          Tab(text: "경제"),
          Tab(text: "스포츠"),
        ],
      ),
    ),
    body: TabBarView(
      children: [
        CategoryNewsView(category: 'politics'),
        CategoryNewsView(category: 'economy'),
        CategoryNewsView(category: 'sports'),
      ],
    ),
  ),
)

TabBar는 상단 UI, TabBarView는 실제 콘텐츠를 보여주는 부분이다.
같은 인덱스로 매칭되기 때문에 순서가 중요하다.


🧱 카테고리별 뉴스 불러오기 구조

각 탭은 해당 카테고리에 맞는 뉴스를 불러와야 한다. 이를 위해 CategoryNewsView라는 재사용 가능한 위젯을 만들자.

class CategoryNewsView extends StatelessWidget {
  final String category;
  const CategoryNewsView({super.key, required this.category});

  @override
  Widget build(BuildContext context) {
    return FutureBuilder<List<News>>(
      future: fetchNewsByCategory(category),
      builder: (context, snapshot) {
        if (snapshot.connectionState == ConnectionState.waiting) {
          return Center(child: CircularProgressIndicator());
        }
        if (snapshot.hasError) {
          return Center(child: Text("에러 발생"));
        }
        final newsList = snapshot.data!;
        return ListView.builder(
          itemCount: newsList.length,
          itemBuilder: (context, index) {
            return NewsCard(news: newsList[index]);
          },
        );
      },
    );
  }
}

이 구조를 통해 코드 중복 없이 카테고리 탭별 뉴스 뷰를 깔끔하게 분리할 수 있다.


🎨 디자인 팁: 탭 스타일 다듬기

bottom: TabBar(
  labelColor: Colors.black,
  unselectedLabelColor: Colors.grey,
  indicatorColor: Colors.blueAccent,
  indicatorWeight: 3,
  tabs: [...],
),

탭의 선택/비선택 상태 컬러, 인디케이터 스타일을 조절하면 브랜드 느낌에 더 잘 맞게 구성할 수 있다.


💡 상태 관리가 필요하다면?

  • 카테고리 선택 → 상태로 저장 (ex. Riverpod, Provider)
  • 앱 내 전역 카테고리 유지 시에도 연동 가능
  • 탭 이동 시마다 API 요청 or 캐싱 처리 선택 가능

작은 프로젝트는 FutureBuilder로, 큰 프로젝트는 상태 관리 라이브러리와 함께 사용하자.


🧘 마무리하며

정치든 경제든, 사용자는 자신이 원하는 콘텐츠에 빠르게 접근하고 싶다.
Flutter에서의 탭 UI는 그 흐름을 자연스럽게 만들어준다.

한 줄 한 줄의 뉴스보다, 하나의 탭이 더 많은 차이를 만든다.

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

728x90
반응형

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

다크 모드 대응하기 — 눈에 편안한 뉴스 보기  (0) 2025.05.27
좋아요 및 북마크 기능 추가 — 내가 좋아한 뉴스 저장하기  (0) 2025.05.27
뉴스 상세 페이지 — 이미지, 본문, 공유 버튼까지 세련되게  (0) 2025.05.27
날짜별 뉴스 필터링 기능 구현하기  (0) 2025.05.27
무한 스크롤 구현 — 더 보기 없이 계속 내려보는 뉴스 피드 만들기  (0) 2025.05.27
'Flutter/Flutter 뉴스 앱 만들기' 카테고리의 다른 글
  • 다크 모드 대응하기 — 눈에 편안한 뉴스 보기
  • 좋아요 및 북마크 기능 추가 — 내가 좋아한 뉴스 저장하기
  • 뉴스 상세 페이지 — 이미지, 본문, 공유 버튼까지 세련되게
  • 날짜별 뉴스 필터링 기능 구현하기
코드를 걷는 사람
코드를 걷는 사람
devwanderer 님의 블로그 입니다.
  • 코드를 걷는 사람
    터미널 밖으로 나온 개발자
    코드를 걷는 사람
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Flutter
        • Flutter 게시판 앱 만들기
        • Flutter 뉴스 앱 만들기
        • Flutter 메모 앱 만들기
        • Flutter 캘린더 앱 만들기
        • Flutter 날씨 앱 만들기
      • Next.js
      • Ruby On Rails
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • 반응형
    250x250
  • hELLO· Designed By정상우.v4.10.3
코드를 걷는 사람
카테고리 탭 만들기 — 정치, 경제, 스포츠를 손쉽게 구분하기
상단으로

티스토리툴바