Article
MVC 常用常新,温故知新:纵你虐我千百遍 我仍待你如初见






MVC 是基础,是核心,是程序员绕不过去的坎,只要涉及到视图和界面就必然会遭遇它。
虽然写了十几年代码了,看过不少书,但在实际项目中,代码开始还是模块清晰的,写着写着,写到后面就成了一锅粥。
过去靠翻书温故而知新,问领导来解惑。现在有了 AI 就方便多了,不仅能直接获得理论知识,还能把现实场景的困惑直接问 AI。
关于 Flutter 中使用 MVC 的一些实际的问题,尤其是结合 ChangeNotifier 使用的时候。具体问题如下:
- 在 Flutter 应用中有 document、model、controller 三层结构时,哪些去继承 ChangeNotifier?如果 model、document 都是 ChangeNotifier,那在 controller 的一个操作中修改多个属性,不是就会触发多次更新?
- 在模型中包装多属性更新,这么去写不是把 controller 的事情也做了吗?
- 看到 Flutter 内部很多 controller 也是 ChangeNotifier 的,如 TabController、ScrollController(内部的 position),怎么理解,或者说区分,才不至于混乱?
- 对于一个相对复杂的功能(用 MVC 的方式有 controller、model、document),把它封装成组件提供给其他应用使用,像使用 TextField 一样,怎么设计处理?
- 什么时刻用模型 model 属性,什么时刻用 widget 小组件内部 state 属性?
在 VS Code 里面,基于已有代码,又反复地咨询 AI 怎么进行修改。暂时定下来:
- model 和 document 都实现 ChangeNotifier;
- model 用于更新视图;
- document 放在 controller 里面:[1] controller 加载 document 的时刻,监听它的变化,来重建视图模型;[2] 执行 command 命令来更新 document。
按照这种方式,暂时算是把代码理顺了。
Related
Related posts
-
Conjure使用指南:告别接口API对接烦恼,拥抱高效开发
2025-07-20
-
Cursor Agent 编程小小心得
2026-06-11
-
树莓派 OpenClaw Browser 看不见摸不着?给它配个 VNC 图形环境,踏实安心的Debug
2026-03-09
-
从使用者到创造者:用 AI 构建你的专属 VS Code 工具链
2026-02-27