自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(150)
  • 收藏
  • 关注

原创 Flutter Riverpod 使用详细解析

摘要:Riverpod 是 Flutter 官方推荐的状态管理方案,提供多种 Provider 类型(StateProvider、StateNotifierProvider 等)满足不同场景需求。通过 ConsumerWidget 和 WidgetRef 实现响应式状态管理,支持异步操作(FutureProvider)和实时数据流(StreamProvider)。相比传统 Provider 更安全高效,具有自动资源管理机制,包括状态初始化、重建控制和释放资源等生命周期管理。

2025-06-26 11:17:06 651

原创 Flutter MobX 响应式原理与实战详解

MobX是一个高效的状态管理库,通过Observable、Action和Reaction三大核心概念实现UI自动刷新。安装时需添加mobx、flutter_mobx和代码生成依赖。使用@observable标记状态变量,@action定义状态变更方法,并通过Observer组件监听状态变化。优化方式包括Observer+child减少重建、封装自定义ObserverWidget,以及列表项精细追踪。MobX的响应式机制基于可观察对象的自动依赖追踪,比传统方案更高效。

2025-06-25 16:56:07 408

原创 Flutter 状态管理(setState、InheritedWidget、 Provider 、Riverpod、 BLoC / Cubit、 GetX 、MobX 、Redux)

Flutter 状态管理方案比较与使用场景指南:本文介绍了Flutter开发中常用的8种状态管理方式,包括原生方案(setState/InheritedWidget)和主流第三方库(Provider/Riverpod/BLoC/GetX等)。每种方案都从优点、缺点和适用场景三个维度进行分析,并附典型代码示例。setState适合简单场景,Provider为官方推荐方案,BLoC适合复杂业务逻辑,GetX以简洁著称。文章还提供了每种方案的官方文档链接,帮助开发者根据项目规模、复杂度及团队习惯选择最合适的状态管

2025-06-25 15:46:57 476

原创 Flutter 中 Provider 的使用、注意事项与原理解析(含代码实战)

本文介绍了Flutter官方推荐的状态管理库Provider的使用方法。Provider基于InheritedWidget和ChangeNotifier实现,通过监听数据变化自动更新UI。文章详细讲解了Provider的核心原理、常见类型与区别,并提供了多种场景的代码示例:ChangeNotifierProvider用于计数器应用的状态管理,Provider提供静态配置数据,FutureProvider处理异步数据加载,StreamProvider监听实时数据流。每种Provider类型都配有典型应用场景的

2025-06-24 16:25:21 993 1

原创 InheritedWidget组件使用及原理

Flutter中InheritedWidget和InheritedModel是实现高效状态共享的关键机制。InheritedWidget通过of(context)方法让子树组件访问数据,并在数据变化时自动重建依赖组件。示例展示了计数器应用,通过CounterProvider共享状态,点击按钮更新数据并刷新界面。InheritedModel则提供更细粒度的控制,允许子组件仅监听特定维度的数据变化。示例中CounterModel分别管理countA和countB状态,两个子组件各自依赖不同数据维度,实现精准更新

2025-06-24 11:10:57 690

原创 setsate()使用详解原理及注意事项

摘要:Flutter中的setState是基础但易错的状态管理方法。关键注意事项包括:仅限StatefulWidget使用、避免在build()中调用、减少重建范围、正确处理异步和生命周期。其原理是通过标记组件为"dirty"触发下一帧重建,实际UI更新由Flutter渲染管线完成。优化建议包括拆分组件、控制调用频率和使用mounted检查。理解这些要点可避免常见性能问题和错误。

2025-06-23 10:54:52 930

原创 getx用法详细解析以及注意事项

Flutter GetX框架提供了三种状态管理方式:响应式(Rx+Obx)、简单状态(GetBuilder)和混合监听(Worker)。响应式方式通过.obs变量和Obx自动刷新UI,适合实时数据变化;简单状态需手动调用update()刷新,性能更高;Worker用于状态变化时的副作用处理。Obx仅监听内部使用的.obs变量而非全部,且不绑定特定Controller,可灵活组合多个Controller的状态。开发者可根据项目需求选择合适方式,快速开发推荐响应式,高性能场景适用GetBuilder,副作用处理

2025-06-20 17:08:27 273

原创 flutter bloc 使用详细解析

Flutter_bloc是一个基于BLoC模式的Flutter状态管理库,通过事件驱动和状态响应的方式实现UI与业务逻辑的分离。其核心包含Event(用户输入)、State(界面状态)和Bloc(处理逻辑)三个部分。使用步骤包括安装依赖、定义事件和状态、创建Bloc逻辑组件以及在UI中通过BlocProvider和BlocBuilder进行绑定。相比GetX,flutter_bloc更适合大型项目,具有更好的可维护性和测试性,而GetX则以简洁快速著称,适合小型或个人项目。上下文扩展方法如context.r

2025-06-20 09:00:49 746

原创 如何进行 iOS Widget 开发?

Widget 简介Widget 是 iOS 14 重磅推出的新功能,使得用户可以在主屏幕添加小组件,快速浏览 app 提供的重要信息。它的设计与旧版本 macOS 的 Widget 一脉相承,甚至连添加的动画也是去掉了拟物化的水波纹效果。设计定位用户可以通过 Widget 对主屏幕进行个性化定制,但是 iOS 14 的 Widget 跟其他系统上的小组件有很大的区别。在 Widget 的设计上苹果也保持了一贯的克制,定位于轻量化、仅用作关键信息的展示。比如系统自带 Widget 中的股票、天

2021-01-09 09:08:55 665

原创 关于mac 使用问题 和解决方法收集

1.输入的insert格式变成replace模式,在mac系统下没有insert快捷键怎么都切换不了第一步,按一下ESC键,随后i代表insert,r代表replace,根据需求任意切换(不是一块按,是先按esc 再按i或者r)

2020-12-23 20:36:20 613

原创 flutter安装issue Flutter plugin not installed this adds Flutter specific functionality

问题描述MAC, Android Studio 4.1环境, 安装flutter插件并重启后在终端运行flutter doctor却报错,具体如下Doctor summary (to see all details, run flutter doctor -v):[✓] Flutter (Channel stable, 1.22.2, on Mac OS X 10.15.7 19H2, locale zh-Hans-CN)[✓] Android toolchain - develop f

2020-12-23 20:10:22 890 1

原创 Flutter Image 使用问题记录

Container( width: 690.w, height: 334.w, child: Image.network( info.fCover, width: double.infinity, height: 334.w, fit: BoxFit.cover,),)如果图片的尺寸比控件的尺寸小时,设置实际尺寸 ,BoxFit.cover 会填不满控件必须在外面包一层,然后 image 的尺寸.

2020-12-10 13:49:47 351

原创 Flutter text 用法笔记

Text( "星\n期\n三", strutStyle: StrutStyle(leading: 0.7),//设计行距 style: TextStyle( color: ColorUtil.color(color_4A4A4A), fontSize: ScreenUtil().setSp(26), ), ...

2020-04-02 18:07:52 431

转载 Android 动态权限 第三方库总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 http://blog.csdn.net/totond/article/details/73648103目录(?)[+]本文出处: 炎之铠csdn博客:http://blog.csdn.net/totond 炎之铠邮箱:[email protected] 本文demo地址:https://github.com/totond/Permiss...

2018-02-23 11:23:45 7788 1

原创 Android Studio无法连接夜神模拟器

解决方法:1)进入CMD,转到夜神安装目录2)执行命令:nox_adb.exe connect 127.0.0.1:62001,连接到服务器。例如:夜神安装目录是D:\Users\Administrator.USER-20161125KP\AppData\Roaming\Nox\bin,在命令行中输入cd\,回车,输入d:,回车,输入cd 夜神安

2017-11-27 16:36:12 756

转载 深入理解Android之Gradle

格式更加精美的PDF版请到:https://pan.baidu.com/s/1boG2cLD下载weibo分享失效,请各位到百度云盘下载Gradle是当前非常“劲爆”得构建工具。本篇文章就是专为讲解Gradle而来。介绍Gradle之前,先说点题外话。一、题外话说实话,我在大法工作的时候,就见过Gradle。但是当时我一直不知道这是什么东西。而且大法工具

2017-11-22 18:30:36 365

转载 GreenDao3.0入门

1. 什么是greenDao弄明白greenDao之前我们应该先了解什么是ORM(Object Relation Mapping 即 对象关系映射),说白了就是将面向对象编程语言里的对象与数据库关联起来的一种技术,而greenDao就是实现这种技术之一,所以说greenDao其实就是一种将java object 与SQLite Database关联起来的桥梁,它们之间的关系 如下图所示;

2017-11-20 11:38:42 553

原创 沉浸式

http://blog.csdn.net/chenliang1937/article/details/44892101http://blog.csdn.net/guolin_blog/article/details/51763825http://hukai.me/android-training-course-in-chinese/ui/system-ui/immersive.html

2017-06-16 15:22:36 321

转载 RxJava使用场景小结

from:http://blog.csdn.net/lzyzsd/article/details/50120801取数据先检查缓存的场景取数据,首先检查内存是否有缓存 然后检查文件缓存中是否有 最后才从网络中取 前面任何一个条件满足,就不会执行后面的final Observable memory = Observable.create(new Observable.

2017-04-21 14:33:27 309

转载 Android严苛模式StrictMode使用详解

from:http://blog.csdn.net/mynameishuangshuai/article/details/51742375StrictMode类是Android 2.3 (API 9)引入的一个工具类,可以用来帮助开发者发现代码中的一些不规范的问题,以达到提升应用响应能力的目的。举个例子来说,如果开发者在UI线程中进行了网络操作或者文件系统的操作,而这些缓慢的操作会严重影响

2017-04-09 14:38:10 572

转载 Rxjava-Android资料汇总

原文链接:http://blog.csdn.net/qq1026291832/article/details/51007490    从去年(2015)10月份左右接触到RxJava到今(2016.03)也有近半个年,从一开始的Rx风格的蒙圈代码到现在自己项目中必不可少的Lib,多多少少积累下来一些经验,再加上周边小伙伴不时的问这个依赖(RxJava)是什么?这代码什么意思?RxJava是什么

2017-03-22 20:32:56 585

原创 SPAN 的使用详解

package com.example.spantext;import android.app.Activity;import android.graphics.BlurMaskFilter;import android.graphics.BlurMaskFilter.Blur;import android.graphics.Color;import android.graphics.

2016-06-27 22:25:28 4152

转载 Android 6.0 运行时权限处理

运行时权限介绍Android 6.0在我们原有的AndroidManifest.xml声明权限的基础上,又新增了运行时权限动态检测,以下权限都需要在运行时判断:运行时权限处理Android6.0系统默认为targetSdkVersion小于23的应用默认授予了所申请的所有权限,所以如果你以前的APP设置的targetSdkVersion低于23,在运行时也不会崩溃,

2016-05-06 16:07:45 583

转载 Android应用在不同版本间兼容性处理

FROM:http://www.cnblogs.com/yaowen/p/5013366.html在Android系统中向下兼容性比较差,但是一个应用APP经过处理还是可以在各个版本间运行的。向下兼容性不好,不同版本的系统其API版本也不同,自然有些接口也不同,新的平台不能使用旧的API,旧的平台也使用不了新的API。        为了应用APP有更好的兼容性,咱们可以利用高版本

2016-04-27 14:47:06 10507

原创 实现水波效果

一·效果图:根据 y = A*sin(wx + b) + h;来画出我们的波纹基本思路:1.将view的一个宽度作为一个周期,或者一个周期的整数倍,这样便于计算和编程。2.用数组保存每一个x值对应的y值,这里的x其实就是横向的像素值,都为整数。3.然后通过这些数组画线,是纵向划线,然后就行4.让两条波的速度有一个差值,已形成层次感pa

2016-03-05 21:34:24 697

转载 Android 通过系统使用NotificationListenerService 监听各种Notification的使用方法

from:http://blog.csdn.net/zpf8861/article/details/38531669NotificationListenerService是通过系统调起的服务,当有应用发起通知的时候,系统会将通知的动作和信息回调给NotificationListenerService。在继承NotificationListenerService服务实现自

2016-03-01 18:24:20 3864

转载 Android中插件开发篇之----类加载器

前言关于插件,已经在各大平台上出现过很多,eclipse插件、chrome插件、3dmax插件,所有这些插件大概都为了在一个主程序中实现比较通用的功能,把业务相关或者让可以让用户自定义扩展的功能不附加在主程序中,主程序可在运行时安装和卸载。在android如何实现插件也已经被广泛传播,实现的原理都是实现一套插件接口,把插件实现编成apk或者dex,然后在运行时使用DexClassL

2016-02-23 22:46:33 941

原创 android中的类加载器,以及加载机制

package com.liaoli.android.classloader.test;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.util.Log;import android.view.Menu;import android.v

2016-02-23 22:14:39 485

原创 动态换肤

使用到的技术:              1.DexClassLoader 将一个apk包加压到指定位置                    2.AssetManager的addAssetPath方法可以将apk或者zip包中的资源加载到Resource 但是由于                AssetManager的addAssetPath方法是hide的,所以得用反射的方式

2016-02-22 22:12:26 574

转载 Android UI开发: 横向ListView(HorizontalListView)及一个简单相册的完整实现 (附源码下载)

本文内容:1、横向ListView的所有实现思路;2、其中一个最通用的思路HorizontalListView,并基于横向ListView开发一个简单的相册;3、实现的横向ListView在点击、浏览时item背景会变色,并解决了listview里setSelected造成item的选择状态混乱的问题。众所周知,ListView默认的方向是垂直的,但有些时候人们更喜

2016-02-18 11:28:20 622

转载 为Android HorizontalListView添加Scrollbar

最近由于项目需要,要实现一个横向滚动的列表,打算直接用HorizontalScrollView,但是因为没有视图复用,列表项多了之后会占用较多内存,排除;再想到用Gallery,但Gallery有一个自动定位到中央的动画效果,要去除这个效果的工作比较复杂。最后搜了一下找到了这个Android-HorizontalListView,实现了ListView的大部分功能,只是不支持Header、Foot

2016-02-18 10:31:41 430

转载 Android ViewPagerIndicator

Android Viewpager Indicator是Android开发中最常用的控件之一,几乎所有的新闻类APP中都有使用,下面介绍其基本使用方法。1. ViewPager Indicator的Library查看Viewpager Indicator的Library代码,可以看到此项目的设计思想:首先定义了一个PageIndicator接口,它里面定义了最重要和

2016-02-17 14:12:32 659

原创 ViewPager限定预加载的页面个数setOffscreenPageLimit(int limit)

ViewPager里面还定义了一个     private int mOffscreenPageLimit = DEFAULT_OFFSCREEN_PAGES;默认值 是1,这表示你的预告加载的页面数量是1,假设当前有四个Fragment的tab,显示一个,预先加载下一个.这样你在移动前就已经加载了下一个界面,移动时就可以看到已经加载的界面了. 从日志里面可以看到onActivityC

2016-02-16 16:47:05 31293

转载 Android中各种Span的用法

49.Android中各种Span的用法Android中各种Span的用法前言SpannableStringBuilderURLSpanUnderlineSpanTypefaceSpanTextAppearanceSpanTabStopSpanStandardSuperscriptSpanSubscriptSpanStrikethroughSpanScaleXSpanS

2016-02-02 14:34:42 11001

转载 Android ActionBar完全解析,使用官方推荐的最佳导航栏(下)

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/25466665本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工,英文好的朋友也可以直接去读原文。http://developer.android.com/guide/topics/ui/actionbar.html限于篇幅的原因,在

2016-01-28 19:57:39 547

转载 Android ActionBar完全解析,使用官方推荐的最佳导航栏(上)

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/18234477本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工,英文好的朋友也可以直接去读原文。http://developer.android.com/guide/topics/ui/actionbar.htmlAction Ba

2016-01-28 15:35:52 376

转载 [个人总结]APK瘦身实践

[个人总结]APK瘦身实践因为推广的需要,公司需要把APK的大小再“减小”一下,4M以内!当达到4M以内之后,公司建议说,能否再压压?2M如何?瘦身前因为平时就考虑到大小的限制,所以很多工作已经做过了,如下列举现在的状态:7.3M(Debug版本)和6.5M(Release版本)开启minifyEnabled开启shrinkResources已经去除不相

2016-01-26 12:24:14 925

转载 Android UI性能优化详解

Android UI性能优化详解11 Jan 2016设计师,开发人员,需求研究和测试都会影响到一个app最后的UI展示,所有人都很乐于去建议app应该怎么去展示UI。UI也是app和用户打交道的部分,直接对用户形成品牌意识,需要仔细的设计。无论你的app UI是简单还是复杂,重要的是性能一定要好。UI性能测试性能优化都需要有一个目标,UI的性能优化也是一样。你可能会觉

2016-01-23 12:30:12 1281

转载 聊一聊Android 6.0的运行时权限

JAN 17TH, 2016Android 6.0,代号棉花糖,自发布伊始,其主要的特征运行时权限就很受关注。因为这一特征不仅改善了用户对于应用的使用体验,还使得应用开发者在实践开发中需要做出改变。没有深入了解运行时权限的开发者通常会有很多疑问,比如什么是运行时权限,哪些是运行时的权限,我的应用是不是会在6.0系统上各种崩溃呢,如何才能支持运行时权限机制呢。本文讲尝试回答这一些

2016-01-23 11:20:19 444

原创 View更新绘制过程

view动画框架是建立在view的基础上的,在view类中有一个startAnimation方法来使动画开始,startAnimation会将一个Animation对象传递给view对象,这个Animation中指定了动画的种类,系统为我们实现了四中动画透明度、平移、旋转、缩放。并且这些动画可以随意组合起来,形成复杂动画,当然我也可以通过继承Animation来实现我们自己想要的动画效果。

2015-12-29 19:47:01 557

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除