做交友类网站适合什么cms,小程序登录入口官网网址,在线推广企业网站的方法有哪些,网站建设的相关费用文章目录 前言框架定义核心类项目地址 系列文章#xff1a;
[MAUI 项目实战] 笔记App#xff08;一#xff09;#xff1a;程序设计 [MAUI 项目实战] 笔记App#xff08;二#xff09;#xff1a;数据库设计
前言
有人说现在记事类app这么多#xff0c;市场这么卷
[MAUI 项目实战] 笔记App一程序设计 [MAUI 项目实战] 笔记App二数据库设计
前言
有人说现在记事类app这么多市场这么卷为什么还想做一个笔记类App
一来去年小孩刚出生需要一个可以记录喂奶时间的app发现市面上没有一款app能够在两步内简单记录一个时间可能iOS可以通过备忘录配合捷径做到快速记录但是安卓上就没有类似的app。
二是自去年做的音乐播放器以来很长一段时间我在博客上的XFMAUI都是在介绍局部的功能[MAUI 项目实战]专题也很长没更新了这次通过笔记类App做一次完整项目包括如何上架MAUI应用等内容一并更新了。
一开始用MAUI简单做了一个功能就记录喂奶量 喂奶时间 提醒。后期逐步做成一个可以动态添加摘要片段的功能。取名为《凡事摘要》。
目前安卓版本已发布打包并上架腾讯应用商城凡事摘要iOS版本的部分页面还有问题需要调试最近比较忙我会抽出时间继续完善。在这个时间点我决定把App所有的代码都放在GitHub上方便大家学习。也欢迎有兴趣的小伙伴一起参与。
框架
使用Abp框架我之前写过如何 将Abp移植进.NET MAUI项目本项目也是按照这篇博文完成项目搭建。
这次的项目主要通过原型和工厂模式建设基于模板的笔记内容。
没有使用过多的跨平台特性如果需要了解更多MAUI跨平台知识请参考之前音乐播放器系列文章。
定义
Note - 笔记可以成整页打开的内容NoteTemplate - 笔记模板或称为场景是可以快速创建笔记的模板NoteSegment - 笔记片段它是一个笔记Note的组成NoteSegmentTemplate - 笔记片段模板对应场景中可快速创建笔记片段的模板NoteSegmentPayload - 笔记片段负载存储具体笔记片段的内容NoteSegmentService - 笔记片段服务类为笔记片段或笔记片段模板提供增删改等具体的业务逻辑NoteSegmentServiceFactory - 笔记片段服务工厂为笔记片段服务类提供工厂方法
核心类
INoteSegment它是笔记片段的抽象类模板类NoteSegmentTemplate和笔记片段类NoteSegment都实现了INoteSegment 它包含了笔记片段的属性如标题、颜色、图标、是否隐藏、是否可删除、排序、状态、类型等。同时它关联一个笔记片段负载类INoteSegmentPayload
public interface INoteSegment
{string Color { get; set; }string Desc { get; set; }string Icon { get; set; }bool IsHidden { get; set; }bool IsRemovable { get; set; }int Rank { get; set; }string Status { get; set; }string Title { get; set; }string Type { get; set; }INoteSegmentPayload GetNoteSegmentPayload(string key);INoteSegmentPayload GetOrSetNoteSegmentPayload(string key, INoteSegmentPayload noteSegmentPayload);void SetNoteSegmentPayload(INoteSegmentPayload noteSegmentPayload);
}
INoteSegementService凡事摘要拥有不同的笔记类型如时间戳片段文本片段文件片段等App中可以通过添加片段按钮查看所有类型。 这些片段通过片段服务类NoteSegementService来描述该如何存储使用Payload中的数据。
不同的片段类型通过不同的片段服务类来实现。比如在时间戳片段中我们要存储当前时间和计算倒计时而文件片段中我们要存储文件路径文件名文件大小文件类型等信息。
这些都是通过片段服务类来实现的。 具体类型如下
类型描述DateTimeSegmentService时间戳片段服务类KeyValueSegmentService数值片段服务类FileSegmentService文件片段服务类TextSegmentService文本片段服务类TodoSegmentService待办片段服务类WeatherSegmentService天气片段服务类LocationSegmentService地点片段服务类TimerSegmentService闹钟片段服务类ContactSegmentService联系人片段服务类VoiceSegmentService录音片段服务类MediaSegmentService媒体片段服务类ScriptSegmentService绘制片段服务类DocumentSegmentService文件片段服务类
片段服务类包含了一个INoteSegment它是当前的笔记片段对象 INoteSegmentServiceFactory:
片段服务类的工厂类除此之外还有一个INoteSegmentTemplateServiceFactory他们都是根据笔记片段或者笔记模板中的片段类型创建对应的片段服务类。 用于笔记的片段服务类的工厂类:
public interface INoteSegmentServiceFactory: ISingletonDependency
{INoteSegmentService GetNoteSegmentService(NoteSegment noteSegment);
}用于笔记模板的片段服务类的工厂类
public interface INoteSegmentTemplateServiceFactory: ISingletonDependency
{INoteSegmentService GetNoteSegmentService(NoteSegmentTemplate noteSegmentTemplate);
}NoteSegmentService作为笔记片段服务的基类它继承了ViewModelBase实际上服务基类是各笔记片段视图层的ViewModel视图界面元素通过绑定服务类中的属性来显示或更新数据。 每一种服务类都对应的一个视图。渲染时Xaml通过NoteSegmentDataTemplateSelector模板选择器来选择对应的视图。有关界面部分将在另一篇文章介绍。
项目地址
GitHub:MatoProductivity