首页 > 其他分享 >分享下最近基于Avalonia UI和MAUI写跨平台时间管理工具的体验

分享下最近基于Avalonia UI和MAUI写跨平台时间管理工具的体验

时间:2024-06-03 21:24:06浏览次数:24  
标签:IntPtr macOS objc 跨平台 UI msgSend MAUI GetHandle Avalonia

起因

几个月前,我在寻找一款时间管理软件,类似番茄时钟的工具,但是希望可以自定义时间。

需要自定义的场景

  1. 做雅思阅读,3篇文件需要严格控制时间分配,需要一个灵活的计时器
  2. 定期提醒,每30分钟需要喝水或者上个厕所或者摸一下鱼...

总结起来就是:专注一段时间,比如30分钟,然后休息10分钟,且没有杂七杂八的功能。
理论上有的番茄时钟也能满足需求,但是我的需求是:

  • 界面尽可能的简洁。
  • 免费使用且最好是开源的。
  • 可以自定义时间。
  • 最好能跨平台,因为有时候是在macOS下使用,有时候又是在Windows上。
    但就其中部份条件还好,完全符合的竟然没符合我需求的。

在Apple store找到一个比较接近需求的一款,叫iTimer, 非常简洁好用,但是自定义时间需要内购,且只能在macOS下。

于是我在使用的时候就想,这软件功能极简,就几个页面,为什么我不自己做一个能。 于是每次利用一点时间空隙我就写一部份,一开始是选型MAUI,然后中途切换成Avalonia,最后基本完成了这个简易的版本。这里记录下开发心得
结论是:
代码都是C# + XAML,没有很复杂的逻辑和代码,新手完全可以轻松写一个日常使用的UI Tool。

代码放在Github,也没啥技术含量,有需要的自取
https://github.com/hoyho/iTimeSlot/tree/main

暂时没有发布二进制文件
需要的自己用git 克隆下来,然后dotnet build 或者dotnet publish即可

成品预览

macOS下使用默认主题:

使用Material Theme

Windows和Linux (使用xfce 桌面)

其他杂七杂八的需求
弹窗, 托盘等

就目前而言,基本能满足我的需求了。

谈谈体验

why choose MAUI

一开始,觉得是微软官方出的框架,应该不会有啥大坑吧,于是看了下官方介绍,文档的demo

  • 可以iOS, Android,macOS, Windows, Looks good
  • 不同平台的UI实现不一样,比如在Windows上是WinUI,在macOS上则是Mac Catalyst, 即UIKit, AppKit平台开放的API等等, 看起来还挺好看的

    标签:IntPtr,macOS,objc,跨平台,UI,msgSend,MAUI,GetHandle,Avalonia
    From: https://www.cnblogs.com/hoyho/p/18229682

相关文章

  • GUI程序设计--班级信息收集系6.3
    建立数据库表:importpymysqldb=pymysql.connect(host="localhost",user="root",password="ruirui",database="banji")cursor=db.cursor()cursor.execute("DROPTABLEIFEXISTSclass")sql="""CREATETABL......
  • GUI程序设计--班级信息收集系
    `#创建数据库importpymysqldb=pymysql.connect(host='localhost',user='root',password='Lwq020330',database="xinji_inf",charset='utf8')使用cursor()方法创建一个游标对象cursor=db.cursor()如果存在则删除cursor.execute("DROP......
  • GUI程序设计--班级信息收集系..
    `#创建数据库importpymysqldb=pymysql.connect(host='localhost',user='root',password='Lwq020330',database="xinji_inf",charset='utf8')使用cursor()方法创建一个游标对象cursor=db.cursor()如果存在则删除cursor.execute("DROP......
  • 安装jsonpath时报错: ERROR: Could not find a version that satisfies the requireme
    安装jsonpath时报错:ERROR:Couldnotfindaversionthatsatisfiestherequirementjsonpath(fromversions:none)ERROR:Nomatchingdistributionfoundforjsonpath解决方法:pipinstalljsonpath-i http://mirrors.aliyun.com/pypi/simple/--trusted-hostmirrors.......
  • element ui+vue快速入门
    ElementUI是一个用于开发Web应用的基于Vue.js的组件库。它提供了丰富的组件和友好的API,帮助开发者快速构建现代Web应用。以下是ElementUI的快速入门指南:安装ElementUI你可以通过npm或yarn安装ElementUI。使用npm安装npminstallelement-ui--save......
  • ComfyUI 完全入门:ControlNet 使用教程
    大家好,我是每天分享AI应用的萤火君!今天继续给大家分享ComfyUI的入门必备技能:ControlNet。ControlNet提供了十几种生成图片的控制方式,有的可以控制画面的结构,有的可以控制人物的姿势,还有的可以控制图片的画风,这对于提高AI绘画的质量特别有用;基于ControlNet的能力,炼丹师们可......
  • [工具] png图片打包plist工具,手把手教你使用pngPackerGUI_V2.0
    png图片打包plist工具,手把手教你使用pngPackerGUI_V2.0此软件是在pngpacker_V1.1软件基础之后,开发的界面化操作软件,方便不太懂命令行的小白快捷上手使用。1.下载并解压缩软件,得到如下目录,双击打开pngPackerGUI.exe 2.打开pngPackerGUI之后,默认的界面如下: 3.选择目录:选......
  • 微软官方开源免费的Blazor UI组件库 - Fluent UI Blazor
    前言今天大姚给大家分享一个由微软官方开源(MITLicense)、免费的BlazorUI组件库:FluentUIBlazor。全面的ASP.NETCoreBlazor简介和快速入门FluentUIBlazor介绍FluentUIBlazor是一个基于Blazor的组件库,提供了一系列的UI组件以及FluentUI的设计系统。该库可以帮助开发......
  • 学习unigui【27】像pg的jsonb一样编辑json。
    varI:Integer;CurrentObject:TJSONObject;FieldName:string;Pair:TJSONPair;functionCreateJSONValueForVariant(constaValue:Variant):TJSONValue;begincaseVarType(aValue)ofvarInteger:Result:=TJSONNumber.Create(Integer(aVal......
  • vue-elementui中el-table跨页选择和v-if导致列错乱/选择框无法显示
    在vue-elementui中使用el-table,当type="selection"的时候,分页数据进行不同页跳转选择需要这种功能的时候我们需要在el-table的标签上为每个el-table-column都创建一个id;所以就用到了row-key="id"这个属性;然后我们就需要在el-table-column为type="selection"添加一个属性reserve......