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

一、应用概述

运行效果图

image-20260409225447502

image-20260409225451831

image-20260409225456439

image-20260409225500270

旧物改造灵感库是一款生活创意类应用,用户看到家里的旧东西不知道怎么处理时,只需拍照上传,AI就能给出旧物改造灵感,让旧物变废为宝。倡导环保理念,激发创意潜能,让每一件旧物都能焕发新生。

核心价值

维度描述
环保理念减少资源浪费,践行可持续生活方式
创意激发提供丰富的改造灵感,激发用户创造力
实用指导详细的步骤教程,让改造变得简单易学
成就分享记录改造历程,分享创意成果

二、功能架构

旧物改造灵感库

上传旧物

灵感推荐

收藏管理

我的项目

手动添加

拍照上传

分类管理

智能推荐

全部灵感

灵感详情

开始制作

收藏列表

取消收藏

项目列表

进度跟踪

完成记录


三、数据模型设计

3.1 旧物类型枚举

类型标签图标颜色值
clothing衣物checkroom#EC407A
furniture家具chair#8D6E63
electronics电子产品devices#42A5F5
books书籍menu_book#66BB6A
containers容器inventory_2#FFCA28
fabric布料texture#AB47BC
paper纸张description#78909C
plastic塑料water_drop#26C6DA
metal金属build#90A4AE
wood木材forest#6D4C41

3.2 改造风格枚举

风格标签图标颜色值
vintage复古风history#8D6E63
modern现代简约square#607D8B
rustic田园风grass#66BB6A
artistic艺术创意palette#E91E63
practical实用主义build_circle#FF9800
minimalist极简风minimize#9E9E9E
bohemian波西米亚auto_awesome#AB47BC
industrial工业风factory#455A64

3.3 难度等级枚举

等级标签图标颜色值预计时长
easy简单star_border#66BB6A1-2小时
medium中等star_half#FFCA283-5小时
hard困难star#EF53506小时以上

3.4 项目状态枚举

状态标签图标颜色值
draft草稿edit_note#9E9E9E
inProgress进行中pending#42A5F5
completed已完成check_circle#66BB6A
shared已分享share#FF7043

3.5 旧物模型

class UpcycleMaterial {
  final String id;              // 旧物ID
  final String name;            // 名称
  final ItemType type;          // 类型
  final String? description;    // 描述
  final String? imagePath;      // 图片路径
  final DateTime createdAt;     // 创建时间
}

3.6 改造步骤模型

class UpcycleStep {
  final int stepNumber;         // 步骤编号
  final String title;           // 步骤标题
  final String description;     // 步骤描述
  final int? durationMinutes;   // 预计时间
  final List<String> tips;      // 小贴士
}

3.7 改造灵感模型

class UpcycleIdea {
  final String id;              // 灵感ID
  final String title;           // 标题
  final String description;     // 描述
  final ItemType itemType;      // 旧物类型
  final UpcycleStyle style;     // 改造风格
  final DifficultyLevel difficulty; // 难度等级
  final List<String> materials; // 所需材料
  final List<String> tools;     // 所需工具
  final List<UpcycleStep> steps; // 制作步骤
  final List<String> tags;      // 标签
  final double rating;          // 评分
  final int likeCount;          // 点赞数
  final int saveCount;          // 收藏数
  final String? coverImage;     // 封面图
  final String? author;         // 作者
}

3.8 我的项目模型

class MyProject {
  final String id;              // 项目ID
  final UpcycleIdea idea;       // 关联灵感
  final DateTime startedAt;     // 开始时间
  final DateTime? completedAt;  // 完成时间
  final ProjectStatus status;   // 项目状态
  final List<String> myNotes;   // 我的笔记
  final String? myImage;        // 我的作品图
}

四、界面设计

4.1 整体布局

应用采用底部标签导航结构,包含四个主要页面:

底部导航

上传

灵感

收藏

项目

添加按钮

拍照按钮

旧物列表

推荐标签

全部标签

灵感卡片

收藏列表

项目卡片

进度状态

4.2 配色方案

应用采用青绿色调主题,营造环保、自然的氛围:

元素颜色值用途
Primary#26A69A主色调,环保青
Secondary#FF7043辅助色,活力橙
Tertiary#AB47BC点缀色,创意紫
Background#0A0E14背景色,深邃黑
Surface#1A1A2E卡片背景

4.3 核心组件

旧物卡片组件

每个旧物卡片展示:

  • 旧物类型图标与颜色
  • 旧物名称
  • 添加时间
  • 删除按钮
灵感卡片组件

每个灵感卡片展示:

  • 旧物类型图标
  • 灵感标题与描述
  • 改造风格、难度、时长
  • 点赞数与收藏数
  • 标签列表
  • 收藏按钮
灵感详情弹窗

点击灵感卡片后展示:

  • 标题与描述
  • 风格、难度、时长
  • 所需材料列表
  • 所需工具列表
  • 制作步骤详情
  • 开始制作按钮

五、核心功能实现

5.1 旧物添加流程

手动添加

拍照上传

点击添加

选择方式

输入名称

打开相机

选择类型

确认添加

更新旧物列表

触发推荐更新

5.2 智能推荐算法

void _generateRecommendations() {
  if (_myMaterials.isEmpty) {
    _recommendedIdeas.clear();
    _recommendedIdeas.addAll(_allIdeas.take(4));
    return;
  }

  final myTypes = _myMaterials.map((m) => m.type).toSet();
  final matched = _allIdeas.where((idea) => myTypes.contains(idea.itemType)).toList();

  _recommendedIdeas.clear();
  if (matched.isNotEmpty) {
    _recommendedIdeas.addAll(matched);
  } else {
    _recommendedIdeas.addAll(_allIdeas.take(4));
  }
}

5.3 推荐匹配流程

推荐引擎 应用 用户 推荐引擎 应用 用户 添加旧物 更新旧物列表 触发推荐计算 提取旧物类型 匹配灵感类型 返回推荐结果 更新推荐列表

5.4 项目开始流程

查看灵感详情

点击开始制作

创建项目记录

设置状态为进行中

添加到项目列表

显示成功提示


六、状态管理

6.1 主页状态

class _UpcycleIdeasHomePageState extends State<UpcycleIdeasHomePage>
    with SingleTickerProviderStateMixin {
  late TabController _tabController;
  final List<UpcycleMaterial> _myMaterials = [];
  final List<UpcycleIdea> _allIdeas = [];
  final List<UpcycleIdea> _recommendedIdeas = [];
  final List<UpcycleIdea> _savedIdeas = [];
  final List<MyProject> _myProjects = [];
  int _totalIdeas = 0;
  int _totalSaved = 0;
  int _totalProjects = 0;
}

6.2 数据更新方法

void _addMaterial(String name, ItemType type) {
  setState(() {
    _myMaterials.insert(0, UpcycleMaterial(
      id: DateTime.now().millisecondsSinceEpoch.toString(),
      name: name,
      type: type,
      createdAt: DateTime.now(),
    ));
  });
  _generateRecommendations();
}

void _toggleSave(UpcycleIdea idea) {
  setState(() {
    final index = _savedIdeas.indexWhere((i) => i.id == idea.id);
    if (index != -1) {
      _savedIdeas.removeAt(index);
    } else {
      _savedIdeas.insert(0, idea);
    }
    _updateStatistics();
  });
}

七、技术实现细节

7.1 依赖配置

dependencies:
  flutter:
    sdk: flutter
  cupertino_icons: ^1.0.2

environment:
  sdk: '>=3.0.0 <4.0.0'

7.2 主题配置

ThemeData(
  useMaterial3: true,
  brightness: Brightness.dark,
  colorScheme: ColorScheme.dark(
    primary: const Color(0xFF26A69A),
    secondary: const Color(0xFFFF7043),
    tertiary: const Color(0xFFAB47BC),
    surface: const Color(0xFF1A1A2E),
    background: const Color(0xFF0D1B2A),
  ),
)

九、扩展功能规划

9.1 短期规划

功能描述优先级
AI识别拍照自动识别旧物类型
数据持久化本地存储旧物与项目数据
图片上传支持上传旧物和作品图片
社区分享分享作品到社区

9.2 中期规划

功能描述优先级
视频教程集成改造视频教程
材料商城推荐改造所需材料购买
用户社区用户交流互动平台
成就系统完成项目获得成就徽章

9.3 长期规划

功能描述优先级
AR预览AR预览改造效果
专业指导专业设计师在线指导
环保积分改造获得环保积分奖励

十、项目结构

lib/
├── main_upcycle_ideas.dart      # 应用入口
│   ├── UpcycleIdeasApp          # 应用配置
│   ├── UpcycleIdeasHomePage     # 主页面
│   ├── _UploadTab               # 上传旧物页
│   ├── _IdeasTab                # 灵感推荐页
│   ├── _SavedTab                # 收藏管理页
│   ├── _MyProjectsTab           # 我的项目页
│   └── _IdeaCard                # 灵感卡片组件
│
├── models/
│   ├── upcycle_material.dart    # 旧物模型
│   ├── upcycle_idea.dart        # 灵感模型
│   ├── upcycle_step.dart        # 步骤模型
│   └── my_project.dart          # 项目模型
│
├── enums/
│   ├── item_type.dart           # 旧物类型枚举
│   ├── upcycle_style.dart       # 改造风格枚举
│   ├── difficulty_level.dart    # 难度等级枚举
│   └── project_status.dart      # 项目状态枚举
│
└── utils/
    └── recommendation_utils.dart # 推荐算法工具

十一、开发说明

11.1 运行方式

# 获取依赖
flutter pub get

# 运行应用
flutter run -d <device_id>

# 指定入口文件运行
flutter run -d <device_id> -t lib/main_upcycle_ideas.dart

11.2 注意事项

  1. 类型匹配:当前使用旧物类型与灵感类型匹配,后续可优化为多维度匹配
  2. 数据存储:当前版本使用内存存储,重启后数据丢失
  3. 图片功能:拍照上传功能需要相机权限,当前为占位实现
  4. AI识别:实际应用需接入图像识别API

十二、开源社区

本项目基于 Flutter 框架开发,支持多平台部署。

开源鸿蒙社区: https://openharmonycrossplatform.csdn.net

欢迎开发者参与贡献,共同完善旧物改造灵感库应用的功能与体验。


变废为宝,创意无限

Upcycle Ideas - Turn Old into Gold

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐