[MAUI 项目实战] 笔记App(一):介绍与程序设计

.NET Multi-platform App UI (.NET MAUI)的DataGrid控件 在某些情况下,当控件已显示时,可能需要在 .NET MAUI DataGrid 中加载数据,因为这可以提高应用程序的性能。当数据库中的数据被发送到客户端时,通常转换为业务对象(或所谓的 ),其中每个实例表示一个表行,对象的每个属性表示原始表中的一列。.NET MAUI DataGrid 提供完全可自定义的列标题,有关详细信息,请查看列标题。适用于 .NET MAUI DataGrid 的 Telerik UI 是一个功能强大的控件,可用于在 .NET MAUI 应用程序中可视化和编辑表格表示的数据。 阅读详情

系列文章:

[MAUI 项目实战] 笔记App(一):介绍与程序设计
[MAUI 项目实战] 笔记App(二):数据库设计

前言

有人说现在记事类app这么多,市场这么卷,为什么还想做一个笔记类App?

一来,去年小孩刚出生,需要一个可以记录喂奶时间的app,发现市面上没有一款app能够在两步内简单记录一个时间,可能iOS可以通过备忘录配合捷径做到快速记录,但是安卓上就没有类似的app。

二是,自去年做的音乐播放器以来,很长一段时间我在博客上的XF,MAUI都是在介绍局部的功能,[MAUI 项目实战]专题也很长没更新了,这次通过笔记类App做一次完整项目,包括如何上架MAUI应用等内容一并更新了。

一开始用MAUI简单做了一个功能,就记录喂奶量 + 喂奶时间 + 提醒。后期逐步做成一个可以动态添加摘要片段的功能。取名为《凡事摘要》。

目前安卓版本已发布打包,并上架腾讯应用商城:凡事摘要,iOS版本的部分页面还有问题需要调试,最近比较忙,我会抽出时间继续完善。在这个时间点我决定把App所有的代码都放在GitHub上,方便大家学习。也欢迎有兴趣的小伙伴一起参与。

软件规格说明

主要功能

  • 笔记管理:新增笔记,编辑笔记标题,增加笔记片段,修改笔记片段内容,删除笔记等功能。
  • 场景管理:新增场景,编辑场景标题,封面等,增加场景片段,修改场景片段内容,删除场景等功能。
  • 数据统计:查看统计数据。
  • 应用快捷入口管理:增加或删除场景快捷方式。
  • 其它设置:换肤,是否显示预览页面等

运行环境

运行环境为Android 10.0及以上版本,ARM架构CPU,四核2.0GHz, 4GB内存,16GB存储空间,5.5英寸及以上LCD显示屏的Android设备。

开源组件库

组件库名称
.NET Runtime
C#/WinRT
Xamarin.Forms
ASP.NET Core Blazor
AutoMapper
ASP.NET Boilerplate (Abp)
CommunityToolkit.Maui
Castle.Windsor
Newtonsoft.Json
Microsoft.EntityFrameworkCore

设备权限

权限名称使用目的使用场景
设备GPS传感器信息获取当前地理位置用于地址解析创建笔记
设读取设备或存储卡中的内容上传图片时获取用户相册图片文件APP前台运行时
相机上传图片时通过设备相机获取图片创建笔记
读取联系人创建联系人片段时读取设备联系人信息创建笔记
录制音频创建声音片段时通过麦克风录制音频创建笔记

第三方服务

服务名称服务资源服务内容链接
百度智能云用户创建的音频提供语音转文字服务https://cloud.baidu.com/
和风天气用户当前地理位置提供本地天气信息https://www.qweather.com
高德开放平台用户当前地理位置提供当前地理位置的地址解析服务https://lbs.amap.com/

使用介绍

场景列表页

场景列表页用于呈现所有场景,软件默认会有一些场景,用户可以添加新的场景,也可以删除场景。
在这里插入图片描述

从场景创建笔记

用户在“场景”页面点击场景列表中的条目,可创建对应场景的笔记。如在点击“喂奶”场景,软件会创建一条笔记,并跳转到编辑页面,点击“保存”按钮,在笔记列表中会呈现此笔记。

在这里插入图片描述

编辑场景

编辑场景可对现有场景进行修改,包括修改场景名称,封面,增加、删除、修改场景片段。
点击“…”按钮,打开编辑场景页面,编辑完成后,点击“保存”按钮完成编辑

在这里插入图片描述

新增场景片段

在编辑场景页面,点击“+”按钮,可新增场景片段。如在弹出的片段列表中,点击“笔记”

在这里插入图片描述

编辑场景片段

在编辑场景页面,点击片段标题可修改标题内容,按住片段右侧的按钮可拖拽,在其它位置释放手指可完成排序。

在这里插入图片描述

删除场景片段

在编辑场景页面,向左滑动片段,点击“删除”按钮,即可完成片段删除

在这里插入图片描述

删除场景

在编辑场景页面,点击“删除”按钮,或在场景列表页面,长按场景条目,点击“-”按钮,即可完成场景删除

在这里插入图片描述

笔记列表页

笔记列表页用于呈现所有笔记,用户可以添加新的笔记,也可以编辑或删除现有的笔记。

在这里插入图片描述

创建新笔记

在笔记列表页面点击“+”按钮,可创建一条新的笔记。此时,软件会跳转到编辑页面,点击“保存”按钮,在笔记列表中会呈现此笔记。

在这里插入图片描述

编辑笔记

编辑笔记可对现有笔记进行修改,包括修改笔记标题,增加、删除、修改笔记片段。
在笔记列表页中,向左滑动笔记条目,点击“编辑”按钮,打开编辑笔记页面,编辑完成后,点击“保存”按钮完成编辑

在这里插入图片描述

新增笔记片段

在编辑笔记页面,点击“+”按钮,可新增笔记片段。如在弹出的片段列表中,点击“笔记”

在这里插入图片描述

编辑笔记片段

在编辑笔记页面,点击片段标题可修改标题内容,按住片段右侧的按钮可拖拽,在其它位置释放手指可完成排序。

在这里插入图片描述

删除笔记片段

在编辑笔记页面,向左滑动片段,点击“删除”按钮,即可完成片段删除

在这里插入图片描述

删除笔记

在笔记列表页向左滑动笔记条目,点击“删除”按钮,或在编辑笔记页面,点击“删除”按钮,即可完成笔记删除

在这里插入图片描述

统计

笔记中的数值片段中的数值,可以进行统计。
在笔记编辑页面,添加一个数值片段,输入数值并保存,切换到统计页面,可以看到这些数值为纵轴、时间为横轴的趋势图

在这里插入图片描述

其它设置

PIN到快捷方式

对于符合“快速创建”的场景,用户可以在“场景”页面,点击“PIN到快捷方式”按钮,将场景添加到桌面快捷方式,方便用户快速创建笔记。

在这里插入图片描述

换肤功能

软件支持换肤功能,用户可以在“我的”页面,点击“黑暗”、“明亮”或“自动”按钮切换软件主题。

在这里插入图片描述

程序设计

框架

使用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模板选择器来选择对应的视图。有关界面部分将在另一篇文章介绍。

项目地址

使用和发布请遵循GPL-3.0 license许可,请勿用于商业用途。

GitHub:MatoProductivity

MAUI开发第一个app的需求解析:登录+版本更新,用于喂给AI / 管理员跳过密码验证 var result = _passwordHasher.VerifyHashedPassword(user, user.PasswordHash, password); 阅读详情

相关推荐

MAUI项目iOS应用以进 App Store 分发

maui项目发布到ios苹果商城指南

喜欢就坚持吧 1141

Maui基础开发实战记录

愿你出走半生,归来仍是少年!环境:.NET 7。

我就是那个帕吉 1077

移动开发(一):使用.NET MAUI开发第一个安卓APP

它是.NET 多平台应用 UI (.NET MAUI) 是一个跨平台框架,用于使用 C# 和 XAML 创建本机移动和桌面应用。使用 .NET MAUI,可从单个共享代码库开发可在 Android、iOS、macOS 和 Windows 上运行的应用。.NET MAUI 是一款开放源代码应用,是 Xamarin.Forms 的进化版,从移动场景扩展到了桌面场景,并从头重新生成了 UI 控件,以提高性能和可扩展性。

IT技术分享社区 2708

用最少的代码,写一个智能会议APP(MAUI)

Xamarin和MAUI移动开发是.NET核心方向之一,国外社区资源非常丰富,影响力挺大的。而国内则资源很是欠缺,GitHub上的国产开源案例太少了。随着小米/美的/碧桂园等WPF招聘大户开始要求移动开发,不少群友都在找相关资源。这里分享一套MAUI开发的《智能会议室平板APP》源码,下图扫码(或加微信zhaoxi066)进群即可领取!资料扫码领取添加微信 zhaoxi066也可MAUI平板APP...

dotNET跨平台 3859

C# MAUI开发“5步通关”:从Hello World到多平台APP!你的第一个跨平台应用还在等什么?

从环境搭建到数据绑定,再到平台适配,MAUI让你真正实现“一次编写,到处运行”!记住这5个核心步骤创建MAUI项目设计XAML布局实现ViewModel逻辑绑定UI与数据运行与测试(现在,轮到你来打造一个跨平台APP了!

java专栏 1162

移动开发(二):.NET MAUI中Android应用清单文件介绍

这个权限主要用于支持一些特定的应用场景,比如 VoIP(Voice over IP)应用或者企业级通讯应用,这些应用需要能够处理从其他设备或应用程序转移过来的电话呼叫。允许应用发送额外的命令给位置提供者(Location Providers),这些命令可以用于调整或控制位置服务的行为。允许应用访问媒体文件中的位置信息。通常情况下,这些位置信息是通过照片或视频的元数据(如 EXIF 数据)中存储的 GPS 坐标来表示的。允许应用在后台访问用户的地理位置信息,对于涉及到需要定位的APP来说需要声明该权限。

IT技术分享社区 1866

【C# MAUI】创建一个MAUI app,并在Windows上调试运行

MAUI是微软的一套开源,跨平台框架。使用C#和xaml进行开发。一套代码可以在多个设备上运行。

weixin_49552442的博客 3155

学习笔记(Maui 10 无参导航)

对应原视频 P19 P20 部分

aicheg的博客 1128

[MAUI 项目实战] 音乐播放器(一):概述与架构

为什么想起来这个项目了呢? 这是一个Windows Phone 8的老项目,2014年用作为兴趣写了个叫“番茄播放器”的App,顺便提高编程技能。 这个项目的架构历经多次迁移,从WP8到UWP再到Xamarin.Forms。去年底随着MAUI的正式发布,又尝试把它迁移到MAUI上来。

jevonsflash的专栏 5829

【信创-k8s】银河麒麟V10国防版+鲲鹏/飞腾(arm64架构)在线/离线部署k8s1.30+kubesphere

银河麒麟作为国家核高基专项的重要成果,国防版凭借其卓越的安全性和可靠性,已成为军工领域的首选操作系统。之前我们在适配麒麟V4国防版的过程中已发现诸多安全性要求,而麒麟V10国防版在安全防护等级上又达到了更高的级别。本文将主要演示离线部署,因为军工项目基本不会出现联网场景。即使在线,也可以按离线方式部署,且离线部署由于有私有仓库,不会存在镜像获取不到和丢失情况。

2023年最新地推相关信息 542

【白话系列】倍增算法

【序言】         我认为吧,所有能够优化复杂度的算法都是神奇的,所有能够化繁琐为形象的文字都是伟大的。一直觉得倍增算法是个很神奇的东西,所以决定写点东西纪念一下它。但是作为一个非常不称职的OIER,我非常讨厌在看别人的算法解析时整版的i,j,k等我看到鼠标就惯性移到右上角的符号语言,所以我想用最形象的方式来纪念它。 【一】         从前,有一只可爱得不得了的小白兔,它想从

JarjingX 3万+

Xamarin 与 .NET MAUI:.NET跨平台原生移动App开发前世今生

在移动应用开发领域,开发者长期面临着一个核心挑战:如何用一套代码为iOS和Android两大平台开发高质量的原生应用?Xamarin的出现曾为C#开发者带来了曙光,而现在,.NET MAUI正接过接力棒,开启了跨平台开发的新篇章。

李赛赛的专栏 1633

Android HCE实战:手把手教你用Kotlin实现NFC公交卡模拟(含完整APDU指令解析)

本文是一份Android HCE实战指南,详细讲解如何使用Kotlin实现NFC公交卡模拟。内容涵盖HCE服务搭建、APDU指令(如SELECT AID、GET PROCESSING OPTIONS)的完整解析与响应逻辑,并提供读卡器端测试代码,帮助开发者深入理解基于主机的卡模拟技术。

qsc901234567的博客 1118

.NET MAUI学习笔记——3.创建第一个程序_初级篇

没接触过的人可能不知道app shell是啥?其实我也不知道,不过在这里应该可以暂时理解为一种UI框架(或UI结构)。可以按下图理解,当VS创建.NET MAUI项目时,会生成4个重要的代码文件。可以在解决方案管理器(Solution Explorer)中看到它们:这些文件用于配置和运行.NET MAUI应用程序。每个文件都有不同的用途,它们的描述如下:这是一个用于引导应用程序的代码文件。里面的代码作为应用程序的跨平台入口点,用于配置和启动应用程序。

三千幻想乡 5936

Visual Studio Code ADT Extension 能不能连接 ECC,答案是可以,但真正的门槛在 ABAP 后端版本

Visual Studio Code 版 ABAP Development Tools(ADT)支持连接传统 SAP ECC 系统,关键不在于系统名称,而在于底层 SAP NetWeaver AS ABAP 版本是否达到最低要求(7.31 SP04 及以上)。只要系统已支持 Eclipse ADT,即可无缝使用 VS Code ADT,无需升级后端。SAP 通过复用原有 ADT 技术栈,将兼容性逻辑置于客户端,实现对老系统的持续支持。尽管初期侧重 ABAP Cloud 模型,但 1.1 及后续版本已全面覆盖

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 55

AI绘画与医疗可视化:用AI生成医学插图的实践

医疗可视化是医学教育、临床沟通和学术研究的核心工具。传统医学插图依赖手工绘制或专业3D建模,存在制作周期长、成本高、更新迭代慢等问题。随着深度学习技术的发展,AI绘画工具(如Stable Diffusion、DALL-E)展现出强大的图像生成能力,但医疗领域对插图的解剖准确性、标注规范性和语义完整性有极高要求,通用AI模型难以直接应用。本文聚焦AI技术与医疗领域的交叉创新,系统阐述如何通过数据预处理、模型定制化训练和后处理校验,构建符合医疗标准的插图生成系统。

大模型应用工坊 1788

将Abp移植进.NET MAUI项目(一):搭建项目

去年12月份做了MAUI混合开发框架的调研,想起来文章里给自己挖了个坑,要教大家如何把Abp移植进Maui项目,今天来填坑。 熟悉Abp的同学都知道,Abp 是一套强大的应用程序设计时框架(俗称脚手架),新版本的Abp vNext为微服务和网络优化的更多,然而本地开发经典Abp已经够用,而且官方没有停止维护,因此使用这个框架 MAUI则是跨平台的应用程序抽象层,强大的运行时框架 + 强大的设计时框架 , 我说这是宇宙最强大跨平台开发框架,不为过吧?😁 搭建MAUI项目 请注意:本文发布时,MAUI处

jevonsflash的专栏 2111

STM32 TIM3硬件XOR+复位模式实现霍尔信号精准捕获

霍尔传感器是电机控制系统中获取转子位置的关键器件,其三路数字信号需通过高精度、低延迟的边沿检测机制转换为电角度信息。其核心原理在于利用定时器输入XOR逻辑合并多路信号,并结合从模式复位(Reset Mode)实现硬件级时间间隔测量——每次跳变强制计数器清零,使CNT值直接表征换相周期。该方案规避了软件轮询的不确定性,显著提升FOC控制的实时性与鲁棒性。典型应用场景包括BLDC/FOC电机驱动、机器人关节伺服及工业变频器设计,尤其适用于STM32F4系列等具备硬件XOR与从模式控制器的MCU平台。

weixin_28931507的博客 92

(01).NET MAUI实战 建项目

1.概要本系列文章将会针对.NET MAUI实战开发的一些内容,会长期不间断更新我了解学习到的内容。当学习新的软件开发技术时,都会从基础建项目开始MAUI也不例外。ref:https://docs.microsoft.com/zh-cn/dotnet/maui/get-started/first-app?pivots=devices-windows本文将分享一下内容:1....

dotNET跨平台 1795

Python爬虫教程:抓取电商网站评论(以淘宝和京东为例)

通过本文的介绍,我们学会了如何使用Python编写爬虫,抓取淘宝和京东等电商平台的商品评论数据。我们介绍了如何使用电商平台提供的开放API以及如何通过模拟浏览器来抓取动态加载的数据。此外,我们还讨论了如何应对反爬虫技术,如何存储抓取的数据等。爬取电商平台的数据是一个强大的工具,能够为市场分析、消费者行为研究、产品优化等领域提供有力的支持。然而,在使用爬虫技术时,我们必须遵循法律法规,尊重平台的隐私政策,避免滥用数据。

2201_76125261的博客 1738

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

使用.NET MAUI开发第一个安卓APP

它是.NET 多平台应用 UI (.NET MAUI) 是一个跨平台框架,用于使用 C# 和 XAML 创建本机移动和桌面应用。.NET MAUI可从单个共享代码库开发可在 Android、iOS、macOS 和 Windows 上运行的应用。使用 .NET MAUI 开发第一个 Android 应用是一个直观的过程,涉及到安装必要的工具、创建项目、编写代码、调试以及运行应用。

zzlyx99的专栏 4679

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

MAUI APP开发蓝牙协议的经验分享:与跳绳设备对接

在开发MAUI应用程序时,蓝牙协议的应用是一个重要的环节,尤其是在需要与外部设备如智能跳绳进行数据交换的场景中。以下是我在开发过程中的一些经验和心得,希望能为你的项目提供帮助。

zzlyx99的专栏 2019

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

.NET MAUI 项目教程

.NET MAUI 项目教程 1. 项目介绍 什么是 .NET MAUI? .NET Multi-platform App UI (.NET MAUI) 是一个跨平台的 UI 框架,允许开发者使用 .NET 技术构建原生移动和桌面应用程序。.NET MAUI 支持 Android、iOS、macOS 和 Windows 等多个平台,使得开发者能够使用一套代码库构建跨平台的应用程序。 项目目标 .N...

gitblog_01192的博客 1430
上一篇: [MAUI]集成富文本编辑器Editor.js至.NET MAUI Blazor项目
下一篇: [MAUI 项目实战] 笔记App(二):数据库设计
林晓lx
林晓lx 2017年优快云移动跨平台大赛优秀奖获得者 2017年优快云移动跨平台大赛优秀奖获得者
博客等级 码龄15年 3761粉丝 123原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林晓lx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值