20250722

0958起,0231睡到0949,忘开闹钟,但我确实在享受睡觉。

夜里睡觉的时候想起来昨天一整天都没登明日方舟,我真的是给星痕共鸣害了。其实只是忘了,挂着星痕共鸣自动采集的时候也可以挂maa的。

用flutter写的命令管理器用Process.start(...)调用powershell.exe -Command & F:/Python/python.exe f:/Code/python/auto_click_f/main.py执行py脚本

1
2
3
4
      final stdoutSub = process.stdout.transform(utf8.decoder).listen((line) {
        rc.output.write(line);
        notifyListeners();
      });

然而无法这个监听获取py脚本中print的输出。

PowerShell 有可能吞掉输出或延迟转发缓冲区,导致你 listen 不到任何输出。

加上 -u:关闭 Python 的输出缓冲。

即使用& F:/Python/python.exe -u f:/Code/python/auto_click_f/main.py

Flutter → 启动 powershell.exe → 启动 python.exe

Process.start是创建子进程,所以父退出的话子也会退出。但GPT讲直接 Process.start('python.exe') 时,有可能 Python 是 console app,不绑定 stdout/stderr,或Python 启动时没有继承 Job Object(Windows 特性),不懂,目前也没这种问题,稍微记一下然后以后再说吧。

方法优点缺点
sys.argv更短更简单不够健壮(参数错误难提示)
argparse支持自动帮助信息和提示写起来略复杂

用起来其实都麻烦,当需要切换参数的时候。

在 ViewModel(或逻辑层)里监听 process.stdout 的错误时,想用 AppSnackbar.showError(context, msg) 来显示错误信息,但 context 只在 UI 层(Widget)中有。ViewModel 并不持有 BuildContext,这是 Flutter 架构设计的本意。

哎哟,永远的困境。

滚轮滑动可以,❌ 鼠标左键按住拖动 ListView 滚动不生效

这个行为在 桌面端 是 Flutter 默认的设计行为 —— ListView(或其他 Scrollable)在桌面(Windows/macOS/Linux)平台上,并不会自动支持“鼠标左键拖动滚动内容”的手势行为。

Flutter 遵循平台设计原则(Platform-Adaptive Behavior),不希望让桌面端的交互“看起来像移动端”。

0131来上床,星痕共鸣的自动采集无法找到完全静默不打扰当前操作的方法,放置了。明天做什么。自己的flutter项目想整理一下ViewModel,settings page里ThemeViewModelLocaleViewModel感觉可以整合进SettingsViewModel,也方便别的settings项的添加,问题就是改了任何一个setting要rebuild的widget会增多,会有性能问题吗,这是我该考虑的问题吗。也可以多去看看别人的flutter项目。flutter真好啊真好啊,简单易懂还有美丽的跨端。

Licensed under CC BY-NC-SA 4.0
使用 Hugo 构建
主题 StackJimmy 设计