跳到正文
W Winse Blog
mobile ai dev 1 min read

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

MVC 是基础,是核心,是程序员绕不过去的坎,只要涉及到视图和界面就必然会遭遇它。 虽然写了十几年代码了,看过不少书,但在实际项目中,代码开始还是模块清晰的,写着写着,写到后面就成了一锅粥。 过去靠翻书温故而知新,问领导来解惑。现在有了 AI 就方便多了,不仅能直接获得理论知识,还能把现实场景的困惑直接问AI。 关于 Flutter 中使用 MVC 的一些实际的问题,尤其是结合 ChangeNotifier 使用的时候。具体问题如下: 1、在 flutter 应用中有document,model,controller 三层结构时,哪些去继承ChangeNotifier ?如果 model、document 都是 ChangeNotifer,那在 controller 的一个操作中修改多个属性,不是就会触发多次更新? 2、在模型中包装多属性更新,这么去写不是把 controller 的事情也做了吗? 3、看到 flutter 内部很多 controller 也是 ChangeNotifier 的,如 TabController,ScrollController(内部的 position ),怎么理解,或者说区分,才不至于混乱? 4、对于一个相对复杂的功能(用 MVC 的方式有 controller、model、document ),把它封装成组件提供给其他应用使用,像使用 TextField 一样,怎么设计处理? 5、什么时刻用模型 model 属性,什么时刻用 widget小组件 内部 state 属性? 在 VSCode 里面,基于已有代码,又反复的咨询AI怎么进行修改。暂时定下来: 1、model 和 document 都实现 ChangeNotifier; 2、model 用于更新视图; 3、document 放在 controller 里面:[1] controller 加载 document 的时刻,监听它的变化,来重建视图模型;[2] 执行 command 命令来更新 document。 按照这种方式,暂时算是把代码理顺了。

在 GitHub 上讨论

欢迎通过 GitHub Issue 留言或反馈。每条讨论都会关联到对应文章的源文件路径。

2025-09-10-MVC-常用常新,温故知新:纵你虐我千百遍-我仍待你如初见.md

Related posts