欢迎加入开源鸿蒙跨平台社区:
https://openharmonycrossplatform.csdn.net

1. 项目概览

运行效果图

image-20260410193516519

image-20260410193454553

image-20260410193526553

image-20260410193536468

备忘录小工具是一款专为快速记录和管理个人信息设计的移动应用,旨在帮助用户捕捉灵感、管理待办事项,并通过提醒功能确保重要事情不被遗忘。

  • 核心功能:快速记录灵感、待办事项、支持语音输入、设置提醒、重要事情不忘记
  • 应用场景:日常笔记、灵感捕捉、任务管理、重要事件提醒
  • 目标用户:学生、职场人士、创意工作者、需要管理个人事务的人群

2. 系统架构与技术选型

2.1 技术栈

技术/框架 版本 用途 来源
Flutter 3.10+ 跨平台应用开发 Flutter官网
Dart 3.0+ 应用开发语言 Dart官网
Material Design 3 - UI设计规范 Material Design
intl ^0.18.0 日期时间格式化 pub.dev

2.2 系统架构

数据存储层

本地存储

云同步

数据模型层

Note

NoteType

业务逻辑层

笔记管理

分类管理

语音输入处理

提醒管理

用户界面层

笔记列表页面

分类管理页面

提醒页面

设置页面

用户界面层

业务逻辑层

数据模型层

数据存储层

2.3 模块划分

模块 主要职责 文件位置 说明
笔记管理 创建、编辑、删除笔记 lib/main_note_taker.dart 核心功能模块
分类管理 管理笔记分类 lib/main_note_taker.dart 支持多种笔记类型
语音输入 语音转文字功能 lib/main_note_taker.dart 支持语音添加笔记
提醒管理 设置和管理提醒 lib/main_note_taker.dart 确保重要事项不忘记
数据存储 存储和同步数据 lib/main_note_taker.dart 支持本地存储和云同步

3. 核心功能模块

3.1 笔记管理

功能说明:用户可以快速创建、编辑和删除笔记,支持不同类型的笔记管理。

实现思路

  • 使用 Note 类表示笔记,包含标题、内容、类型、提醒等信息
  • 支持笔记的创建、删除和状态更新
  • 提供笔记列表展示和详情查看

核心代码

class Note {
  final String id;
  final String title;
  final String content;
  final NoteType type;
  final bool isReminderSet;
  final DateTime? reminderTime;
  final DateTime createdAt;
  final DateTime updatedAt;
  final bool isCompleted;

  Note({
    required this.id,
    required this.title,
    required this.content,
    required this.type,
    this.isReminderSet = false,
    this.reminderTime,
    DateTime? createdAt,
    DateTime? updatedAt,
    this.isCompleted = false,
  })  : createdAt = createdAt ?? DateTime.now(),
        updatedAt = updatedAt ?? DateTime.now();

  // 其他方法...
}

3.2 分类管理

功能说明:提供多种笔记分类,方便用户对笔记进行组织和管理。

实现思路

  • 使用 NoteType 枚举定义预设分类
  • 每个分类包含名称、emoji和颜色
  • 支持按分类查看和管理笔记

核心代码

enum NoteType {
 灵感(label: '灵感', emoji: '💡', color: Colors.yellow),
 待办事项(label: '待办事项', emoji: '✅', color: Colors.green),
 笔记(label: '笔记', emoji: '📝', color: Colors.blue),
 重要(label: '重要', emoji: '⭐', color: Colors.red),
 其他(label: '其他', emoji: '📌', color: Colors.grey);

  final String label;
  final String emoji;
  final Color color;

  const NoteType({
    required this.label,
    required this.emoji,
    required this.color,
  });
}

3.3 语音输入

功能说明:支持语音输入添加笔记,提高用户操作效率。

实现思路

  • 提供语音输入按钮,切换语音输入模式
  • 模拟语音识别功能,实际项目中可集成语音识别API

核心代码

TextField(
  controller: _contentController,
  decoration: InputDecoration(
    labelText: '内容',
    hintText: '输入笔记内容',
    suffixIcon: IconButton(
      icon: Icon(_isVoiceInput ? Icons.mic : Icons.keyboard),
      onPressed: () {
        setState(() {
          _isVoiceInput = !_isVoiceInput;
        });
        if (_isVoiceInput) {
          ScaffoldMessenger.of(context).showSnackBar(
            const SnackBar(content: Text('语音输入已开启')),
          );
        }
      },
    ),
  ),
  maxLines: 4,
),

3.4 提醒管理

功能说明:支持为重要笔记设置提醒,确保用户不会忘记重要事项。

实现思路

  • 提供日期和时间选择器,设置提醒时间
  • 支持查看所有设置了提醒的笔记
  • 模拟提醒通知功能

核心代码

void _setReminder(String noteId) {
  showDatePicker(
    context: context,
    initialDate: DateTime.now(),
    firstDate: DateTime.now(),
    lastDate: DateTime.now().add(const Duration(days: 365)),
  ).then((selectedDate) {
    if (selectedDate != null) {
      showTimePicker(
        context: context,
        initialTime: TimeOfDay.now(),
      ).then((selectedTime) {
        if (selectedTime != null) {
          final reminderTime = DateTime(
            selectedDate.year,
            selectedDate.month,
            selectedDate.day,
            selectedTime.hour,
            selectedTime.minute,
          );

          setState(() {
            final index = _notes.indexWhere((note) => note.id == noteId);
            if (index != -1) {
              _notes[index] = _notes[index].copyWith(
                isReminderSet: true,
                reminderTime: reminderTime,
                updatedAt: DateTime.now(),
              );
            }
          });

          ScaffoldMessenger.of(context).showSnackBar(
            const SnackBar(content: Text('提醒已设置')),
          );
        }
      });
    }
  });
}

3.5 待办事项管理

功能说明:支持创建和管理待办事项,标记完成状态。

实现思路

  • 为待办事项类型的笔记添加完成状态
  • 提供复选框,方便用户标记完成状态
  • 在笔记列表中显示待办事项的完成状态

核心代码

void _toggleNoteCompleted(String noteId) {
  setState(() {
    final index = _notes.indexWhere((note) => note.id == noteId);
    if (index != -1) {
      _notes[index] = _notes[index].copyWith(
        isCompleted: !_notes[index].isCompleted,
        updatedAt: DateTime.now(),
      );
    }
  });
}

4. 核心 API/类/函数

4.1 NoteTakerApp

说明:应用的主入口类,配置应用主题和初始页面。

参数:无

返回值:Widget - 应用根组件

核心方法

  • build(BuildContext context): 构建应用UI,配置主题和路由

4.2 NoteTakerHomePage

说明:应用的主页面,包含笔记、分类、提醒和设置四个标签页。

参数:无

核心方法

  • _addNote(): 添加新笔记
  • _toggleNoteCompleted(String noteId): 切换待办事项的完成状态
  • _deleteNote(String noteId): 删除笔记
  • _setReminder(String noteId): 为笔记设置提醒
  • _showAddNoteDialog(): 显示添加笔记的对话框

4.3 Note

说明:表示单个笔记,包含笔记的各种属性。

属性

  • id: 笔记唯一标识符
  • title: 笔记标题
  • content: 笔记内容
  • type: 笔记类型
  • isReminderSet: 是否设置了提醒
  • reminderTime: 提醒时间
  • isCompleted: 待办事项是否完成

方法

  • copyWith(): 创建笔记的副本,用于更新属性
  • toJson(): 将笔记转换为JSON格式

4.4 NoteType

说明:笔记类型枚举,定义了预设的笔记分类。

  • 灵感: 创意灵感记录
  • 待办事项: 任务管理
  • 笔记: 普通笔记
  • 重要: 重要事项
  • 其他: 其他类型

属性

  • label: 类型名称
  • emoji: 类型表情符号
  • color: 类型颜色

5. 技术实现路径

5.1 项目初始化

  1. 创建Flutter项目:使用Flutter CLI创建新项目
  2. 配置依赖:在pubspec.yaml中添加intl等必要的依赖
  3. 设置主题:配置Material Design 3主题

5.2 核心功能实现

  1. 数据模型设计

    • 定义NoteType枚举
    • 实现Note类
  2. 主页面布局

    • 使用BottomNavigationBar实现标签页切换
    • 设计笔记列表页面、分类页面、提醒页面和设置页面
  3. 笔记管理

    • 实现笔记的创建、删除功能
    • 支持笔记列表展示
  4. 语音输入功能

    • 添加语音输入按钮
    • 模拟语音识别功能
  5. 分类管理

    • 实现分类展示和统计
    • 支持按分类查看笔记
  6. 提醒管理

    • 实现提醒设置功能
    • 支持查看提醒列表
  7. 待办事项管理

    • 实现待办事项的完成状态切换
    • 在界面上显示完成状态

5.3 测试与优化

  1. 功能测试:测试所有核心功能
  2. 性能优化:优化列表渲染和状态管理
  3. UI优化:确保界面美观、响应迅速

6. 界面设计

6.1 整体布局

  • 底部导航栏:包含笔记、分类、提醒和设置四个标签
  • 顶部AppBar:显示当前页面标题和操作按钮
  • 内容区域:根据当前标签显示不同内容
  • 浮动操作按钮:在笔记页面提供快速添加笔记的按钮

6.2 页面设计

页面 主要组件 功能 设计特点
笔记列表页 笔记卡片、浮动操作按钮 管理和查看笔记 卡片式设计,分类标签
分类管理页 分类网格 查看和管理分类 彩色图标,清晰分类
提醒页面 提醒列表 查看所有提醒 时间排序,突出显示
设置页面 设置项、关于信息 配置应用设置 简洁明了,功能清晰

6.3 交互设计

  • 添加笔记:点击浮动操作按钮或使用语音输入
  • 标记完成:点击待办事项的复选框
  • 设置提醒:点击提醒按钮,选择日期和时间
  • 删除笔记:点击删除按钮
  • 切换分类:在分类页面点击分类卡片

7. 部署与集成方案

7.1 构建与打包

  • Android:使用Flutter CLI构建APK或AAB
  • iOS:使用Xcode构建IPA
  • HarmonyOS:使用DevEco Studio构建HAP

7.2 数据存储

  • 本地存储:使用SharedPreferences或SQLite存储数据
  • 云同步:集成云存储服务,实现多设备同步

7.3 权限配置

  • 麦克风权限:用于语音输入功能
  • 通知权限:用于提醒功能
  • 网络权限:用于云同步功能

8. 代码安全性

8.1 注意事项

  1. 数据安全:确保用户数据的安全存储
  2. 权限管理:合理申请和使用系统权限
  3. 输入验证:验证用户输入,防止恶意数据
  4. 错误处理:妥善处理异常情况

8.2 解决方案

  1. 数据加密:对敏感数据进行加密存储
  2. 权限请求:使用Flutter的权限管理库,遵循最佳实践
  3. 输入验证:在添加笔记时验证输入内容
  4. 错误捕获:使用try-catch捕获异常,提供友好的错误提示

9. 扩展与维护

9.1 功能扩展

  • 云同步:实现笔记的云端同步,支持多设备访问
  • 标签系统:添加标签功能,更灵活地组织笔记
  • 搜索功能:支持笔记内容搜索
  • 导出功能:支持将笔记导出为多种格式
  • 备份恢复:支持笔记数据的备份和恢复

9.2 维护建议

  • 定期更新:保持应用更新,修复bug和添加新功能
  • 用户反馈:收集用户反馈,持续改进应用
  • 性能监控:监控应用性能,优化用户体验
  • 文档维护:保持文档更新,方便团队协作

10. 总结与亮点回顾

10.1 项目总结

备忘录小工具应用是一款功能完整、用户友好的笔记管理工具,通过以下特点为用户提供便捷的笔记体验:

  • 快速记录:支持快速创建笔记,捕捉瞬间灵感
  • 语音输入:支持语音添加笔记,提高操作效率
  • 分类管理:提供多种笔记分类,方便组织和管理
  • 提醒功能:支持为重要笔记设置提醒,确保不忘记重要事项
  • 待办事项:支持创建和管理待办事项,标记完成状态
  • 美观界面:采用Material Design 3设计,界面美观、响应迅速

10.2 技术亮点

  1. 模块化设计:采用清晰的模块化结构,代码组织合理
  2. 响应式布局:适配不同屏幕尺寸,提供一致的用户体验
  3. 状态管理:使用setState进行状态管理,简单高效
  4. 数据模型:设计合理的数据模型,支持复杂的笔记场景
  5. 用户交互:提供流畅的用户交互,增强用户体验
  6. 日期时间处理:使用intl库处理日期时间格式化

10.3 应用价值

  • 提高效率:快速记录和管理信息,提高工作和学习效率
  • 捕捉灵感:随时记录创意灵感,避免灵感流失
  • 管理任务:有效管理待办事项,提高任务完成率
  • 避免遗忘:通过提醒功能,确保重要事项不被遗忘
  • 组织信息:通过分类功能,更好地组织和管理个人信息

备忘录小工具应用不仅是一款实用的工具,更是个人知识管理的好帮手,通过技术手段让信息管理变得更加轻松高效。

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐