0822起来,0155睡到0800闹钟,很困,但尿了个尿,和GPT聊聊,还是早起吧,为了我能早睡。发现和GPT聊口语很方便,我能语音输入,它能指出我的问题。
使用shared_preferences: ^2.2.2
。
使用intl
进行l10n。flutter gen-l10n
。
intl的逻辑是什么,不是通过key从不同语言的哈希表中找出对应的String吗,为什么感觉有点复杂
intl
框架之所以感觉「复杂」,是因为它不仅要支持多语言,还要兼顾Flutter 的运行环境、代码生成、格式化能力和性能优化。
fullter这个AppLocalizations
刚需context
也太难用了。
让GPT帮忙写README结果它提供假信息,我揶揄它一下它还给我发流汗黄豆。
Windows PowerShell 和 Linux(bash/sh)这两个命令行解释器接受参数的方式不一样
powershell.exe -Command "Get-Process"
bash -c "ls -l"
Dart 中
Process
的行为特性之一:即使process.exitCode
已经完成,process.stdout
和process.stderr
仍可能继续输出
所以如果我保留着已退出的进程数据可能会导致应用很卡,就是MAA,一直在输出日志。而我
|
|
也一直监听着。
不过也确实发现没有取消监听,之前因为process.exitCode
后就移除了所以没有问题,现在新设置了一个变量来储存已完成的进程就出现问题啦。不过之前就算不取消监听也不会有内存泄露吗,印象中listen是更需要注意的东西。
在 Dart/Flutter 中,调用
.listen(...)
返回的是一个StreamSubscription
:
所以一般都要手动cancel的。
经过控制变量法,发现就算不cancel,一直接收日志其实不会卡顿,罪魁祸首是notifyListeners
,看来它还是接受不了每几帧就被调用一次。但是为什么呢,明明没有东西被新绘制出来,怎么还是重绘了。
notifyListeners()
会通知所以监听者重新调用build()
那我
|
|
岂不是会让不必要的widget重绘,一个Provider的notifyListeners()
导致监听任意一个Provider的widget去rebuild,怎么办,要不要改。
只有监听了触发
notifyListeners()
的那个 Provider 的 widget 才会重建**
原来是我想多了。0036,该上床了,明天依然8点闹钟。