博客遭遇 CDN 供应链投毒攻击:排查与修复全记录

最近发现博客在手机上浏览时会自动跳转到第三方诈骗网站,经过排查发现是使用的 CDN 遭受了供应链投毒攻击。本文记录整个排查和修复过程。 问题现象 手机浏览博客时,页面会自动跳转到诈骗网站 主要影响移动端用户 PC 端偶尔也会出现跳转 问题根因 cdn.staticfile.net 供应链攻击 经过排...

Signals.dart使用介绍

本文旨在为 Dart 和 Flutter 开发者提供 Signals.dart 框架的全面介绍。Signals.dart 借鉴了现代前端响应式系统(如 SolidJS 或 Vue 3)的核心理念,提供了一种基于 Pull-Based(拉取式) 架构的、高效且极简的状态管理方案。 文档重点阐述了框架的...

Android Flutter 插件第三方 aar 库依赖方式对比分析

背景说明 在开发 Flutter 插件时,我们经常需要集成第三方 Android 库。然而,将本地 AAR 文件直接添加到 Flutter 插件模块中,是无法自动将 AAR 的依赖关系和内容正确传递给宿主 App 的。 尤其需要注意的是: AGP 7.0+ 的明确限制:Android Gradle ...

Git Merge+Revert 与 Reset+Cherry-pick 对比

日常使用 git 开发管理分支非常方便,但是偶尔也会出现一些问题,比如这次就遇到了回滚合并导致后续合并丢失部分内容这样的情况,本文介绍一下如何处理这种情况,分析事故原因。 Merge+Revert 方案在复杂合并和回滚时容易引入副作用,可能导致部分内容被意外撤销;而 Reset+Cherry-pic...

Android 架构模式一览

Android 的架构依次有: MVC MVP MVVM MVI Clean Architecture 上述架构循序渐进,当前主流设计模式是 MVVM,MVI 和 Clean Architecture,这三者的着重点各有不同,可以根据项目规模大小递进选择。 [图片] MVC MVC,Model-Vi...

Flutter 动画分析之 CustomPaint

本文讨论的 Flutter 动画主要限定在:随着每一帧的变化,修改 Flutter Widget 的大小、颜色、位置等属性,使之看起来从一种状态渐变为另外一种状态 这一范围。 根据之前的分析,关于 Flutter 中的 Widget 动画,大体可以分为三大类: 隐式动画,以 ImplicitlyAn...

Flutter 动画分析之 AnimatedWidget&ImplicitlyAnimatedWidget

本文讨论的 Flutter 动画主要限定在:随着每一帧的变化,修改 Flutter Widget 的大小、颜色、位置等属性,使之看起来从一种状态渐变为另外一种状态 这一范围。 在之前的文章中,我们将 Flutter 中动画的实现分为 底层实现 和 封装好的 Widget 两大部分,目前已经分析了底层...

Flutter 动画分析之 AnimationController

本文讨论的 Flutter 动画主要限定在:随着每一帧的变化,修改 Flutter Widget 的大小、颜色、位置等属性,使之看起来从一种状态渐变为另外一种状态 这一范围。 Flutter 中关于动画的类有很多,为了便于分析,将其分为两大类: Flutter 框架底层实现动画的各个类,比如 Ani...

Flutter 动画分析之 Tween&Curve

在上篇文章中,我们分析了 Flutter 中主要由AnimationController控制动画的开始、结束,但是默认情况下其只能产生线性变化的 double 类型的 value,如果想随时间变化,让 Widget 产生 Size、Offset 等属性的变化,亦或者控制这些值变化的速度快慢,这时候就...

Flutter 动画分析之 Hero

Flutter 中的 Hero 动画是指可以在切换页面时自动跨页面实现 Widget 放大缩小、位移的动画,在用户看起来好像是当前页面的 Widget“飞”入到另外一个页面,底层基于 Overlay 实现。 本文对其原理和应用做一简单分析,主要是对官方介绍的理解与分析,感兴趣的可以直接阅读官方文档。...

Flutter 图片加载方案分析之 power_image

Flutter 默认提供了Image用于从网络、文件等加载图片,并且使用ImageCache统一管理图片缓存,但有时候并不能满足使用需求(比如网络图片没有磁盘缓存,导致每次 ImageCache 清除缓存之后又要从网络下载),所以又出现了fluttercachednetworkimage、exten...

Flutter 图片加载方案分析之 extended_image

Flutter 默认提供了Image用于从网络、文件等加载图片,并且使用ImageCache统一管理图片缓存,但有时候并不能满足使用需求(比如网络图片没有磁盘缓存,导致每次 ImageCache 清除缓存之后又要从网络下载),所以又出现了fluttercachednetworkimage、exten...

Flutter 图片加载方案分析之 Image

Flutter 默认提供了Image用于从网络、文件等加载图片,并且使用ImageCache统一管理图片缓存,但有时候并不能满足使用需求(比如网络图片没有磁盘缓存,导致每次 ImageCache 清除缓存之后又要从网络下载),所以又出现了fluttercachednetworkimage、exten...

Flutter 滑动分析之 NestedScrollView

Flutter 中的 scrollable widget 根据实现方式的不同,可以分为两大类: 基于 RenderBox 的 box protocol 实现的,主要基于 Size 实现布局。常见的有SingleChildScrollView。 基于 RenderSliver 的 sliver pro...

Flutter 滑动分析之 Scrollview

Flutter 中的 scrollable widget 根据实现方式的不同,可以分为两大类: 基于 RenderBox 的 box protocol 实现的,主要基于 Size 实现布局。常见的有 SingleChildScrollView。 基于 RenderSliver 的 sliver pr...

Flutter 滑动分析之 SingleChildScrollView

Flutter 中的 scrollable widget 根据实现方式的不同,可以分为两大类: 基于 RenderBox 的 box protocol 实现的,主要基于 Size 实现布局。常见的有 SingleChildScrollView。 基于 RenderSliver 的 sliver pr...

Flutter APP 绘制过程简析

本文基于 Flutter 3.0 Flutter App 基于 Dart 语言编写,提供了一套简单易用的 API,可以让开发者在 Flutter 中快速开发出一个精美的 APP。那么在 Flutter 中是如何绘制一个 APP 呢,runApp 是怎么将我们编写的 Widget 等添加到手机上的呢?...

Dart event loop

本文基于 Dart 2.17 Dart App 中所有的代码都在一个 isolate 中运行(各个 isolate 之间的代码运行时是隔离的),一个 isolate 有自己的 heap,维持有一个消息队列 eventloop,处理两种消息: 1. 执行用户点击、屏幕刷新、绘制,一般的 Future、...

Dart 读取文件过程分析

Dart 读取文件时,先在 Dart 代码创建 File 引用,通过与跨通信(先通过 IO Service 而发送请求到 native 端,等到 native 执行完操作之后再回调结果)从而实现对文件的读写。 实现一个简单的读取文件的代码如下: 整个过程如下: [图片] 过程分析 Dart 端发起文...

Dart VM

本文是对 Dart 官方 VM 的介绍的总结摘要,推荐直接阅读官方原文。 Dart VM is a collection of components for executing Dart code natively. Notably, it includes the following: Runti...