Flutter 为什么走上了和前端一样的“百家争鸣”?

Flutter 为什么走上了和前端一样的“百家争鸣”?
在这里插入图片描述


子玥酱(掘金 / 知乎 / ZEEKLOG / 简书 同名)

大家好,我是子玥酱,一名长期深耕在一线的前端程序媛 👩‍💻。曾就职于多家知名互联网大厂,目前在某国企负责前端软件研发相关工作,主要聚焦于业务型系统的工程化建设与长期维护。

我持续输出和沉淀前端领域的实战经验,日常关注并分享的技术方向包括前端工程化、小程序、React / RN、Flutter、跨端方案,
在复杂业务落地、组件抽象、性能优化以及多端协作方面积累了大量真实项目经验。

技术方向:前端 / 跨端 / 小程序 / 移动端工程化
内容平台:掘金、知乎、ZEEKLOG、简书
创作特点:实战导向、源码拆解、少空谈多落地
文章状态:长期稳定更新,大量原创输出

我的内容主要围绕 前端技术实战、真实业务踩坑总结、框架与方案选型思考、行业趋势解读 展开。文章不会停留在“API 怎么用”,而是更关注为什么这么设计、在什么场景下容易踩坑、真实项目中如何取舍,希望能帮你在实际工作中少走弯路。

子玥酱 · 前端成长记录官 ✨
👋 如果你正在做前端,或准备长期走前端这条路
📚 关注我,第一时间获取前端行业趋势与实践总结
🎁 可领取 11 类前端进阶学习资源(工程化 / 框架 / 跨端 / 面试 / 架构)
💡 一起把技术学“明白”,也用“到位”

持续写作,持续进阶。
愿我们都能在代码和生活里,走得更稳一点 🌱

文章目录

如果你写 Flutter 写到后期,大概率会有一种熟悉又不安的感觉:

“这个项目怎么越来越像前端了?”

State 到处飞、Provider 套 Provider、Riverpod 和 Bloc 各执一词,
社区天天在争:“谁才是 Flutter 最佳状态管理方案?”

而如果你做过前端,甚至 RN,你会发现——
这条路,其实我们已经走过一次了。

Flutter 和前端,为什么会一起“状态爆炸”

先说一个很现实的场景。

一个 Flutter 页面最开始可能只是:

  • 一个列表
  • 一个 loading
  • 一个点击事件
bool loading =false;List<Item> items =[];

一切都很简单。

但很快你会遇到:

  • 下拉刷新
  • 上拉分页
  • 局部 loading
  • 表单校验
  • 异步请求状态
  • 页面间数据共享

于是状态开始分裂:

页面状态 ├─ UI 状态(loading / error / empty) ├─ 业务状态(数据、筛选条件) ├─ 交互状态(是否选中、是否展开) ├─ 全局状态(用户、主题、权限) 

这一步,Flutter 和前端几乎完全一致

原因很简单:

Flutter 本质上是一个声明式 UI 框架,而声明式 UI 一定依赖状态驱动。

React、Vue、Flutter 都遵循同一件事:

UI = f(State)

状态一多,管理方式必然分歧,
于是就出现了——百家争鸣。

Provider / Riverpod / Bloc,本质上在解决什么问题

很多人把注意力放在“API 好不好用”上,其实忽略了核心。

这些方案本质都在回答三个问题:

  1. 状态放在哪里
  2. 谁可以修改状态
  3. UI 如何感知变化

Provider 的选择

Provider 的思路很直接:

  • 状态是对象
  • 通过 InheritedWidget 向下传递
  • notifyListeners 触发 rebuild
classCounterModelextendsChangeNotifier{ int count =0;voidincrement(){ count++;notifyListeners();}}
ChangeNotifierProvider( create:(_)=>CounterModel(), child:CounterPage(),);

好处很明显:

  • 简单
  • 上手快
  • 适合中小项目

但问题也很熟悉:

  • 状态和 UI 容易耦合
  • notifyListeners 粒度太粗
  • 大项目后期 rebuild 不可控

Riverpod、Bloc 为什么会出现

当项目复杂后,大家开始追求:

  • 更强的约束
  • 更明确的数据流
  • 更少的隐式依赖

于是:

  • Riverpod 把依赖关系显式化
  • Bloc 强制事件 → 状态的单向流动
  • Redux 更是走到极端:一切都不可变

这条演化路径,和前端一模一样

RN 项目后期的 Redux 地狱,其实不是 Redux 的错

很多人吐槽:

“Redux 太复杂了”

但真正的问题往往是:

  • 所有状态都进了 global store
  • 页面级状态也被当成全局状态
  • reducer 变成上帝文件
Redux Store ├─ user ├─ theme ├─ homePage ├─ detailPage ├─ modal ├─ tempFlags 

结果就是:

  • 改一个字段,半个项目受影响
  • Action 命名越来越抽象
  • 调试成本指数级上升

Flutter 项目里如果:

  • 所有状态都塞进 Riverpod global provider
  • 或 Bloc 被当成“万能状态容器”

结局是一样的。

Flutter 与前端状态模型的“同构性”

把技术名词全拿掉,其实两边模型几乎完全重合:

维度前端Flutter
UI 更新Virtual DOM DiffWidget rebuild
状态来源props / stateconstructor / provider
全局状态Redux / ZustandProvider / Riverpod
局部状态useStateStatefulWidget

差别只在表现形式,不在问题本质。

所以 Flutter 社区出现多种状态方案,并不是“乱”,
而是必然演化结果

那为什么 iOS 反而看起来更稳定?

再看 iOS。

MVC、MVVM,看起来好像没那么多争论。

原因不是 iOS 更先进,而是——限制更多

iOS 的几个天然约束

  1. UIKit 是命令式
  2. ViewController 生命周期强约束
  3. View 默认不自动响应状态变化
  4. 数据必须手动驱动 UI
funcupdateUI(){ label.text = viewModel.title }

你不调用,它就不变。

这其实强行压制了状态规模。

iOS 状态简单的“代价”

这种稳定是有代价的:

  • UI 更新需要手动维护
  • 容易出现状态不同步
  • 大量胶水代码
  • 重构成本高

所以 SwiftUI 出现后,
iOS 也开始重新面对 Flutter / React 遇到的问题。

状态复杂化,不是 Flutter 的问题,而是声明式 UI 的代价。

一个真正通用的状态分层方法论

不管 Flutter、前端还是 iOS,本质都可以用同一套分层思路。

UI State(页面私有)

  • loading
  • tab index
  • 是否展开

特点:

  • 生命周期 = 页面
  • 不跨页面共享

StatefulWidget / 局部 State 就够了。

Domain State(业务状态)

  • 列表数据
  • 表单内容
  • 筛选条件

特点:

  • 页面核心数据
  • 可测试
  • 与 UI 解耦

用 Provider / Riverpod / Bloc。

App State(全局状态)

  • 登录用户
  • 权限
  • 主题

特点:

  • 生命周期 = App
  • 变化频率低

严格限制数量,能少就少。

Flutter Demo:正确拆分状态的方式

业务状态(Domain State)

classTodoListModelextendsChangeNotifier{finalList<String> todos =[];voidaddTodo(String text){ todos.add(text);notifyListeners();}}

UI 层只关心展示

classTodoPageextendsStatefulWidget{@overrideState<TodoPage>createState()=>_TodoPageState();}class _TodoPageState extendsState<TodoPage>{ bool showInput =false;@overrideWidgetbuild(BuildContext context){final model = context.watch<TodoListModel>();returnColumn( children:[if(showInput)TextField( onSubmitted:(text){ model.addTodo(text);setState(()=> showInput =false);},),Expanded( child:ListView( children: model.todos .map((e)=>ListTile(title:Text(e))).toList(),),),FloatingActionButton( onPressed:(){setState(()=> showInput =true);},)],);}}

这里做对了三件事

  1. UI 状态不进 Provider
  2. 业务状态不关心 UI
  3. rebuild 范围可控

总结

Flutter 走上“百家争鸣”,不是因为它乱,
而是因为它走在了一条所有声明式 UI 都必须面对的路上

前端走过一次
RN 跌过一次
Flutter 正在经历
SwiftUI 也正在路上

真正重要的不是:

“你用的是 Provider 还是 Bloc?”

而是:

“你有没有想清楚,哪些状态该存在,哪些不该存在。”

Read more

2026年高校AIGC检测新规解读:AI率多少算合格?

2026年高校AIGC检测新规解读:AI率多少算合格?

2026年高校AIGC检测新规解读:AI率多少算合格? 从2024年知网正式上线AIGC检测功能开始,短短两年时间,"AI率"已经从一个新鲜名词变成了每个毕业生必须面对的硬性指标。2026年,各高校的AIGC检测政策进一步收紧和细化,要求也越来越明确。 那么,2026年AI率到底多少才算合格?不同学校的标准差别大吗?不合格会面临什么后果?本文将对这些问题进行深入解读。 一、AIGC检测已成为毕业论文审查的标配 回顾AIGC检测在高校中的普及历程,可以用"指数级扩散"来形容: * 2024年:知网上线AIGC检测功能,少数985/211院校开始试点,大部分学校处于观望状态 * 2025年:超过60%的本科院校和80%的研究生培养单位将AIGC检测纳入论文审查流程 * 2026年:AIGC检测基本实现全覆盖,包括专科院校在内的绝大部分高等教育机构都已建立相关制度 这一进程的背后,是教育部在2025年初发布的《关于加强高等学校学位论文学术诚信管理的指导意见》,其中明确提到"鼓励各高校引入人工智能生成内容检测机制,将AIGC检测作为论文质量保障的重要环节"。 虽然教育部没

基于Llamafactory与LoRA方法的大语言模型微调创建个性化聊天机器人

基于Llamafactory与LoRA方法的大语言模型微调创建个性化聊天机器人

一 、项目背景 随着大语言模型的快速发展,如何让通用模型具备垂直领域的深度知识与特定的角色人格,已成为参数高效微调(PEFT,Parameter-Efficient Fine-Tuning)技术的重要应用方向。传统的提示词难以让模型长期、稳定地维持复杂的角色设定和世界观知识,而全参数微调成本高昂。 本项目旨在利用 LlamaFactory 这一大模型微调框架,结合 LoRA(低秩适应) 技术,在保留基础模型通用能力的前提下,低成本地注入明日方舟游戏内的专属知识。目标是打造一个不仅能流畅对话,更能深度理解游戏内世界观设定、模拟特定人格说话方式的智能聊天机器人。 二、 介绍 2.1 Llamafactory Llamafactory 是一个专注于高效微调大型语言模型的开源工具库。它旨在简化模型微调流程,支持多种主流开源模型,并提供丰富的训练策略和优化技术。其支持多种微调方法,包括全参数微调(Full Fine-tuning)、轻量级微调(如LoRA、QLoRA)、适配器微调(Adapter)等。兼容Hugging Face生态系统,可直接加载预训练模型。 2.2 LoRA

【大模型:知识图谱】--6.Neo4j DeskTop安装+使用

【大模型:知识图谱】--6.Neo4j DeskTop安装+使用

上一期讲了图知识库的安装, 【图数据库】--Neo4j 安装_neo4j安装-ZEEKLOG博客  现在来看看可视化管理程序:Neo4j DeskTop的安装. 需要先安装java环境,具体看上面 目录 1.Neo4j DeskTop版下载 2.Neo4j DeskTop版安装 3.Neo4j DeskTop版使用 3.1.本地实例 3.2.远程连接 3.3.导入数据 1.Neo4j DeskTop版下载 1、进入“Neo4j官网”下载DeskTop版本。 好像需要科学上网: 放一个网盘下载: 通过网盘分享的文件:neo4j-desktop-2.0.2-x64.exe 链接: https://pan.baidu.com/s/1BIjfzdAGWGU19MJrmZIqJg?

基于龙卷风优化算法(TOC) 的多个无人机协同路径规划(可以自定义无人机数量及起始点)附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 🍎 往期回顾关注个人主页:Matlab科研工作室 🍊个人信条:格物致知,完整Matlab代码及仿真咨询内容私信。 🔥 内容介绍 1 引言 1.1 研究背景与意义 随着无人机技术在应急救援、农林植保、城市安防、物流配送等领域的广泛应用,单一无人机作业已难以满足复杂任务的效率与覆盖需求,多无人机协同作业成为主流发展趋势。多无人机协同路径规划的核心目标,是在满足飞行约束(避障、机间无碰撞、续航等)的前提下,为每架无人机规划最优路径,实现任务效率最大化。 传统路径规划算法(如A*、Dijkstra、PSO、GA等)在多无人机协同场景中存在明显局限:梯度依赖型算法难以应对非线性复杂环境,元启发式算法易陷入早熟收敛,且多数算法难以灵活适配自定义无人机数量、起始点的动态需求。龙卷风优化算法(Tornado Optimizer with Coriolis Force, TOC)是2025年提出的新型元启发式算法,