Flutter 【Flutter SysMoni实战】08 · 设计决策 — 为什么这样设计?不做的事同样重要 回答什么问题:回顾全局,理解每个架构决策背后的理由。为什么不引入更多依赖?为什么不拆更多文件?错误处理的原则是什么? 对应代码:整个项目 1. 决策全景图 决策 选择 为什么不做另一种 状态管理 Provider + ChangeNotifier 不用 BLoC/Riverpod:单页面不需要 Stream 数据采集 纯 Dart + /proc 文件系统 不用原生插件:维护成本 > 收益 soragui 2 Jul 2026 · 7 min read
Flutter 【Flutter SysMoni实战】07 · 桌面集成 — 原生窗口管理与系统托盘 回答什么问题:Flutter 桌面应用如何控制原生窗口?怎么实现"关闭按钮最小化到托盘"?系统托盘图标和菜单怎么做?应用的完整生命周期是怎样的? 对应代码:lib/main.dart (17 行),lib/app.dart (117 行) 1. 两个桌面集成插件 window_manager: ^0.5.1 # 原生窗口控制 tray_manager: soragui 2 Jul 2026 · 5 min read
Flutter 【Flutter SysMoni实战】06 · UI 设计 — Widget 树的构建策略与响应式布局 回答什么问题:监控面板的 Widget 树如何组织?CPU/Memory 并排布局怎么实现?UsageGauge 组件如何复用?暗色主题怎么配置? 对应代码:lib/screens/dashboard_screen.dart (537 行),lib/widgets/usage_gauge.dart (67 行),lib/core/theme.dart (17 soragui 2 Jul 2026 · 6 min read
Flutter 【Flutter SysMoni实战】05 · 状态管理 — Provider 模式的设计与实践 回答什么问题:Provider 在真实项目中如何组织?ChangeNotifier 的生命周期如何管理?Timer + Provider 的定时轮询模式有什么陷阱? 对应代码:lib/providers/dashboard_provider.dart (57 行),lib/app.dart 1. 为什么选择 Provider? 在 Flutter 生态中,状态管理方案众多:BLoC、Riverpod、Redux、MobX、 soragui 2 Jul 2026 · 5 min read
Flutter 【Flutter SysMoni实战】数据采集 — /proc 文件系统与并发 I/O 回答什么问题:如何在没有 C/C++ 原生扩展的情况下采集系统数据?/proc 文件系统如何工作?Future.wait 如何降低采集延迟? 对应代码:lib/services/system_monitor.dart (210 行) 1. 设计决策:纯 Dart,零原生插件 SysMonitor 的一个关键设计决策:不引入 C/C++ 原生插件来做系统监控。 // ✅ 本项目的方式 soragui 2 Jul 2026 · 6 min read
Flutter 【Flutter SysMoni实战】数据模型 — 不可变数据类的设计哲学 回答什么问题:Model 层的五个数据类如何设计?为什么全部不可变?Dart 的 const 构造函数在这里起什么作用? 对应代码:lib/models/system_info.dart (69 行) 1. 五个数据类,一棵树 SystemInfo ├── CpuInfo │ ├── usagePercent: double // 0.0 ~ 100.0 │ ├── cores: int // 逻辑核心数 soragui 2 Jul 2026 · 5 min read
Flutter 【Flutter SysMoni实战】架构全景 — 四层架构与数据流向 回答什么问题:代码如何分层?每层职责是什么?数据从内核到屏幕经过了哪些步骤? 对应代码:所有 lib/ 目录下的文件 1. 分层架构图 ┌─────────────────────────────────────────────┐ │ │ │ UI Layer (screens/ + widgets/) │ ← 声明式 Widget,订阅状态变化 │ DashboardScreen · UsageGauge │ │ │ ├─────────────────────────────────────────────┤ │ │ │ State Layer (providers/) │ ← ChangeNotifier,持有数据,定 soragui 2 Jul 2026 · 4 min read
Flutter 【Flutter SysMoni实战】项目概述 — 为什么用 Flutter 写一个系统监控工具 回答什么问题:这个项目是什么?它解决了什么需求?为什么选择 Flutter 这个技术栈? 对应代码:README.md, pubspec.yaml, lib/main.dart 1. 项目定义 SysMonitor 是一个 Linux 桌面系统监控工具,以轻量级常驻窗口的形式运行。 它展示四类系统指标: 指标 数据来源 刷新频率 CPU 使用率 & 型号 /proc/ soragui 2 Jul 2026 · 4 min read
Flutter 【Flutter SysMoni实战】 面向读者:Flutter 中级开发者、软件工程师、对 Flutter 桌面开发感兴趣的架构师 前置知识:Dart 语言基础、Flutter Widget 树概念、Linux 基本命令行操作 总篇幅:9 篇,逐层递进 为什么写这个系列? SysMonitor 是一个 Flutter 桌面应用,~700 行代码,但覆盖了桌面应用的四个核心部分: * 数据采集:解析 Linux soragui 2 Jul 2026 · 3 min read
AI进行时 狂飙的 AI 智能体时代:人人都是程序员,为什么“懂行”反而成了你的最高壁垒? AI 智能体时代来临,编程背景不再是绝对壁垒。深度解析 Anthropic 最新研究报告:为何在 Claude Code 席卷职场的当下,你对业务的“领域知识”反而成了无法被 AI 替代的最高护城河?教你如何像管理者一样驱动 AI,拒绝做被淘汰的执行者。 soragui 17 Jun 2026 · 10 min read
AI进行时 【AI智能体】高效使用 Claude Code 之目录详解 讲解如何通过配置.claude目录更高效使用Claude Code为你工作 soragui 26 Mar 2026 · 7 min read
移动开发 【Flutter Todo 实战】第十章:扩展功能建议 恭喜你已经完成了基础的待办事项应用!本章将提供一些扩展功能的建议,帮助你继续提升这个应用。 10.1 功能扩展 1. 任务分类 添加任务分类功能,让用户可以按类别组织任务。 实现思路: // 新增 Category 模型 class Category { final String id; final String name; final Color color; final IconData icon; } // Task 模型添加 soragui 18 Mar 2026 · 4 min read
移动开发 【Flutter Todo 实战】第九章:常见问题排查 本章整理了 Flutter 开发中常见的问题及解决方案。 9.1 环境相关问题 问题:flutter 命令找不到 症状: flutter: command not found 解决: 1. 检查 Flutter 是否正确安装 2. 检查 PATH 环境变量是否包含 flutter/bin 3. 重新打开终端使环境变量生效 1# 检查 flutter soragui 18 Mar 2026 · 4 min read
移动开发 【Flutter Todo 实战】第八章:关键技术深入 本章将深入讲解待办事项应用中使用的三个关键技术:Material Design 3、SharedPreferences 和 Provider。 8.1 Material Design 3 什么是 Material Design 3? Material Design 3(简称 M3)是 Google 最新的设计语言,相比 M2 有以下改进: * 更现代的视觉风格 - 圆角更大、颜色更柔和 soragui 18 Mar 2026 · 5 min read
移动开发 【Flutter Todo 实战】第七章:UI 组件详解 本章将详细介绍待办事项应用中的各个 UI 组件,帮助你理解 Flutter 界面是如何构建的。 7.1 主入口 main.dart void main() { WidgetsFlutterBinding.ensureInitialized(); // 设置首选方向(竖屏) SystemChrome.setPreferredOrientations([ DeviceOrientation.portraitUp, DeviceOrientation.portraitDown, ]); runApp(const TodoApp()); } class TodoApp extends StatelessWidget soragui 18 Mar 2026 · 5 min read
移动开发 【Flutter Todo 实战】第六章:状态管理详解 6.1 什么是状态管理? 生活中的例子 想象你和室友们共用一个冰箱: * 没有状态管理:每个人自己记冰箱里有什么,有人买了牛奶但没告诉别人,结果大家都买了牛奶 * 有状态管理:冰箱上贴一张清单,任何人拿放东西都更新清单,大家看清单就知道冰箱里有什么 状态管理就是让应用中的数据(状态)能够被需要的地方访问和更新。 为什么需要状态管理? 在 Flutter 中,Widget 树是层级结构: MyApp └── HomeScreen ├── AppBar │ └── Title (需要显示任务数量) ├── TaskList │ ├── TaskItem (需要显示任务) soragui 18 Mar 2026 · 5 min read
移动开发 【Flutter Todo 实战】第五章:数据模型详解 5.1 什么是数据模型? 数据模型(Model) 是用来描述应用数据的类。它定义了: * 数据有哪些属性(字段) * 每个属性的类型 * 如何创建、修改、转换数据 类比理解 想象你要设计一个数据库表来存储任务信息: 1CREATE TABLE tasks ( 2 id TEXT PRIMARY KEY, 3 title TEXT NOT NULL, 4 is_ soragui 18 Mar 2026 · 5 min read