我写了一个TypeScript虚拟机【闪点清单】

TypeScript(TS)是一个伟大的发明,让我们在复用JS生态的同时拥有了静态类型语言的开发体验。TS本质是一门预编译语言,编译到JS后再使用JS虚拟机执行,由于强依赖于JS,也因此无法摆脱JS的一些顽疾,比如执行效率。而TS本身是静态类型语言,拥有确定的数据类型标记,只是在转义为JS时丢失了类型标记;如果我们能直接执行TS程序,而不是先转义为JS再执行,这些数据类型标记可以为程序带来很大的性能提升。…

从0开始设计Flutter独立APP | 第三篇: 一劳永逸解决全局BuildContext问题

鉴于Flutter的高性能渲染、跨平台、多端一致性等优势,闪点清单在移动端APP上,使用了完整的Flutter框架来开发。既然是完整APP,架构搭建完全不受历史Native APP的影响,没有历史包袱的沉淀,设计也能更灵活和健壮。全局BuildContext,几乎是所有Flutter开发者的一个痛点。这个痛点有多痛呢?我们来列举一下场景: 路由跳转、弹窗、媒体查询,全部依赖于BuildContext,如果在Service层(或其他非UI层)做这些操作,必须要逐层传递正确的BuildContext实例。依赖于BuildContext的逻辑,必须写在某一个页面的Widget初始化中,否则无法拿到正确的BuildContext;而一些全局初始化的逻辑必须要写在某一个页面里,而如果首次唤起的不是这个页面,需要手动保证初始化逻辑不出问题。获取当前前台页面的路由,可以用ModalRoute对象,但必须拿到目标页面的BuildContext才可以,Navigator的BuildContext是拿不到的。MediaQuery、Navigator、Overlays的BuildContext不是一个,不能用错了。Flutter绝大部分第三方UI库是依赖于BuildContext,意味着你必须要在APP初始化后才能使用这些库,即使是toast这样的工具UI。等等等等......社区推荐方案在Android中,我们可以用getApplicationContext解决全局context问题,Flutter官方并没有提供建议的方案,不过社区有一些推荐的解决方案,比如使用GlobalKey的方案: @override Widget build(BuildContext context)…

如何用闪点清单来做时间管理?

时间管理不仅仅是为了提高做事的效率,更重要的,它能够延长我们生命的长度。闪点清单是一款悬浮清单软件,拥有普通清单软件的任务管理功能,同时悬浮的特性让任务操作更加便捷、灵活、高效,是高效率办公学习的必备软件。如何处理每天固定的事情?每个人每天都会有几件固定的事情要做,而这些事情,我们只需要在合适的时间,按照平常的节奏去完成就好。 使用闪点清单,我们可以把任务指定为“每天循环”的任务。这样我们便会在每天固定的时间收到任务提醒。如果我们只希望工作日提醒,便可以设置为“工作日循环”。 大工作量任务如何拆分?一件大事儿,往往会包含几个小事儿,需要单独去完成每件事儿,这时我们就可以用子任务来进行任务管理。 如何提前提醒?如何多提醒?下周有个重要的会议,我要提前1天准备,到时候务必提前1天提醒我,然后开始前的1个小时,再提醒我一次。 多提醒的场景设置,可以在APP中很方便地进行设置。 零碎的事情如何处理?每天总有很多零碎的小事,打扰到我们的正常的工作节奏。对这些小任务、杂事儿,我们可以先记录下来,然后集中5-10分钟的时间,一次性处理完成,或分批处理完成一部分。 快速记录小事儿,可以使用闪点清单的悬浮添加任务功能,输入时间、任务,Enter确认即可。…

闪点清单会收费吗?

闪点清单会收费吗?很多同学很关心这个问题。闪点清单是一款悬浮清单软件,界面简洁、功能强大、使用方便又灵活。很多同学看到第一眼就喜欢上了,也一直关心闪点清单的收费问题。闪点清单目前还没有收费策略,而且保证目前已经开放出来的功能,不会进行收费,大家可以放心使用。 闪点清单后期会有收费模式,但会采用增值收费的方式,对于一些高级功能、增值服务进行收费。大家已经在用的功能,不会进行收费的。…

从0开始设计Flutter独立APP | 第二篇: 完整的国际化语言支持

国际化语言的支持,是很多APP都有的一个强需求,APP无论大小,只要还不想放弃国外的客户,一般就需要支持国际化。 鉴于Flutter高性能渲染和跨平台的优势,闪点清单在移动端APP上,使用了完整的Flutter框架来开发。既然是完整APP,架构搭建完全不受历史Native APP的影响,没有历史包袱的沉淀,设计也能更灵活和健壮。…

闪点清单在Windows7如果出现花屏怎么办?

问题表现闪点清单在部分Window7设备上出现花屏、白色背景问题。 解决办法Window7本身支持透明背景,但需要显卡驱动也支持,同时必须在Aero主题下才可以显示透明。 如果出现这个问题,按照下面的步骤进行操作: 在桌面上右键->个性化,选择一个Aero主题,如果软件已经正常,则无需往下继续操作。更新驱动如果界面仍然异常,则应该是显卡驱动的问题,需要更新驱动,可以下载“驱动精灵”来解决。 下载安装驱动精灵,点击“驱动管理”,找到“显卡驱动”一项,点击升级,升级完成后可能需要重启。然后再次在桌面上右键->个性化,选择一个Aero主题,此时软件应该已经正常还有异常?如果软件界面还是异常,再进行Windows Aero主题自动修复。 再次在桌面上右键->个性化,点击最底部的“解决透明度和其他Aero效果问题”。然后点击下一步,让Windows执行自动检测,检测结束后,再选择一个Aero主题即可。检测结束后,如果更改主题出现异常,重启电脑即可。…

从0开始设计Flutter独立APP | 第一篇: 数据库与状态管理

鉴于Flutter高性能渲染和跨平台的优势,闪点清单在移动端APP上,使用了完整的Flutter框架来开发。既然是完整APP,架构搭建完全不受历史Native APP的影响,没有历史包袱的沉淀,设计也能更灵活和健壮。 首先列举部分闪点清单的业务特性(较为通用的业务特性): 数据存储上,以本地数据为主,服务器同步为辅前端状态逻辑较为复杂,跨页面、跨组件状态更新频繁这几个业务点,设计到的技术选型有:本地数据库、前端状态管理,对很多业务来说,这几点都是比较核心的东西,也是我们今天重点要讲的内容。 数据库选型数据库选型,首先要定的,就是选择数据库类型:关系型数据库、非关系型数据库还是Key/Value存储。 对于关系型数据库,可选的有比如:SQLite、Core Data、GreenDao等;对于非关系型数据库,可选有Realm、UnQLite等;对于Key/Value存储,有比如Redis、Berkeley DB、Level DB等。 由于业务形态具有复杂的查询场景,所以首先排除了Key/Value存储;然后鉴于业务迭代频繁,数据结构变动较大,所以完全的关系型数据库使用成本会较高,版本更新时在数据兼容和数据清洗方面要做较多的工作;…

闪点清单,一款特别的悬浮清单软件,帮助你灵活管理代办事项

作为一款学习、工作的助手,她可以帮助你进行高效率学习、工作、生活安排,可以帮助你制定每天、每周计划,设置会议提醒、生日提醒、和其他事项提醒,还可以帮助你安排日程、整理备忘录、整理购物清单等等。作为一个贴心的助手,她总是希望在每个细节适应你的习惯、你的节奏,就像我们写在她基因里的定义:在你身边,却不打扰…