- 博客(67)
- 收藏
- 关注
原创 Flutter 扒一扒图片缓存框架cached_network_image
我分析图片加载流程,不是直接从Image这个类开始分析的。我现拿这个图片缓存框架进行解析。其实cached_network_image这个框架本质上还是处理Image类的,往下看就知道了,只是cached_network_image这个框架对他进行的一些封装,加了原生没有的文件缓存功能。图片处理机制流程。
2024-04-24 17:40:39 1673 4
原创 Flutter 从源码扒一扒Stream机制
虽然看不懂源码是一件枯燥无聊的事,但是多看几遍或许会变成一件有趣的事。如果要想深入学习flutter,阅读源码是必须要跨过的坎。当然我写的也不是很好,只是纯粹记录学习从步骤一步步看源码的过程。有不满的,可以提提意见,但不要乱喷。
2024-04-22 10:31:25 749 1
原创 Flutter 从源码看Getx的依赖原理
从源码来看的话,Getx的本质就是使用Map来保持一种依赖关系。通过使用find就能够找到相应的对象。最后想说的就是,熟悉源码能帮助我们更好的使用框架。如果对你有用的话,请不要吝啬给个赞吧!
2022-09-03 15:55:26 2145 1
原创 Flutter 全能型选手GetX —— 状态管理
当我们使用Get.create(()=>Controller())会在每次调用时生成一个新的Controlle,Get.find()`GetView 是一个const Stateless的Widget,如果我们只有单个控制器作为依赖项,那我们就可以使用GetView,而不是使用StatelessWidget,并且避免了写Get.Find()。被obs修饰过的变量,可以不使用GetBuilder,但是需要使用另一个widget,那就是obx,来包裹需要刷新的widget。如果我们需要刷新对应的界面,就可以。.
2022-08-18 19:15:22 5714
原创 Flutter 全能型选手GetX —— 依赖管理
对于依赖注入有四种方式,我们要根据不同的业务场景来使用相应的方法就可以了。对于Bindings,可以根据自己的编码风格来使用。
2022-08-09 16:35:50 3005
原创 记录Android和Flutter的那些混合开发基情
步骤一:新建一个原生的安卓工程,然后同级目录下再新建flutter工程。也就是安卓工程和flutter工程是并列在同一目录下的。项目建完后,在安卓项目的settings.gradle文件里写上下面的配置信息:setBinding(new Binding([gradle:this]))evaluate(new File( settingsDir.parentFile,'flutter_module/.android/include_flutter.groovy'))步骤二:在安卓
2022-02-24 09:38:13 1833
原创 自己动手丰衣足食,撸一个flutterApp
包含功能:首页轮播图列表上拉加载、下拉刷新底部导航切换保存页面状态页面路由传值RxDart全局消息通信封装provider状态管理使用sqflite实现收藏功能…持续增加中第三方框架当前 Flutter SDK 版本 2.0.4库功能dio网络框架shared_preferences本地数据缓存image_picker图片管理flutter_swiper轮播图get页面路由pull_to_refresh下拉刷新
2021-10-14 16:35:16 1678
原创 单链表,我来了
一、单链表的特点链表以结点作为存储单元,这些存储单元可以是不连续的。单链表每个结点由两部分组成:存储的数值+后序结点的指针,下面均是单链表的操作。上面展示的是一个单链表的存储原理图,简单易懂,head为头节点,他不存放任何的数据,只是充当一个指向链表中真正存放数据的第一个节点的作用,而每个节点中都有一个next引用,指向下一个节点,就这样一节一节往下面记录,直到最后一个节点,其中的next指向null。(网络引用)二、实战(废话不都说,直接上机开干)class Node { ///数据域
2021-08-11 11:52:07 211
原创 记录gradle插件学习一
我就不说那么多废话,直接上图一个一个步骤来,看得更清晰步骤一:创建插件项目描述:新建android项目后,再建一个module,然后删掉一些不必要的文件,如下所示:步骤二:新建groovy文件夹步骤三:新建MyPlugin.groovy文件,后缀名是groovy。MyPlugin的内容,看着就跟java一样,因为groovy也是jvm语言,是兼容java的。class MyPlugin implements Plugin<Project> { @Override
2021-08-03 14:43:50 177
原创 flutter 状态管理模式之-学习providers基本用法
一、什么是provider二、provider的基本用法三、provider使用场景
2021-04-01 18:36:37 905 3
原创 flutter 认识InheritedWidget
一、认识官方的说InheritedWidget是flutter中非常重要的一个功能性widget,它可以高效的讲数据在widget树中向下传递、共享,这在一下需要在widget树中共享数据的场景非常方便。
2021-03-25 21:15:56 441
原创 Android TextureView与SurfaceView的相遇
一、认识TextureView1、TextureView是什么?TextureView是android4.0引入的,用于承载显示数据流的View。如本地Camera采集的预览数据流和视频通话模块从网络包里解出实时视频数据流。2、TextureView怎么使用? mTextureView.surfaceTextureListener = object : TextureView.SurfaceTextureListener { override fun onSurfaceTex
2020-10-25 14:45:40 653
原创 flutter学习笔记-listview
一、普通的listview二、 ListView.builderListView.builder({ Key key, Axis scrollDirection = Axis.vertical, bool reverse = false, ScrollController controller, bool primary,//如果[primary]参数为true,则[controller]必须为null。 ScrollPhysics physics,
2020-10-11 11:26:55 449
转载 对比GraphQL与REST——两种HTTP API的差异
https://www.jianshu.com/p/2ad286397f7a?open_source=weibo_search
2020-05-30 23:03:55 392
原创 Flutter 响应式框架RxDart学习
一、rxdart是什么?RxDart 是基于 ReactiveX 的响应式函数编程库。Dart本身有 Stream API,RxDart在其上增加了其他方法。ReactiveX是一个强大的库,用于通过使用可观察序列来编写异步和基于事件的程序。它突破了语言和平台的限制,让我们编写异步程序更加的简单。二、rxdart的功能Subject实现并扩展了StreamController,它符合Str......
2020-04-10 21:37:47 11167
原创 java性能调优
java性能调优一、代码优化1、使用递归调用时,如果过多的调用容易造成java.lang.StackOverflowError即栈溢出和程序执行过慢。这是一个潜在Bug和影响程序执行效率问题,需要谨慎使用。原因:每次递归调用时会向栈中push当前方法的运行状态(现场),而Java栈内存的使用超过限制的大小时,程序会出现栈异常。2、及时关闭流。Java编程过程中,进行数据库连接、I/O 流操作...
2020-01-17 10:28:09 527
原创 一起学android蓝牙编程
一、蓝牙简介蓝牙的一系列操作过程:1、搜索其他蓝牙设备2、查询适配蓝牙3、建立RFCOMM通道4、通过发现服务连接其他蓝牙设备5、交换数据6、管理多项连接二、蓝牙开发常用类BluetoothAdapter:代表类一个本地的蓝牙适配器。他是所有蓝牙交互的入口点。利用它你可以发现其他蓝牙,查询绑定了的设备,使用已知的的MAC地址实例化一个蓝牙设备和建立一个服务端来监听来自其他设备的连...
2019-06-29 17:23:47 1132
原创 AsyncTask实现原理和注意事项
一、介绍AsyncTask即异步任务,是Android提供的轻量级异步类,它对Thread和Handler进行了封装,方便我们使用。可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI线程。根据Android官方文档上的介绍,AsyncTask的设计是围绕线程和处理器的一个辅助类,并不构成一个通用的线程框...
2018-12-31 19:32:28 1331
原创 自己动手实现一个Android断点下载
一、断点下载原理及步骤 对于断点下载,就是下载的过程中,都会出现一些异常情况,导致下载中断。虽说可以重新下载,但是这对大部分的人来说,这是很麻烦很蛋疼的事。 步骤: 1. 获取下载链接,首先到数据库查找一下是否有重复的下载任务,有点话获取数据继续下载,没有的话,获取文件对象,传给下载服务。 2. 新建一个下载服务,方便应用退出时,能继续在后台下载。 3. 创建一个数据库,用来存储程
2017-12-11 10:33:22 488
原创 Java并发编程:闭锁CountDownLatch之一起回家
一、CountDownLatch的特性 CountDownLatch也叫闭锁它是一个同步工具类,它的一个特性是:闭锁相当于一道门,所有线程都没到达之前,都是关闭状态的。直到所有的线程都完成各自的任务后,闭锁就会打开,并且一直处于打开状态。举个常见的例子来说,同学聚会,我们需要等到所有的人都到了,聚会才能开始。二、CountDownLatch实现原理 CountDownLatch是通过
2017-11-26 15:03:18 401
原创 java 之线程的控制
一、join线程Thread提供了join方法,该方法在某个程序执行流中被调用时,调用其他线程的join方法的线程将会被阻塞。直到join方法的线程执行完为止。 static class JoinThread extends Thread{ public JoinThread(String name){ super(name); }
2017-09-12 15:12:20 332
原创 设计模式——适配器模式
适配器模式将一个类的接口,转换成客户期望的另一接口。适配器让原本接口不兼容的类可以合作无间。适配器模式又分为对象适配器和类适配器。
2017-08-29 23:24:11 257
原创 Rxjava结合操作符—merge、 Join
1、mergeJavadoc: merge(Iterable) Javadoc: merge(Iterable,int) Javadoc: merge(Observable[]) Javadoc: merge(Observable,Observable) (接受二到九个Observable) Observable odds=Observable.just(1,3,5,7);
2017-08-23 15:00:09 4738
原创 kotlin学习笔记(二)
类和继承一、类的声明class Invoice {}二、构造函数 一个类可以有一个主构造器和一个或多个次构造器。主构造器是类头部的一部分, 位于类名称(以及可选的类型参数)之后。 1.主构造器class Person constructor(firstName: String) {}如果主构造器没有任何注解(annotation), 也没有任何可见度修饰符,constr
2017-08-11 14:22:50 279
原创 EventBus 3.0源码学习(二)
一、post和postSticky的区别 /** Posts the given event to the event bus. */ public void post(Object event) { PostingThreadState postingState = currentPostingThreadState.get(); List
2017-07-06 12:57:14 424
原创 java线程的生命周期
启动线程的正确方法是调用Thread的start(),而不是直接调用run(),否则就变成单线程程序了。调用了线程的run方法之后,线程已经不在处于新建状态了,不要再次调用线程对象的start()方法了。只能对处于新建状态的线程调用start(),否则引发IllegalThreadStateException。
2017-07-05 13:14:42 384
原创 Kotlin基本语法(一)
一、程序运行入口 我们都知道java的程序运行入口是这样的public static void main(String[] args){}而kotlin跟java写法上还是有点区别的 对比一下就知道了func main(args:Array[] String){}二、定义包 在java上,我们都知道要定义相应的包名称。而kotlin则不需要匹配目录和包:源文件可以任意放在
2017-06-23 10:56:42 319
原创 Rxjava学习之结合操作符—zip
1、zip Observable ob1 = Observable.just(1,2,3); Observable ob2 = Observable.just(10,20,30,40); Observable.zip(ob1,ob2, (int1, int2) -> int1+"-"+int2).subscribe(o -> Log.v("TAG", "zip:"+o
2017-06-13 10:50:03 5122
原创 Rxjava学习之过滤操作符—filter、elementAt
1、 filter(Func1)过滤操作符,只发射满足条件的数据。 Observable.just(1, 2, 3, 4, 5, 6) .filter(integer -> integer > 4) .subscribe( integer -> Log.d("TAG", integer + ""));
2017-06-08 10:01:00 921
原创 java线程的创建和启动
一、继承Thread类public class MyThread extends Thread { private static volatile double d=1; @Override public void run() { while (d10){ d++; } } public static void main(String[] a
2017-06-07 15:03:12 327
原创 设计模式——Builder模式
一、概念 将一个复杂对象的构建过程和它的表示分离,使得相同的构建过程创建不同的表示。二、UML类图 UML类图如下图所示。 角色介绍: Product产品类-产品的抽象类 Builder-抽象的Builder类,规范产品的组建,一般是由子类实现具体的组建过程; ConcreteBuilder——具体的Bilder类; Director——统一组装过程三、使用场景 1、相同的方
2017-05-24 10:08:37 284
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人