뉴스 상세 페이지 — 이미지, 본문, 공유 버튼까지 세련되게

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

뉴스 앱을 만든다면, 메인 목록 다음으로 중요한 건 바로 상세 페이지다.
썸네일, 본문, 날짜, 공유 버튼... 이 모든 요소들이 잘 어우러져야 사용자에게 정보 전달은 물론 디자인 감성까지 줄 수 있다.

이번 글에서는 Flutter로 세련된 뉴스 상세 페이지를 만드는 구조를 공유해본다.


🧱 기본 레이아웃 설계

class NewsDetailScreen extends StatelessWidget {
  final News news;
  const NewsDetailScreen({super.key, required this.news});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("뉴스 상세")),
      body: SingleChildScrollView(
        padding: const EdgeInsets.all(16),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            Text(news.title, style: Theme.of(context).textTheme.headline6),
            const SizedBox(height: 8),
            Text(news.publishedAt.toString(), style: TextStyle(color: Colors.grey)),
            const SizedBox(height: 16),
            ClipRRect(
              borderRadius: BorderRadius.circular(8),
              child: Image.network(news.imageUrl),
            ),
            const SizedBox(height: 24),
            Text(news.content, style: Theme.of(context).textTheme.bodyText2),
            const SizedBox(height: 32),
            Center(
              child: ElevatedButton.icon(
                onPressed: () {
                  _shareNews(context, news);
                },
                icon: Icon(Icons.share),
                label: Text("공유하기"),
              ),
            )
          ],
        ),
      ),
    );
  }

SingleChildScrollView로 스크롤 가능하게 만들고,
텍스트, 이미지, 버튼을 자연스럽게 배치해준다.


📤 공유 기능 구현

공유 기능은 share_plus 패키지를 사용하면 간단하게 구현할 수 있다.

// pubspec.yaml
dependencies:
  share_plus: ^7.0.0
import 'package:share_plus/share_plus.dart';

void _shareNews(BuildContext context, News news) {
  final text = '${news.title}\n\n${news.link}';
  Share.share(text);
}

링크까지 포함한 뉴스 공유 기능은 실제 앱에서 가장 많이 쓰이는 UX 중 하나다.


🎨 감성 디자인 팁

  • 제목은 큰 글씨 + bold, 본문은 여백 넉넉히
  • 이미지 위에 반투명 gradient 넣으면 더욱 세련됨
  • 텍스트가 긴 경우 Text.rich + 하이라이트 처리도 고려

디자인은 사용자 경험의 절반을 담당한다. 작은 감성은 오래 기억된다.


📱 다양한 디바이스 대응

텍스트 길이가 길어도 레이아웃이 깨지지 않도록 하고,
이미지가 없을 경우 대체 이미지 또는 Placeholder 위젯으로 대응하는 것도 중요하다.

Image.network(
  news.imageUrl,
  errorBuilder: (context, error, stackTrace) {
    return Image.asset("assets/placeholder.png");
  },
)

🧘 마무리하며

뉴스 앱의 핵심은 콘텐츠고, 그 콘텐츠를 아름답게 감싸는 것이 상세 페이지다.
이미지와 본문, 공유 버튼이 조화롭게 배치되면
그 뉴스는 정보 그 이상이 된다 — 경험이 된다.

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

728x90
반응형

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

좋아요 및 북마크 기능 추가 — 내가 좋아한 뉴스 저장하기  (0) 2025.05.27
카테고리 탭 만들기 — 정치, 경제, 스포츠를 손쉽게 구분하기  (0) 2025.05.27
날짜별 뉴스 필터링 기능 구현하기  (0) 2025.05.27
무한 스크롤 구현 — 더 보기 없이 계속 내려보는 뉴스 피드 만들기  (0) 2025.05.27
HTTP 통신으로 뉴스 불러오기 — http 패키지와 JSON 파싱 완전정복  (0) 2025.05.27
'Flutter/Flutter 뉴스 앱 만들기' 카테고리의 다른 글
  • 좋아요 및 북마크 기능 추가 — 내가 좋아한 뉴스 저장하기
  • 카테고리 탭 만들기 — 정치, 경제, 스포츠를 손쉽게 구분하기
  • 날짜별 뉴스 필터링 기능 구현하기
  • 무한 스크롤 구현 — 더 보기 없이 계속 내려보는 뉴스 피드 만들기
코드를 걷는 사람
코드를 걷는 사람
devwanderer 님의 블로그 입니다.
  • 코드를 걷는 사람
    터미널 밖으로 나온 개발자
    코드를 걷는 사람
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Flutter
        • Flutter 게시판 앱 만들기
        • Flutter 뉴스 앱 만들기
        • Flutter 메모 앱 만들기
        • Flutter 캘린더 앱 만들기
        • Flutter 날씨 앱 만들기
      • Next.js
      • Ruby On Rails
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • 반응형
    250x250
  • hELLO· Designed By정상우.v4.10.3
코드를 걷는 사람
뉴스 상세 페이지 — 이미지, 본문, 공유 버튼까지 세련되게
상단으로

티스토리툴바