惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Security Latest
Security Latest
量子位
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
S
SegmentFault 最新的问题
The GitHub Blog
The GitHub Blog
AWS News Blog
AWS News Blog
T
Threat Research - Cisco Blogs
博客园 - Franky
Vercel News
Vercel News
H
Help Net Security
Martin Fowler
Martin Fowler
Security Archives - TechRepublic
Security Archives - TechRepublic
L
LINUX DO - 热门话题
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
L
Lohrmann on Cybersecurity
Cyberwarzone
Cyberwarzone
W
WeLiveSecurity
V2EX - 技术
V2EX - 技术
C
CERT Recently Published Vulnerability Notes
S
Secure Thoughts
C
Cyber Attacks, Cyber Crime and Cyber Security
B
Blog RSS Feed
H
Hacker News: Front Page
P
Proofpoint News Feed
博客园 - 聂微东
N
News and Events Feed by Topic
C
Cybersecurity and Infrastructure Security Agency CISA
D
Docker
博客园_首页
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
人人都是产品经理
人人都是产品经理
The Hacker News
The Hacker News
S
Security @ Cisco Blogs
博客园 - 【当耐特】
F
Fortinet All Blogs
The Register - Security
The Register - Security
A
About on SuperTechFans
D
Darknet – Hacking Tools, Hacker News & Cyber Security
S
Schneier on Security
NISL@THU
NISL@THU
Attack and Defense Labs
Attack and Defense Labs
Help Net Security
Help Net Security
Cisco Talos Blog
Cisco Talos Blog
月光博客
月光博客
IT之家
IT之家
有赞技术团队
有赞技术团队
Know Your Adversary
Know Your Adversary
Hugging Face - Blog
Hugging Face - Blog

Flutter

kkRepo 只用 1 天就支持了 Futter / Dart / Pub 仓库私服搭建、支持代理 pub.dev、支持聚合私服和 Proxy - V2EX flutter 开发的鸿蒙应用上架应用商店了 - V2EX flutter 现在开发最佳的库用什么?或者有什么好用的脚手架吗? - V2EX USB 摄像头求助。 - V2EX flutter 引入 aar 包,运行报错,版本 3.38.9 - V2EX 用 Flutter 做了一个 Redis Desktop Manager - V2EX flutter 生态这么差?写个 demo 两天都没调通 - V2EX 由于开发 flutter 然后测试是黑盒测试只会手点,开发了个插件 - V2EX 求助, flutter 项目混合式搭建问题 - V2EX 求助大神,为什么用 flutter 开发的安卓笔记软件卡顿、掉帧 - V2EX 写了一个 flutter 的状态管理库,大家参谋参谋。 - V2EX 开源一套 flutter UI 组件库,方便各位大佬快速进行跨平台开发,欢迎各位大佬 start - V2EX Flutter 的学习曲线高吗?对于个人开发者来说是否值得 - V2EX 闲着没事开发一款网文写作应用—— Letter Studio - V2EX 请教 flutter-windows 客户端白屏问题。 - V2EX 第一次写 flutter app 有个疑问 - V2EX Flutter in_app_purchase 内购在 iOS 上的应用总结 - V2EX 另一个视角看 Flutter 的思维 - V2EX 招 flutter 工程师 兼职! - V2EX 求推荐一个基础框架 - V2EX Ubuntu 团队为什么无偿给 Flutter 写桌面多窗口功能? - V2EX 请教: flutter 或 Android 更新、热更新方案 - V2EX 求一份 iOS 或者 Flutter 兼职 - V2EX 求助贴!关于 Flutter 接入 in_app_purchase 内购服务端部分二次验证的 - V2EX flutter 是不是要升级所有的 widget 了? - V2EX 上架 Play store 的问题... - V2EX 应用未声明 QUERY_ALL_PACKAGES 权限却报错,是 firebase 导致的吗? - V2EX App 开发新手请教一个 flutter 开发中的安卓问题 - V2EX V 友们, Flutter 编译报错可能是什么原因 - V2EX 如何实现梯形 tab 切换 - V2EX 请教:大佬们 2025 年 Flutter 用哪个路由? - V2EX flutter 支持 harmony os next 吗 - V2EX flutter 项目二开, UI 修改与项目优化 - V2EX flutter 是否能 vscode remote 远程开发和调试 ? - V2EX 大家使用 flutter 开发的 app 用什么日活统计工具呢 - V2EX Flutter 已经可以开发鸿蒙了吗 - V2EX 基于 flutter 的 二步验证 TOTP 应用 - V2EX 有没有可以学习的 flutter riverpod 的实战项目,希望推荐下更好的状态管理方案 - V2EX flutter 开发桌面软件如何做出好看得布局, 比如像 vscode, reqable - V2EX MBA M3 16GB 能玩 flutter 开发吗? - V2EX 真的无力吐槽 flutter 了 - V2EX 有 flutter 大佬么?请教几个问题 - V2EX Flutter 开发桌面应用程序,如何获取鼠标的绝对坐标? - V2EX flutter 启动 ios 项目失败 n 次,求大神帮忙 - V2EX Flutter 3.27 Flex 终于支持 spacing 了 - V2EX 听说有一个 app 安装后可以查看手机上哪些 app 是 flutter 开发的? - V2EX flutter 实现这样的功能,红包感谢 - V2EX flatter.cn 是国内外包公司的网站么 - V2EX Flutter GoRouter 如何实现 SingleTop - V2EX [求助]为什么 flutter 调试模式可以。发布模式打包出来的则无法运行。 - V2EX
最简单的状态管理库 view_model - V2EX
lumyx · 2025-10-12 · via Flutter

被 riverpod 繁琐和侵入式的使用方式困扰许久后,自己重新造了个轮子。 https://pub.dev/packages/view_model

优点是使用简单, 非常纯粹, 只是 view_model 没有其他花里花哨的概念。

import 'package:view_model/view_model.dart';
import 'package:flutter/foundation.dart'; // For debugPrint

class MySimpleViewModel extends ViewModel {
  String _message = "Initial Message";
  int _counter = 0;

  String get message => _message;

  int get counter => _counter;

  void updateMessage(String newMessage) {
    _message = newMessage;
    notifyListeners(); // 通知监听者数据已更新
  }

  void incrementCounter() {
    _counter++;
    notifyListeners(); // 通知监听者数据已更新
  }

  @override
  void dispose() {
    // 在此清理资源,例如关闭 StreamControllers 等
    debugPrint('MySimpleViewModel disposed');
    super.dispose();
  }
}



ViewModelFactory 负责实例化 ViewModel 。每个 ViewModel 类型通常 需要一个对应的 Factory 。

import 'package:view_model/view_model.dart';
// 假设 MySimpleViewModel 已如上定义

class MySimpleViewModelFactory with ViewModelFactory<MySimpleViewModel> {
  @override
  MySimpleViewModel build() {
    // 返回一个新的 MySimpleViewModel 实例
    return MySimpleViewModel();
  }
}

通过 watchViewModel 直接在 State 中使用.

class _MyPageState extends State<MyPage>
    with ViewModelStateMixin<MyPage> {
  // 1. 混入 Mixin

  late final MySimpleViewModel simpleVM;

  @override
  void initState() {
    super.initState();
    // 2. 在 initState 中获取 ViewModel
    // 当 MyPage 第一次构建时,MySimpleViewModelFactory 的 build() 方法会被调用来创建实例。
    // 当 MyPage 被销毁时,如果此 viewModel 没有其他监听者,它也会被销毁。
    simpleVM =
        watchViewModel<MySimpleViewModel>(factory: MySimpleViewModelFactory());
  }
  
  
    @override
  Widget build(BuildContext context) {
  	// 直接使用. simpleVM 数据更新后,会自动 setState
    Tetx(simpleVM.xxx);
  }

缺点是没有颗粒度更新,但我认为这其实不算缺点,这不是状态管理该做的事,但 riverpod bloc signal 似乎都对这个很在意,Widget 本身的 diff 已经足够高效, 就算每秒 setState 对帧率的影响也微乎其微,因为底层的 Render 没变,Widget 只是配置而已。 如果你真的需要频繁更新某个 局部 Widget ,那你应该使用 ValueNotitifierBuilder : https://github.com/lwj1994/flutter_view_model/issues/13

完整的文档: https://github.com/lwj1994/flutter_view_model/blob/main/packages/view_model/README_ZH.md