메모 태그 분류 — 주제별로 필터링하는 법

2025. 5. 28. 16:15·Flutter/Flutter 메모 앱 만들기
728x90
반응형

메모가 많아질수록 필요한 메모를 찾는 건 점점 어려워진다.
이럴 때 태그 분류는 사용자가 메모를 주제별로 정리하고, 쉽게 찾아볼 수 있도록 돕는다.

이번 글에서는 Flutter 메모 앱에 태그 입력, 저장, 필터링 기능을 도입해보자.


🏷️ 메모에 태그 필드 추가하기

모델에 tags라는 문자열 필드를 추가하자. 간단하게 콤마(,)로 구분된 태그로 구성한다.

class Memo {
  final int? id;
  final String content;
  final String tags;

  Memo({this.id, required this.content, this.tags = ""});

  Map<String, dynamic> toMap() {
    return {
      'id': id,
      'content': content,
      'tags': tags,
    };
  }

  factory Memo.fromMap(Map<String, dynamic> map) {
    return Memo(
      id: map['id'],
      content: map['content'],
      tags: map['tags'],
    );
  }
}

🗃️ DB 테이블 수정

CREATE TABLE memos (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  content TEXT,
  tags TEXT
)

기존 DB에서 테이블을 마이그레이션 하거나, 초기 개발 중이라면 새로 생성해도 된다.


📝 메모 작성 시 태그 입력

TextEditingController _tagController = TextEditingController();

TextField(
  controller: _tagController,
  decoration: InputDecoration(
    labelText: '태그 (쉼표로 구분)',
    hintText: '예: 일기, 업무, 공부',
  ),
)

이렇게 입력된 태그는 문자열 그대로 저장하고, 나중에 split하여 리스트로 활용할 수 있다.


🔍 태그별 메모 필터링

특정 태그를 기준으로 메모를 필터링하려면 SQL 쿼리에서 LIKE 연산을 사용할 수 있다.

Future<List<Memo>> fetchMemosByTag(String tag) async {
  final db = await MemoDatabase.database;
  final result = await db.query(
    'memos',
    where: 'tags LIKE ?',
    whereArgs: ['%$tag%'],
  );
  return result.map((e) => Memo.fromMap(e)).toList();
}

단순한 문자열 검색이므로 “공부” 태그만 필터링해도 “공부,일기”에 포함된 메모가 함께 나온다.


📱 태그 선택 UI 구성

final List<String> tagOptions = ['일기', '업무', '공부', '개인', '기타'];

Wrap(
  spacing: 8,
  children: tagOptions.map((tag) {
    return ChoiceChip(
      label: Text(tag),
      selected: selectedTag == tag,
      onSelected: (selected) {
        setState(() {
          selectedTag = selected ? tag : null;
          _loadFilteredMemos();
        });
      },
    );
  }).toList(),
)

ChoiceChip을 사용하면 감성적이고 직관적인 태그 UI를 만들 수 있다.


💡 UX 개선 팁

  • 태그 입력은 자동완성(autocomplete) 형태로 개선 가능
  • 태그 컬러를 랜덤 또는 지정해서 시각적으로 구분
  • 중복 태그 입력 방지 로직도 고려

🧘 마무리하며

기록한 메모가 많아지는 건 좋은 일이다.
하지만 그 메모를 잘 찾지 못한다면, 기록은 흘러가는 텍스트일 뿐이다.

태그는 기억을 붙잡는 작은 고리다.
Flutter 메모 앱에 이 작은 고리를 걸어보자.

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

728x90
반응형

'Flutter > Flutter 메모 앱 만들기' 카테고리의 다른 글

음성 메모 녹음 기능 추가하기  (0) 2025.05.28
다크 모드와 배경 커스터마이징 — 메모에 감성 더하기  (0) 2025.05.28
메모 고정 핀 기능 — 자주 쓰는 메모는 상단 고정  (0) 2025.05.28
로컬 DB로 저장하기 — sqflite를 활용한 오프라인 저장소  (0) 2025.05.28
메모 CRUD 기능 구현 — 추가, 수정, 삭제 기본기 익히기  (0) 2025.05.28
'Flutter/Flutter 메모 앱 만들기' 카테고리의 다른 글
  • 음성 메모 녹음 기능 추가하기
  • 다크 모드와 배경 커스터마이징 — 메모에 감성 더하기
  • 메모 고정 핀 기능 — 자주 쓰는 메모는 상단 고정
  • 로컬 DB로 저장하기 — sqflite를 활용한 오프라인 저장소
코드를 걷는 사람
코드를 걷는 사람
devwanderer 님의 블로그 입니다.
  • 코드를 걷는 사람
    터미널 밖으로 나온 개발자
    코드를 걷는 사람
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Flutter
        • Flutter 게시판 앱 만들기
        • Flutter 뉴스 앱 만들기
        • Flutter 메모 앱 만들기
        • Flutter 캘린더 앱 만들기
        • Flutter 날씨 앱 만들기
      • Next.js
      • Ruby On Rails
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • 반응형
    250x250
  • hELLO· Designed By정상우.v4.10.3
코드를 걷는 사람
메모 태그 분류 — 주제별로 필터링하는 법
상단으로

티스토리툴바