【Flutter SysMoni实战】08 · 设计决策 — 为什么这样设计?不做的事同样重要

回答什么问题:回顾全局,理解每个架构决策背后的理由。为什么不引入更多依赖?为什么不拆更多文件?错误处理的原则是什么? 对应代码:整个项目 1. 决策全景图 决策 选择 为什么不做另一种 状态管理 Provider + ChangeNotifier 不用 BLoC/Riverpod:单页面不需要 Stream 数据采集 纯 Dart + /proc 文件系统 不用原生插件:维护成本 > 收益

· 7 min read

【Flutter SysMoni实战】架构全景 — 四层架构与数据流向

回答什么问题:代码如何分层?每层职责是什么?数据从内核到屏幕经过了哪些步骤? 对应代码:所有 lib/ 目录下的文件 1. 分层架构图 ┌─────────────────────────────────────────────┐ │ │ │ UI Layer (screens/ + widgets/) │ ← 声明式 Widget,订阅状态变化 │ DashboardScreen · UsageGauge │ │ │ ├─────────────────────────────────────────────┤ │ │ │ State Layer (providers/) │ ← ChangeNotifier,持有数据,定

· 4 min read

【Flutter SysMoni实战】项目概述 — 为什么用 Flutter 写一个系统监控工具

回答什么问题:这个项目是什么?它解决了什么需求?为什么选择 Flutter 这个技术栈? 对应代码:README.md, pubspec.yaml, lib/main.dart 1. 项目定义 SysMonitor 是一个 Linux 桌面系统监控工具,以轻量级常驻窗口的形式运行。 它展示四类系统指标: 指标 数据来源 刷新频率 CPU 使用率 & 型号 /proc/

· 4 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

· 5 min read

【Flutter Todo 实战】第六章:状态管理详解

6.1 什么是状态管理? 生活中的例子 想象你和室友们共用一个冰箱: * 没有状态管理:每个人自己记冰箱里有什么,有人买了牛奶但没告诉别人,结果大家都买了牛奶 * 有状态管理:冰箱上贴一张清单,任何人拿放东西都更新清单,大家看清单就知道冰箱里有什么 状态管理就是让应用中的数据(状态)能够被需要的地方访问和更新。 为什么需要状态管理? 在 Flutter 中,Widget 树是层级结构: MyApp └── HomeScreen ├── AppBar │ └── Title (需要显示任务数量) ├── TaskList │ ├── TaskItem (需要显示任务)

· 5 min read