- 博客(1753)
- 资源 (224)
- 问答 (1)
- 收藏
- 关注
转载 Flutter状态管理终极方案GetX第二篇——状态管理
一个应用的状态就是当这个应用运行时存在于内存中的所有内容。当然许多状态,例如纹理、动画状态等,框架本身会替开发者管理,所以对于状态更合适的定义是**“当你需要重建用户界面时所需要的数据”**,我们需要自己管理的状态可以分为两种概念类型:短时 (ephemeral) 状态和应用 (app) 状态。短时状态短时状态是可以完全包含在一个独立 widget 中的状态,也成为局部状态。应用状态如果在应用中的多个部分之间共享一个非短时的状态,并且在用户会话期间保留这个状态,我们称之为应用状态(有时也称共享状态)
2022-11-14 11:15:11 3599
转载 Flutter状态管理终极方案GetX第一篇——路由
GetX是 Flutter 上的一个轻量且强大的解决方案:高性能的状态管理、智能的依赖注入和便捷的路由管理。为什么是 GetX,而不是 BLoC、MobX、Provider?BLoC 非常安全和高效,但是对于初学者来说非常复杂,即使学会,样板代码也很多。MobX 比 BLoC 更容易,而且是响应式的,但是需要使用一个代码生成器,需要等很久,这降低了生产力。轻量。模块单独编译,没用到的功能不会编译进我们的代码。语法简洁。个人非常喜欢,显而易见且实用,比如路由摆脱了 context 的依赖,
2022-11-13 23:51:17 2877
原创 android studio找不到aar问题解决
3.在 该module下的build.gradle 添加 dependencies。2.在该module下的build.1.将aar文件复制在lib目录下。重新build就可以解决问题了。
2022-11-09 15:47:08 4345
原创 Flutter 自定义实现时间轴、侧边进度条
左边是圆和线,右边是内容,然而我太天真了,左边的 线 高度没法跟随右边的高度,即右边有多高,左边就有多高。然后我看到了 Flutter 的 Stepper ,虽然不符合需求,但是人家左边的线是 Item 和 Item 相连的,我就看了下他的源码,豁然开朗,人家的布局是个 Colum。这个或许根本不叫 Stepper 吧,也没有什么步骤,只是当前的配送进度,不需要数字步骤,希望所有内容都能显示出来,原生的则是有数字表示第几步,把当前步骤外的其他的内容都隐藏了。因为线在中间,所以宽度要除以2。
2022-11-07 21:05:32 1756
转载 Flutter 按需rebuild-ValueListenableBuilder
关于 ValueListenableBuilder 有两点需要牢记:和数据流向无关,可以实现任意流向的数据共享。实践中,ValueListenableBuilder 的拆分粒度应该尽可能细,可以提高性能。作者:maskerII链接:https://www.jianshu.com/p/6e86b8ace771来源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
2022-11-07 20:18:30 1016
转载 Flutter 自定义渐变按钮 GradientButton
1. 实现GradientButton背景支持渐变色手指按下时有涟漪效果可以支持圆角DecoratedBox可以支持背景色渐变和圆角,InkWell在手指按下有涟漪效果,所以我们可以通过组合DecoratedBox和InkWell来实现GradientButtonKey?key,colors;// 渐变色数组width;// 按钮 宽height;// 按钮 高// 按钮 圆角// 禁用// 子组件@override//确保colors数组不空} else {
2022-11-06 00:04:59 1666
转载 Flutter 之 自定义路由切换动画
无论是MaterialPageRoute、CupertinoPageRoute,还是PageRouteBuilder,它们都继承自PageRoute类,而PageRouteBuilder其实只是PageRoute的一个包装,我们可以直接继承PageRoute类来实现自定义路由。@override@override@override@override@override}@override}}使用MSFadeRoute},),);完整代码@override),
2022-11-05 23:36:56 1474
转载 Flutter中 MediaQuery 和 build 优化你不知道的秘密
所以,如下动图所示,其实部分人会在 push 对应路由地方,通过嵌套 MediaQuery 来做一些拦截处理,比如设置文本不可缩放,但是其实这样会导致键盘在弹出和收起时,触发各个页面不停 rebuild ,比如在 Page 2 弹出键盘的过程,Page 1 也在不停 rebuild。试想一下,如果你在每个页面开始的位置都是用了 MediaQuery.of(context) ,然后打开了 5 个页面,这时候你在第 5 个页面弹出键盘时,也触发了前面 4 个页面 rebuild,自然而然可能就会出现卡顿。
2022-11-04 19:38:05 1332
转载 详解Flutter中各种Binding
Flutter中所有的运转都是在各种Binding中调度的,也正是这些绑定器的存在彻底解耦了Widget 、 Element 、RenderObject 对 Platform端的依赖,阅读此文需要有一定的Flutter基础,如:Flutter的绘制流程、Flutter与Platform通信原理、Flutter 三棵树各自的职责。通过以上分析可以得知Flutter中各Binding组件之间的协同工作构建出Flutter UI交互系统,它们之间又相对独立的只负责一类职责这样很好的解耦了业务之间的耦合度。
2022-11-04 19:04:55 2544
原创 java.io.FileNotFoundException: ...my_flutter/.android/include_flutter.groovy
有了上面图文并茂的讲解加上一个实际的 Sample,相信不管 flutter module 放在哪里你到可以关联到了。上下图,然后大家考虑一下答案,再往下翻,相信聪明的你一定知道,改法有多种,下面提供一下几种方案。从上图可以看到,settings.gradle与flutter_module处在根目录同一级下。从报错可以看出,编译器没有找到正确的include_flutter.groovy所在的路径。无论是新建项目,还是老项目允许出现这个问题,先想办法让编译器找到这个文件。这样的问题,提示文件找不到。
2022-11-01 23:04:32 2015
转载 Android开发 ConstraintLayout布局的详解
这里的定位属性指的是 layout_constraintTop_toTopOf 、layout_constraintTop_toBottomOf 、 layout_constraintStart_toEndOf 等等此类属性。为了方便后续理解,这里说明下此类定位属性的意思。此类定位属性在文本上想表达的是 当前View 在 定位View 什么位置上。这里举几个例子,例如:layout_constraintTop_toBottomOf 这个属性的意思是 当前View的上边(Top)在 目标Vi
2022-10-28 15:29:19 3359
转载 gradle 下载慢的问题解决
下载完了以后,将这个zip 拷到 /Users/用户/.gradle/wrapper/dists/一长串自动生成的目录下/。在这个位置,/Users/用户/.gradle/wrapper/dists下面会有创建的临时目录,然后下载在这里面。打开一个存在的项目,然后就开始下载gradle,比如说6.5-all版本。这个一长串的目录名是android studio自动创建的,是不能改的。以上是mac下的操作,其它的系统应该也是一样,只是位置不一样。不行,就多try几次,一般都要折腾几次才行。
2022-10-24 15:53:57 2750
转载 Flutter混合开发:Android中如何启动Flutter
flutter可以独立完成项目,但是在现有项目情况下最好的方式就是混合开发,逐步过渡。这样就会共存native和flutter代码,而其中最关键的就是native如何启动flutter页面,及flutter与native如何交互。本文以Android为例,展示如何在一个现有项目中引入flutter、启动flutter,如何加速启动以及如何传参。
2022-10-20 15:41:01 1936 2
原创 Adobe photshop 安装过程中的问题
1. 安装完成后,不知道怎么自由使用,请参考下面网址:Latest Version – Adobe Zii
2022-10-18 20:14:11 255
转载 Flutter状态管理:RxDart
BLoC《Flutter状态管理:BLoC(Business Logic Component)》编程概念《编程方式:命令式 vs 函数式》
2022-10-06 00:54:07 1585
转载 Flutter 状态管理
大概意思是说,Home组件的 BuildContext 不包含 Provider,产生这个错误的原因是使用的 BuildContext 是当前正在读取数据的 provider 的祖先元素,当你创建好一个 provider 以后立即读取其数据就会报这个错。如图,组件D和组件G共享的数据是通过组件A取数据以后逐级向下透传的,也就是说数据需要逐级传递,比较麻烦,而且不是所有组件都需要相关数据。User('黑寡妇', 36, '女', '把你的洗澡水给杜兰特喝一点吧'),
2022-10-05 13:21:52 1916
转载 Android Studio使用Composing builds统一依赖管理
摘自 Gradle 文档:复合构建只是包含其他构建的构建.在许多方面,复合构建类似于 Gradle 多项目构建,不同之处在于,它包括完整的 builds ,而不是包含单个 projects。
2022-09-25 12:41:14 3001
转载 Flutter StatefulWidget传递数据,多级控件传递数据
这个VoidCallback是通过查看onPress类型得到的。答案也是构造方法 直接传递VoidCallback进来。父类传递给子类可以通过构造方法。多级别当然就是多个构造。
2022-09-20 10:23:23 725
转载 Flutter 自定义ICON库
Flutter自带了Material的图标,但还是不太满足我们国内的需求,比如微信、微博、QQ这些国内常用的图标就没有收录,或者为了让APP更有个性,我们希望换掉Material的风格,这个时候,自定义图标就成了一个不大不小的问题,Flutter对于引用自定义的解决思路其实不太复杂,按照以下步骤做就可以了。
2022-09-13 16:59:55 2139 1
转载 Flutter中的OverflowBox、SizedOverflowBox
允许子控件超出父控件的边界。这个特性主要可以用来实现文字或者按钮角标的。通过将自身的固定尺寸,传递给child,来达到控制child尺寸的目的;undefined可以突破父节点尺寸的限制,超出部分也可以被渲染显示,与类似。允许子控件超出父控件的边界。这个特性主要可以用来实现文字或者按钮角标的。也允许子控件超出父控件的边界,但是它与不同的在于还可以对子组件进行尺寸部分的限制。Flutter 源码分析作者:Jimi。
2022-09-13 11:14:49 677
转载 Flutter中的无名英雄—— Focus
这里大致介绍一些Focus相关Widget及功能类,便于后面理解Focus Tree部分。本篇源码基于1.20.0-2.0.pre。
2022-09-13 11:05:07 1793
转载 flutter 单线程异步 及 isolate 使用过程遇到的问题
函数内有阻塞流程(await future)的操作, 则函数会返回一个 future 实例(1) 如果该函数本身有返回值, 比如类型为T, 则返回类型为Future(2) 如果该函数本身没有返回值, 则返回类型为 Future比如下面的 funcTest 函数会返回 Future
2022-09-13 00:14:46 780
转载 Flutter 小技巧之 ListView 和 PageView 的各种花式嵌套
最后总结一下,本篇介绍了如何通过Darg解决各种因为嵌套而导致的手势冲突,相信大家也知道了如何利用Controller和Darg来快速自定义一些滑动需求,例如ListView联动ListView///listView 联动 listView@override}Drag?Drag?_subDrag;@override}@override}}///除以10实现差量效果_subDrag??}.cancel();
2022-09-12 00:18:54 1176
转载 Flutter Text 行高相关
Text是Flutter最常见的Widget之一。我们可以用它放置文本,或者在默认组件不满足要求的情况下,可以结合其他组件来组成如按钮这些的自定组件。虽然用法很简单,但不注意的情况下依旧会出现很多奇奇怪怪的问题。下面就总结下行高部分遇到的问题和解决方案。设置height即在设置文本的支柱高度,这个高度是文本高度和文本上下的空间(leading)之和。在不设置的情况下,会自动均匀分配leading。所以要根据设计图的情况,分析是否需要设置height,单行文本居中的话,一般都不需要设置,除非需要根据。
2022-09-12 00:02:22 2895
转载 Flutter中是引用传递还是值传递
这是一个很基础的问题,如果你已经理解透彻了,其实可以不需要往下看(如果理解没错的话),因为相信你已经知道了答案,本篇主要是解释给和我一样一直以来有这样误解的人,事实上这是一个简单的问题,这种情况下,如果他对这把钥匙做了什么事情,比如他在钥匙上刻下了自己名字,那么这把钥匙还给你的时候,你自己的钥匙上也会多出他刻的名字。的角度代入这个故事,你的朋友拿着你给他的钥匙,进到你的家里,把你家的电视砸了,你再用你的钥匙开门进去,看到的也是被砸了的家,这就是。你有一把钥匙,当你的朋友想要去你家的时候,如果你。
2022-09-11 01:23:58 1826 1
转载 Flutter ListView中的TextField上下滑动内容丢失
造成此问题的原因,经过log验证,应该是TextField作为一个Widget,被滑出屏幕,又滑回来,没有焦点的Widget的initState和build方法会被重新执行,也就是Widget会被重建,重建时原有的状态不会自动恢复,里面的文字自然就消失了。当输入内容后将ListVIew上滚动,三个TextField滚动滑出界面后,再把ListView滚动回顶部,只有焦点所在的TextField里的内容不会被清除,其他两个TextField的内容不见了,如下所示。
2022-09-10 02:04:32 943
转载 Flutter PageView 自由控制状态保持
3.触发修改_wantKeepAlive的方法,并调用updateKeepAlive(重点,必须调用,否则无效)第一次切换购物车页面后,不在触发build,点击首页的按钮后,在进入购物车页面,会又触发build。正常使用购物车,需要保持页面状态,但在新的商品加入购物车后,需要重新获取购物车列表。每次点击切换页面,都会触发build方法,无法达到保存状态的要求。购物车页只会build一次,后续切换不会再执行build。点击按钮后,购物车页的build重新打印。方法有很多,推荐使用事件总线。
2022-09-10 01:37:26 1354 1
转载 Flutter 状态管理 实践记录
Flutter里面最重要的应该就是:状态管理 刚开始做的一个问题,StatefulWidget的状态应该被谁管理?比如: 在开发相册的时候,实现了分页加载列表 的widget,当下滑列表位置 > 0.7* 列表总长度时候,加载下一页。但是这个例子比较特殊,如果按上面的原则来实现会变的复杂。因此,如果是Checkbox,那么 选中状态应该是让外部来管理,如果是颜色,样式等应该是让 widget本身管理。特别要注意的时候,混合管理的时候,要记得在: didUpdateWidget,里面重新设置数据;
2022-09-10 01:24:20 268
转载 Flutter PageView/TabBarView等控件保存状态的问题解决方案
PageView + BottomNavigationBar 或者 TabBarView + TabBar 的时候大家会发现当切换到另一页面的时候, 前一个页面就会被销毁, 再返回前一页时, 页面会被重建, 随之数据会重新加载, 控件会重新渲染 带来了极不好的用户体验, 跟原生的Pager 显示的效果不太一样。通过 PageStorage 这种方式重新进入页面,页面其实是重新开始build,但是会根据 didChangeDependencies 里面的数据来初始化。4.3 读取state。
2022-09-10 01:16:47 3279
转载 Flutter 流式布局、自动换行(Wrap、Flow)
使用Android原生来实现流式布局还是有点麻烦的,甚至需要自定义view或者使用第三方的库。而在Flutter中,官方为我们提供了流式布局的控件,我们可以很方便的实现流式布局。FlowDelegate是一个抽象类,我们一般会重写paintChildren方法,在该方法中,我们可以来控制子控件的摆放。在正常情况下,能用wrap就用wrap,实现其来比较简单,如果是比较个性化的排列规则,可以使用Flow来实现。首先来看Wrap,Wrap是一个可以使子控件自动换行的控件,默认的方向是水平的,使用起来非常简单。
2022-09-06 23:45:57 3797
转载 Flutter LayoutBuilder组件
比如我们实现一个响应式的 Column 组件 ResponsiveColumn,它的功能是当当前可用的宽度小于 200 时,将子组件显示为一列,否则显示为两列。通过 LayoutBuilder,我们可以在布局过程中拿到父组件传递的约束信息,然后我们可以根据约束信息动态的构建不同的布局。可以看到 Text("xx") 的显示空间最大宽度为 428,最大高度为 823。
2022-09-05 00:06:13 3344
转载 Flutter Spacer() 不能使用 SingleChildScrollView 解决方案
使用 bottomNavigationBar 吸住底部 而不是使用Spacer() 隔开.
2022-09-04 23:52:51 914
转载 Flutter中GetX状态管理的终极指南
GetX 不仅是一个状态管理库,而且是一个与路由管理和依赖注入相结合的微框架。它旨在为Flutter提供顶级的开发体验,是一个额外的轻量级但强大的解决方案。GetX有三个基本原则,它是在此基础上建立的。性能:注重内存和资源的最小消耗生产力:直观和高效的工具,结合简单和直接的语法,最终节省开发时间组织性:将业务逻辑与视图和表现逻辑解耦,没有比这更好的了。你不需要上下文在路由之间导航,也不需要有状态的小工具读完整篇文章后,你是否想知道为什么这个库的创建者给它取名为GetX?
2022-09-04 22:57:39 8181 1
转载 Flutter 之 CustomScrollView & Slivers
上例中 PageView 之所以能正常工作,是因为 PageView 的 Scrollable 只处理水平方向的滑动,而 CustomScrollView 是处理垂直方向的,两者并未冲突,所以不会有问题,但是换一个也是垂直方向的 ListView 时则不能正常工作,最终的效果是,在ListView内滑动时只会对ListView 起作用,原因是滑动事件被 ListView 的 Scrollable 优先消费,CustomScrollView 的 Scrollable 便接收不到滑动事件了。...
2022-09-01 00:53:50 2959
转载 Flutter布局——Flex、FittedBox、Stack、Container
Padding部件和容器内的pading属性的效果实际上是一致的,当同时出现,真实的padding将是两者相加。topLeft(左上),topCenter(顶部中央),topRight(右上),centerLeft,center,centerRight,bottomLeft,bottomCenter,bottomRight。这时的容器的宽度会以据边界的距离(left和right)自动调整。Flutter中涉及到布局的Widget有30多种,一样的效果的ui,实现的途径有很多中。dx和dy的取值都是0~1。.
2022-08-31 11:32:47 1420
转载 Flutter Alignment FractionalOffset AlignmentDirectional
AlignmentDirectional 的坐标系和Alignment比较像,原点在中心,不过AlignmentDirectional的起始位置和书写(TextDirection)方向有关。FractionalOffset继承Alignment,他们2个区别就是坐标系不一样,Alignment的原点是中心,而FractionalOffset原点是左上角。比如:Alignment(0,0)代表控件的中心。参数x:-1:最左边 1:最右边 0:中间。参数y:-1:最上边 1:最下边 0:中间。...
2022-08-31 11:17:14 303
原创 flutter GestureDetector 点击空白区域无反应解决办法
当behavior选择opaque时,点击整个区域都会响应点击事件,但是点击事件不可穿透向下传递,注释翻译:阻止视觉上位于其后方的目标接收事件,所以我需要的这种效果直接将behavior设置为HitTestBehavior.opaque就可以了;当behavior选择translucent时,同样是点击整个区域都会响应点击事件,和opaque的区别是点击事件是否可以向下传递,注释翻译:半透明目标既可以在其范围内接受事件,也可以允许视觉上位于其后方的目标接收事件。...
2022-08-29 17:32:23 2961
Android将list数据通过LitePal保存到本地(集合保存到本地)
2016-06-17
AndroidDownLoad-多线程断点续传下载
2016-06-14
DownloadEngine-Android多线程下载断点续传
2016-06-14
android-rsa-http
2016-06-12
RxJava在Android中内存泄漏解决以及RxJava的封装
2016-05-23
Android H5做的商城客户端
2016-04-29
Android通过AsyncTask与ThreadPool(线程池)两种方式异步加载大量数据的分析与对比
2016-03-31
Android Bluetooth蓝牙通信文件传输
2016-03-27
Android蓝牙聊天程序的扩展开发(基于Google Sample,类QQ设计)
2016-03-26
Android蓝牙聊天程序优化版
2016-03-26
Android 通过Socket 和服务器通讯
2016-02-16
android RangeSeekBarView 选定范围值的控件
2016-02-01
Android仿天天动态上拉播放界面控件
2016-01-31
Flutter编程指南-多线程
2022-02-21
java数据结构与算法之美(物超所值)
2022-02-09
flutter_macos_2.8.1-stable.zip
2022-01-05
mac_apktool.zip
2021-03-25
Postman-osx-5.3.2 for Mac
2017-10-31
CoordinatorLayout+AppBarLayout实现上滑隐藏ToolBar
2016-08-19
android自定义进度条渐变色View的实例代码
2016-07-26
Android多行文本折叠展开效果
2016-07-25
Android封装popwindow类(下拉菜单弹出和收缩效果)
2016-07-22
Android自定义spinner下拉框
2016-07-16
Android DigitalClock实现倒计时
2016-07-12
Android 带箭头有光晕效果的ProgressBar
2016-07-04
android webview与 js交互通信
2016-06-20
Android项目webview中做与js交互
2016-06-20
Android客户端提供Socket服务与pc通过USB通信
2016-06-17
Android 使用Socket,ServerSocket编程网络通信
2016-06-17
Android socket即时通信Demo
2016-06-17
自定义view和自定义动画怎么学习比较好呢?
2016-11-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人