自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(214)
  • 资源 (4)
  • 收藏
  • 关注

原创 使用百度飞桨EasyDL实现AI文章自动分类

如上几步就可以让你快速拥有一个自己的AI助手,还不快来动动你的小手么。

2022-08-09 15:53:35 911 1

原创 跟我学企业级flutter项目:简化框架demo参考

最近很多人在问我,没有一个不错的demo,不会如何做单工程模式,如何封装网络请求,如何去做网络持久化。那么今天我将demo分享出来。现阶段还无法把我构建的flutter快速开发框架开源出来。暂时用简化demo来展示。...

2022-07-01 11:07:40 525 1

原创 flutter简单优秀的开源dialog使用free_dialog

今天我来介绍一款简单,易用的dialog,该dialog比较简洁,可以适应很多app(主要没有其他动画及以外的图片等,黑白风格可以适配多种样式的app)。如果你的app急需一款不错的dialog,并且你懒得开发,那么用这款就对了。......

2022-06-10 16:57:09 682

原创 跟我学企业级flutter项目:如何重新定制cached_network_image的缓存管理与Dio网络请求

flutter中需要展示网络图片时候,不建议使用flutter原本Image.network(),建议最好还是采用cached_network_image这个三方库。那么我今天就按照它来展开说明,我再做企业级项目时如何重新定制cached_network_image。由于我的项目网络请求采用Dio库,所以我希望我的图片库也采用Dio来网络请求,也是为了方便请求日志打印(在做APM监控时候可以看到网络请求状态,方便定位问题)。准备好mime_converter类,由于cached_network_image中

2022-06-01 11:09:45 969

原创 跟我学企业级flutter项目:如何将你的项目简单并且快速屏幕自适应

你的flutter在小屏幕手机上出现文字丢失了么?你的flutter应用在小屏幕手机上排版出错了么?你的flutter应用在大屏幕手机上布局错乱了么?你在用flutter_screenutil做屏幕自适应么?今天我来给大家介绍一款简单不侵入代码的自适应。如果你有如下需求:1. 旧的flutter想快速屏幕适应各种手机2. 页面代码中不想增加关于适配屏幕的代码

2022-05-16 16:20:52 431 2

转载 深入浅出 Flutter Framework 之 PipelineOwner

OverviewPipelineOwner在 Rendering Pipeline 中起到重要作用:随着 UI 的变化而不断收集『 Dirty Render Objects 』 随之驱动 Rendering Pipeline 刷新 UI简单讲,PipelineOwner是『RenderObject Tree』与『RendererBinding』间的桥梁,在两者间起到沟通协调的作用。关系如上图:RendererBinding创建并持有PipelineOwner实例,Code1-第8

2022-05-10 16:07:11 256

转载 深入浅出 Flutter Framework 之 PaintingContext

Overview『 Widget 』—『 Element 』—『 RenderObject 』可称之为 Flutter Framework『三剑客』,其中 Widget、Element 都已介绍过,而 RenderObject 在这三者中属于最核心、最复杂的,涉及 Layout、Paint 等核心流程。 为了更好、更流畅地去理解 RenderObject,在正式介绍之前,需要做些准备工作,本文介绍的 PaintingContext 在 RenderObject 的绘制流程上扮演了重要角色。『Pain

2022-05-10 14:44:48 342

转载 深入浅出 Flutter Framework 之 Layer

Overview前面的文章中我们介绍过在 Flutter build、layout、render 过程中会生成 3 棵树:Element Tree RenderObject Tree Layer Tree可以说 Layer Tree 是 Flutter Framework 最终的输出产物,之后的流程就进入到 Flutter Engine 了。如上图:在build过程中,由 Element Tree 生成 RenderObject Tree (在 深入浅出 Flutter Frame

2022-05-10 14:32:46 427

转载 深入浅出 Flutter Framework 之 BuildOwner

OverviewBuildOwner在 Element 状态管理上起到重要作用:在 UI 更新过程中跟踪、管理需要 rebuild 的 Element (「dirty elements」); 在有「dirty elements」时,及时通知引擎,以便在下一帧安排上对「dirty elements」的 rebuild,从而去刷新 UI; 管理处于 "inactive" 状态的 Element。这是我们遇到的第一个 Owner,后面还有PipeOwner。整棵「Element Tree」共

2022-05-10 14:23:49 234

原创 跟我学flutter:细细品Widget(五)Element

Widget是描述一个UI元素的配置数据,Element才真正代表屏幕显示元素

2022-05-09 16:35:43 276

原创 跟我学flutter:细细品Widget(四)Widget 渲染过程 与 RenderObjectWidget

前言StatelessWidget 和 StatefulWidget 只是用来组装控件的容器,并不负责组件最后的布局和绘制。在 Flutter 中,布局和绘制工作实际上是在 Widget 的另一个子类 RenderObjectWidget 内完成的。RenderObjectWidget为RenderObjectElement提供配置信息。RenderObjectElement包装了RenderObject,RenderObject为应用程序提供真正的渲染。源码abstract class Rend

2022-05-05 15:48:29 1244

原创 跟我学flutter:细细品Widget(三)ProxyWidget,InheritedWidget

前言ProxyWidget作为抽象基类本身没有任何功能,但他有两个实现类ParentDataWidget & InheritedElement源码abstract class ProxyWidget extends Widget { const ProxyWidget({ Key? key, required this.child }) : super(key: key); final Widget child;}ParentDataWidgetParentData

2022-04-27 17:57:08 486

原创 跟我学企业级flutter项目:flutter模块化,单工程架构模式构思与实践

在原生Android开发的时候,我们经常会用到ARouter,来设计我们项目的整体架构。因为ARouter会帮助我们实现模块化的思想,那么在Flutter中如何去构建模块化的架构呢?再深入一点,如何去运行一个单一模块,不去跑整体项目呢?本篇文章将会带你学习Flutter版本下的单工程架构模式。

2022-04-26 17:06:10 2743 7

原创 跟我学flutter:细细品Widget(二)StatelessWidget&StatefulWidget

StatelessWidget和StatefulWidget是Flutter开发必不可少的。两者的区别在于state。有状态的widget需要继承StatefulWidget无状态的需要继承StatelessWidget。

2022-04-25 17:42:20 868

原创 跟我学flutter:细细品Widget(一)Widget&Element初识

前言Everything’s a widget!WidgetFlutter 中 Widget是一个“描述一个UI元素的配置信息”,Widget就是接受元素,而不是真是绘制的显示元素。类比原生的Android开发,Widget更像是负责UI配置的xml文件,而非负责绘制组件的View。 当一个Widget状态发生变化时,Widget就会重新调用build()函数来返回控件的描述,过程中Flutter框架会与之前的Widget进行比较,确保实现渲染树中最小的变动来保证性能和稳定性。换句话说,当Widge

2022-04-22 16:49:01 1548

原创 跟我学flutter:Flutter雷达图表(一)如何使用kg_charts

本节主要讲如何使用kg_charts中的雷达图表,来绘制一个雷达图,下一章节则会对如何绘制一个可点击雷达图表进行详细说明。最近我在开发有关雷达图表的的业务,但的确在线上找不到可以快速集成的雷达图表,找到一篇文章(Flutter雷达图package)但不是很好定制化我们的业务,但其中的代码有比较好的借鉴。然后我借鉴了部分代码,进行了kg_charts的开发。

2022-04-21 11:03:50 1504

原创 跟我学flutter:在国内如何发布自己的Plugin 或者 Package

前言平时在做flutter Plugin或者 Package的时候,如果觉得自己做的还不错,想要分享到PUB库上如何操作?虽然官方已经告诉我们如何操作,但是呢由于一些特殊的原因,采用官方的方式并不能上传到PUB库上,今天就跟着我学习一下如何上传pub库吧。准备开始开始前需要你已经有一个已经开发好的库来进行提交了。比如我的这个如图红色箭头表示的是必须要存在的两个文件,如果没有的话,需要添加你的开源协议。编写你的README文档。开源协议和README我就不做介绍了,咱们来看看yaml文件需要什么

2022-04-20 15:44:25 2160

原创 跟我学flutter:我们来举个例子通俗易懂讲解异步(二)ioslate循环机制

前言我们在开发flutter应用的时候编写代码,要么是同步代码,要么是异步代码。那么什么是同步什么是异步呢?同步代码就是正常编写的代码块异步代码就是Future,async等关键字修饰的代码块一、时机不同他们区别于运行时机不同,同步代码先执行,异步代码后执行,即使你的同步代码写在最后,那也是你的同步代码执行,之后运行你的异步代码。二、机制不同异步代码运行在 event loop中,类似于Android里的Looper机制,是一个死循环,event loop不断的从事件队列里取事件然后运行。

2022-03-31 15:00:27 2097

原创 跟我学flutter:我们来举个例子通俗易懂讲解异步(一)ioslate

前言Dart是单线程的,Dart提供了Isolate,isolate提供了多线程的能力。但作为多线程能力的,却内存不能共享。但同样的内存不能共享,那么就不存在锁竞争问题。举个例子来展示作用如果一段代码执行事件很长,flutter如何开发。基本页面代码(一段代码)ElevatedButton( child: Text("登录"), onPressed: () { 执行运行代码(); }

2022-03-29 21:28:50 2107

原创 跟我学flutter:我们来举个例子通俗易懂讲解dart 中的 mixin

与java&kotlin不同的是,dart中有一个特殊的关键字mixin(mix-in),用这个关键字的类被其他类(包含)的时候,其他类就拥有了该类的方法。这样代码不通过继承(extend)就可以重用。

2022-03-24 16:20:24 2563

原创 跟我学企业级flutter项目:手把手教你制作一款低耦合空页面widget

前言如何开发一款易用的,并且可以扩展的空页面呢?那么今天我将带领大家手把手开发一款可扩展的空页面。开发前注意事项1、定义好空页面状态2、可扩展思想(用抽象或基类替代实体)3、抽离出空页面的结构空页面展示开始搭建一、页面分析空页面需要元素有:展示图片展示文案展示刷新按钮页面功能点:文案可自定义图片可自定义按钮可隐藏wiget作用范围:可包裹其他widget不包裹其他widget二、定义状态2.1 几种状态enum EmptyStatus { fai

2022-03-21 17:25:39 1520 1

原创 跟我学企业级flutter项目:如何封装一套易用,可扩展的Hybrid混合开发webview

Flutter作为基础的应用,如果要在flutter 中嵌入webview 去做Hybrid混合开发,咱们就必须要封装一套易用的webview,但网上关于flutter webview的文章极其的少。但的确也有做封装的文章,但是封装手法不够优雅,封装效果不够扩展。于是我打算把我的封装与大家分享,看我如何做到高扩展,高易用性。

2022-03-16 20:01:07 2692

原创 跟我学企业级flutter项目:如何用dio封装一套企业级可扩展高效的网络层

前言网上有很多,比如说“Flutter Dio 亲妈级别封装教程”这篇文章,该文章上有几点问题:重试机制代码错误token存取耦合很高网络请求只能针对单一地址进行访问网络请求缓存机制也不是很完美。一旦依照这样的封装去做,那么项目后期的扩展性和易用性会有一定的阻碍,那么如何做到token存取无耦合,而且还能让app多种网络地址一同请求,还可以做到针对不同请求不同超时时长处理,网络缓存还加入可自动清理的lru算法呢?那么今天这篇文章为你揭晓企业级flutter dio网络层封装。搭建前夕准备

2022-02-28 16:20:23 4103 9

原创 庖丁解牛:Android stuido中 git 操作详解

前言在开发flutter或android项目,选择用Android stuido是比较方便的,在git的可视化使用上,Android studio已经非常方便了,但是还是有很多的小伙伴,依旧用其他工具来管理git。那么今天我就来详细的介绍一下 Android stuido的git使用与操作。一、基本认知工作区项目目录下的文件可以称之为工作区暂存区添加文件git的基本使用是add到暂缓区,commit到本地仓库,push到远程仓库。...

2022-02-23 17:00:38 2743

原创 Flutter线上监控说明

概要移动端Apm系统作用:1、我们可以快速定位到线上App的实际使用情况,了解到App的奔溃、异常数据,从而针对潜在的风险问题进行预警,并进行相应的处理。2、了解App的真实使用信息,提高用户使用黏性。一、移动端常用apm指标1、崩溃率崩溃分析,是将 Android 和 iOS 平台常见的 APP 崩溃问题进行归类分析,帮助企业根据崩溃指标快速发现、定位问题。\2、UI卡顿拿Android来说:大多数用户感知到的卡顿等性能问题的最主要根源都是因为渲染性能。Android系统每隔大概16.6

2022-01-27 11:57:39 2313

原创 跟我学企业级flutter项目:dio网络框架增加公共请求参数&header

前言在开发过程中,我们经常会用到网络请求,在flutter框架中,dio框架非常不错,所以今天的文章在dio的基础上搭建一套网络持久化框架,那么在flutter项目中如何搭建一套,高可用性,维护性较高的dio公共请求参数框架呢?搭建前夕准备一、基本认知要持久化那么必然要有存储设备持久化的数据在app启动后要即使填充到项目中由于项目中网络请求地址繁多,类型不同,需要持久化的位置不同二、基于基本认知来找合适的工具&必要点2.1 持久化的工具:我的推荐mmkvshare_pre

2022-01-26 14:08:25 3197 2

原创 跟我学企业级flutter项目:用bloc手把手教你搭建用户认证系统

前言在以flutter为底的app项目中,用户登录,退出等认证必须做在flutter项目里,那么采用何种状态管理,来全局管理用户认证呢?今天我就借助flutter_bloc这个库来搭建一套可以复用的成熟用户认证系统搭建前夕准备一、我们需要了解现有app有多少认证事件,那么常规来说,流程如下:1、启动app,判断有无token,有token则跳转首页获取数据,无token则跳转需要授权页面如登录页2、登录页登录,登陆后保存token,跳转首页3、退出登录,删除token跳转需要授权页那么总结起

2021-12-16 10:53:29 3844 16

原创 其他都是错的,只有这一篇正确解决:Flutter Textfield长按报错修复:NosuchMethodError: The getter ‘pasterButtonLabel‘ was ca

正确解决:Flutter Textfield长按报错修复:NosuchMethodError: The getter ‘pasterButtonLabel’ was ca ?????????为什么叫正确解决??关于这个问题,我在百度上看过很多人的答案,基本无一例外都是,说:“Cupertino缺少了对应的非英文版本的支持”。大家真的看过源码吗?真的是缺少Cupertino么?我是真不相信的,flutter出了这么多年,连个中文都不支持?然后我就查阅了源码:我发现了这个类 GlobalCupertin

2021-12-10 14:17:52 1948

原创 flutter 线上apm监控 远程日志 emas_tlog

emas_tlogali emas tlog阿里巴巴flutter版本 远程日志 TLog介绍远程日志服务提供远程手机日志拉取功能,解决移动App线上异常排查困难的问题。远程日志服务支持Android/iOS应用类型。产品架构1.移动App集成SDK。2.远程日志服务通过心跳探测识别已安装App的移动终端,并进行日志拉取配置。3.远程日志服务拉取指定移动终端App的用户日志,并对拉取任务进行管理。4.远程日志服务查看已从终端设备拉取至控制台的用户日志。官网地址:官网地址本项目是根据

2021-11-25 15:31:07 2135

原创 flutter 优秀dio网络拦截可视化

flutter_interceptorflutter dio 拦截器开始集成dependencies: flutter_interceptor: ^0.0.1dio添加拦截器_dio.interceptors.add(UiNetInterceptor())页面插入浮动窗体Overlay.of(context)?.insert(InterceptorDraggable());功能介绍:1、请求可视化2、可以复制请求内容集成后的效果如图...

2021-11-02 16:33:32 1571 9

原创 flutter 优秀日志库 ulog

ulogulog的想法和代码风格,设计方式与 Android logger库几乎无差别,差别在于ulog第一个版本不支持文件打印,但支持动态json库配置库源码:https://github.com/smartbackme/ulogv0.0.1只有基础的console打印,后面将会增加文件打印开始使用添加库dependencies:flutter_ulog: ^0.0.1//Initialization//构建基础adapter isLoggable可以通过不同type来拦截打印,或者关闭

2021-09-18 15:37:50 837

原创 LeetCode第一讲:哈希表相关讲解

哈希表简单说明哈希表的建立需要有哈希地址,那么哈希地址地址的生成需要一个哈希函数,什么是哈希函数呢?哈希函数就是一个精心设计好的函数,该函数可以计算出存储的数据要放在什么位置,举个例子说明:例:有4条电话数据:王二蛋 12345678985李狗蛋 11554456555赵二狗 18816848615李桂花 15899484538如果我想查找王二蛋的电话,我需要拿出这个列表,一个一个找。但我想要通过名字快速查找王二蛋如何做呢?答:我构建一个哈希表,来快速查找。那么通过名字来存的话,我需要构建

2021-09-13 15:35:09 298

转载 算法与数据结构之二叉树

前言树是使用了递归定义的数据结构,树的子树还是树,其结构如下图所示:度:结点拥有的子树数目,例如上图结点A的度为3,结点E的度为0叶子或终端结点:度为0的结点(没有子树的结点)树的度:各个结点中度的最大值孩子:结点的子树的根,称为根的孩子层次:根的层次为0,根的孩子为1,以此类推深度:树中结点的最大层次,称为树的深度定义二叉树是一种每个结点至多只有两个子树(即二叉树的每个结点的度不大于2),并且二叉树的子树有左右之分,其次序不能任意颠倒。性质在二叉树的第i层,至多有2^(i-1

2021-06-25 16:13:15 223

原创 java设计模式:备忘录模式

前言备忘录模式能记录一个对象的内部状态,当用户后悔时能撤销当前操作,使数据恢复到它原先的状态。定义在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。该模式又叫快照模式。优点提供了一种可以恢复状态的机制。当用户需要时能够比较方便地将数据恢复到某个历史的状态。实现了内部状态的封装。除了创建它的发起人之外,其他对象都不能够访问这些状态信息。简化了发起人类。发起人不需要管理和保存其内部状态的各个备份,所有状态信息都保存在备忘录

2021-06-09 15:37:54 214

原创 java设计模式:访问者模式

前言访问者模式是一种将数据操作和数据结构分离的设计模式。定义将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式。它将对数据的操作与数据结构进行分离,是行为类模式中最复杂的一种模式。优点扩展性好。能够在不修改对象结构中的元素的情况下,为对象结构中的元素添加新的功能。复用性好。可以通过访问者来定义整个对象结构通用的功能,从而提高系统的复用程度。灵活性好。访问者模式将数据结构与作用于结构上

2021-06-09 14:55:10 228

转载 基于FakerAndroid的一次il2cpp游戏逆向精修实录!!!零汇编零二进制纯编码实现

~~~格式优化整理~~~1、下载FakerAndroid工具包下载地址:https://github.com/Efaker/FakerAndroid/releases2、cmd切换到FakerAndroid.jar平级目录[工具包和要操作的Apk][工具包目录]3、执行 java -jar FakerAndroid.jar fk <apkpath>生成AndroidStudio工程[执行命令][等待命令执行完成]4、查看Apk平级目录下面生成的AndroidStudio工程[查看原安

2021-06-09 11:42:18 2427 6

转载 Android 逆向新方式:FakerAndroid

FakerAndroidA tool translate apk file to common android project and support so hook and include il2cpp c++ scaffolding when apk is a il2cpp game apk简介优雅地在一个Apk上写代码直接将Apk文件转换为可以进行二次开发的Android项目的工具,支持so hook,对于il2cpp的游戏apk直接生成il2cpp c++脚手架将痛苦的逆向环境,转化为舒

2021-06-09 11:36:38 4869 1

原创 独乐乐不如众乐乐,你的项目还在纠结用日志打印log么?Android开发okhttp3便捷拦截监听

SimpleInterceptorSimpleInterceptor 是Android OkHttp客户端的的拦截接口工具,为的是方便测试或开发,快速查找问题。环境要求Android 4.1+OkHttp 3.x or 4.xandroidxgit地址github地址 :https://github.com/smartbackme/SimpleInterceptor国内访问地址: https://gitee.com/dileber/SimpleInterceptor如果觉得不错 g

2021-05-20 15:39:29 275

原创 Java设计模式:迭代器模式

前言在现实生活以及程序设计中,经常要访问一个聚合对象中的各个元素,如“数据结构”中的链表遍历,通常的做法是将链表的创建和遍历都放在同一个类中,但这种方式不利于程序的扩展,如果要更换遍历方法就必须修改程序源代码,这违背了 “开闭原则”。既然将遍历方法封装在聚合类中不可取,那么聚合类中不提供遍历方法,将遍历方法由用户自己实现是否可行呢?答案是同样不可取,因为这种方式会存在两个缺点:暴露了聚合类的内部表示,使其数据不安全;增加了客户的负担。“迭代器模式”能较好地克服以上缺点,它在客户访问类与聚合类之

2021-05-13 14:51:23 245

原创 java设计模式:中介者模式

前言在现实生活中,常常会出现好多对象之间存在复杂的交互关系,这种交互关系常常是“网状结构”,它要求每个对象都必须知道它需要交互的对象。例如,每个人必须记住他(她)所有朋友的电话;而且,朋友中如果有人的电话修改了,他(她)必须让其他所有的朋友一起修改,这叫作“牵一发而动全身”,非常复杂。如果把这种“网状结构”改为“星形结构”的话,将大大降低它们之间的“耦合性”,这时只要找一个“中介者”就可以了。如前面所说的“每个人必须记住所有朋友电话”的问题,只要在网上建立一个每个朋友都可以访问的“通信录”就解决了。这样

2021-05-13 11:46:58 258

tomcat实现session共享

如何实现服务器集群session共享,redis用来tomcat共享。

2019-04-05

android通过用户打包,分享apk可以知道某个用户分享的

android通过用户打包,分享apk可以知道某个用户分享的,目前很多公司通过发送一个分享链接来分享软件,分享链接里包含某个分享用户的信息,只要新用户在html中注册这个自己的信息就可以,给分享用户一个福利,如果用我开发的这个jar包,则直接在apk里就能获取谁分享的。减少html页面制作。 文章地址http://blog.csdn.net/s297165331/article/details/78424010

2017-11-02

Mysql数据库文档生成工具

给大家介绍一款数据库文档生成工具 目前只支持mysql 主要是生成docx的 客户有些时候需要数据库文档,为了方便,于是我就写了这个工具, 通过数据库读取相关表数据,达到输出所有注释到文档中,大大提高了工作效率

2016-02-16

去除PPS广告

一键去除PPS广告,方便快捷,简单实用,方便宅男,宅女的居家看电影。

2013-01-30

空空如也

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

TA关注的人

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