代码 > 解决flutter升级到 3.47后,No MaterialLocalizations found错误
2026-09-28
具体来说,是使用flex_color_picker这个组件弹窗后报No MaterialLocalizations错误。
和AI一阵Battle,听了AI一阵胡扯后,发现原因了。
很扯淡,因为flutter在3.47后,把material从flutter库里单独分包了。
所以,对应的Locaitons,也从flutter库里的那个,变成了material_ui库里那个。
所以说,虽然是同样类名,同样的代码,但是包不同,引用(指针)就不同喽,暴力硬判断Context中是否有对应类吗,判断出来的只能是null了。
结果么,听AI逼逼叨叨改了一堆,对于就是做个替换,把
import 'package:flutter/material.dart';
替换为
import 'package:material_ui/material_ui.dart';
说真的,问题解决后,真的觉得牙疼。
flutter这个更新策略太累了。但要上架app,也不敢放任flutter在老版本。
因此,做app flutter还算不错,纯桌面,的确不能考虑flutter。
追在后面更新太累。
代码 > 终于明白为什么有人觉得go无法确定接口有多少实现是问题了
2026-07-14
一直以来一直觉得有人质疑说go没法确定接口有多少实现很奇葩。
现在终于想通了。
对于go和一般语意的接口来说,是 特性,说明类符合某些特性
而对于Java,主要是spting,接口其实是一个人的 身份/归属
在以来注入时,通过确定了实现了接口的类来作为备选。
只能说,滥用到一定程度,也成为功能了……
代码 > 代码架构更新26.07.10
2026-07-10
这两天整理了下,把自己的代码架构(GUI/WEB)再更新下
所有的层节都是从上向下的,如果需要反向,通过事件和订阅机制来解决。
UI层,Web/GUI/CLI
核心层-Subject ,持有Context,封装Service并负责暴露接口给上层/引用方包
核心层-Service,具体的业务逻辑,BLL
核心层Repo,数据的读取筛选和维护,数据库/接口/文件
基础层Context ,全局配置,GUI 全局Context,个体业务的数据的维持
基础层Worker,独立运行,有状态,长期的对象,对外暴露出控制函数和事件函数,如tcp连接/js引擎等,内部管理自己所有的数据,对外由Context持有,供Service和Repo层调用。
基础层Adapter 适配器层,一些接口的实现
基础层Contract 约定,主要模型接口和预设层
基础层Model 基本数据模型
基础层Utils 工具类
每个大层有一个门面单体实例提供向上一层使用的统一接口
然后有一个 Applaction层负责生命周期,Init/Config/Start/Stop,并负责进行依赖注入,配置各门面实例
Linux > 开始使用marktext转md到pdf
2026-05-14
之前使用的vscode,转出时没法指定位置,很蛋疼
pandoc,也试了下,实在太复杂。
最后用了这个,很不错,一个appimage,还带md编辑,导出为pdf文件也方便
记录一下
代码 > C#的优势
2026-05-13
有点想把代码的中心转到C#上了。
首先,不论是c#还是go,对我而言最大的优势还是打包成单文件的部署方式。
那么,c#对Go的优势呢?
1. gui的支持
2.Windows下msvc更容易接入环境
3.可以方便的导出为其他语言能够使用的DLL
4.有大量商业化方案兜底。
可以说,语言选择还是要看使用场景的。
Go的最佳使用场景其实离我还是有点远
代码 > 把HMM的Avalonia版本升级的到12了
2026-05-11
其实也没用啥12的新特性,只是单纯的不想在处于积极更新期的项目留下技术债而已。
之前升级失败,因为以来的组MessageBox.Avalonia还没有对应的更新(avalonia没自带的Dialog其实算个小缺陷)。
等到这个项目更新后,基本就没啥问题了。
Avaonia的稳定性还是比flutter的稳定性高不少的。
每次flutter更新上手就是修不兼容性,对于个人项目来说有点心累了。
代码 > 发现golang对自己代码习惯的一个潜移默化的影响
2026-05-11
不再喜欢用类。
喜欢把类退化成结构struct,把大部分方法写在类外
不管 go/c#/dart/js都是这样。
仔细想了下,对于我而言。
只有数据是静态(永恒的)。
这个数据,只要写了下来,过来20年,还是这个数据。
而处理数据的代码,则是动态一直变化的,可能是优化,可能是需求变化,可能是bug修复。
所以,一个动态和一个静态的东西,在实际操作中,放在一起,是不合适的。
数据就是数据,过100年还是这个数据。
而方法,则只有过了测试,过了整合,实际上线跑过,才能说是当前可用的方法。
那种把相关的数据和方法放一起的想法,太不成熟。
代码 > 开始把C#的AOT项目导出为动态链接库给lua调用
2026-03-21
20年前做过的事情,现在又反过来做了一遍,摊手。
但是,这个事的实际意义是不一样的
c#,哪怕是aot项目,也是带gc,不要管理内存的。
能直接暴露给脚本调用,那整个工作的复杂度完全不是一个层级的了。
Linux > kde桌面内存泄漏的元凶-akonadi
2026-02-10
前一阵gnome 接外接显示器有点问题,换了kde
发现32g内存的笔记本内存很不经用,动不动oom杀进程
排查了一圈后,基本锁定akonadi,毕竟10多年前就被它坑过。
卸载之后,果然就没oom的问题了。
真的有点无语了。