
flutter
lin_henry
这个作者很懒,什么都没留下…
展开
-
flutter 中overlay
Overlay 简介overlay官方介绍:Overlay 以浮层的方式管理单独的 item 存储在栈中(后进先出);Overlay 其源码也是采用的 Stack 浮层,将 OverEntry 逐个加入到 Overlay 中进行展示,OverEntry 可以使用 Positioned 或 AnimatedPositioned 在 Overlay 中定义自身的位置;使用//获取实例OverlayState overlayState = Overlay.of(_context);//创建Overl原创 2020-10-10 17:39:25 · 1394 阅读 · 0 评论 -
flutter中 实现类似Android OnResume功能
在Android中 页面从栈里面回到前台显示 有固定的生命周期方法 onReume(),虽然在flutter也有widget生命周期方法,但是功能和onResume()方法相差比较大,并不能监听路由栈回退。但是往往我们需要在页面再次可见的时候在生命周期中做数据的刷新,flutter并没有封装好的生命周期方法给我们使用,很尴尬。利用NavigatorObserver、strean流和mixin撸一个吧直接撸代码吧//工具类class RouteInfo { Route currentRoute;原创 2020-08-07 17:58:46 · 2313 阅读 · 1 评论 -
flutter shared_preferences的第一次获取不到值
在flutter 集成到Android原生项目的时候 集成了shared_preferences: 0.5.8,但是这个控件有问题。在获取原生传递过来的值,并保存在本地。获取的时候 获取不到,如下图但是第二次就获取到了。解决方案,怀疑是flutter存储和native村粗的值冲突,但是看了源码发现存储的时候key加了前缀,所以不是这个问题,解决方案:在次之前再获取一次,也就是写两句第一次获取的代码...原创 2020-08-11 17:43:57 · 1531 阅读 · 0 评论 -
Flutter Wrap
构造direction: 主轴方向,默认是水平方向alignment:主轴方向对其方式,默认是startspacing :主轴方向上的间距runAlignment:run的对齐方式。run可以理解为新的行或者列,如果是水平方向布局的话,run可以理解为新的一行runSpacing:run的间距crossAxisAlignment :交叉轴(crossAxis)方向上的对齐方式textDirection :文本方向verticalDirection:定义了children摆放顺序,默认是d原创 2020-08-04 15:30:56 · 207 阅读 · 0 评论 -
flutter 打包成aar
简介公司app的客服系统是用flutter 来实现的,最开始我是使用flutter module的方式继承到Android 原生项目中的,但是这种方式侵入性比较强,大家都得得配置flutter 环境,所以就去踩了踩 flutter 打成aar的坑,坑一:flutter 版本的坑。可能是flutter 版本的问题,不管是flutter application 还是flutter module我都无法创建aar坑二:com.kezong.fat-aar,flutter module 中依赖的三方库可以依赖原创 2020-08-04 15:29:47 · 2985 阅读 · 1 评论 -
Dart语言中常量final和const关键字
使用过程中从来不会被修改的变量, 可以使用 final 或 const, 而不是 var 或者其他类型, Final 变量的值只能被设置一次; Const 变量在编译时就已经固定 (Const 变量 是隐式 Final 的类型.) 最高级 final 变量或类变量在第一次使用时被初始化。编译时常量,就是它的值在编译时就能确定的常量,不是等到运行时才确定。运行时常量,就是在它的值在程序运行时才能确定。const是编译时常量,final就是运行时常量。区别在哪儿呢?const修饰的常量必须在声明时初始原创 2020-07-21 15:33:24 · 309 阅读 · 0 评论 -
flutter Notification分析
前面提到InheritedWidget,它可以实现数据的冲上往下传递。那么从下往上传递呢?flutter 提供了 Notification 实现向上传递。Notification中文意思是通知,与Android中的广播机制类似,在Flutter中Notification的功能是子节点状态变更,发送通知上报。Notification的数据变更是通过Widgte树向上冒泡的,我们往往在下层Wdiget发送通知然后在上层处理通知。//创建通知类class MyNotification extends No原创 2020-07-21 14:42:49 · 512 阅读 · 0 评论 -
flutter中InheritedWidget
介绍InheritedWidget 组件就是Flutter 中的一个功能组件,它可以实现Flutter 组件之间的数据共享,他的数据传递方向在Widget树传递是从上到下的inheritedWidget 不继承自StatefulWidget,而是 InheritedWidget -> ProxyWidget -> Widget 这样的继承关系。简单来说,InheritedWidget 的作用是向它的子 Widget 有效地传播和分享数据,当 InheritedWidget 作为一个Paren原创 2020-07-21 00:23:59 · 293 阅读 · 0 评论 -
flutter 键盘弹出和收起页面bug
场景我在客服系统中定义个列表widget和底层输入widget,但是在软键盘的弹出收起的时候,发现列表widget 并没有被重新绘制,这导致列表中的部分信息被遮挡,1、Scaffold首先想到的 Scaffold 的 resizeToAvoidBottomInset 属性。在 Flutter 中 Scaffold 默认情况下 resizeToAvoidBottomInset 为 true,当 resizeToAvoidBottomInset 为 true 时,Scaffold 内部会将 media原创 2020-07-20 18:55:15 · 3647 阅读 · 0 评论 -
flutter 中Route
什么是RouterAndroid中,页面对应的是Activity,在iOS中是ViewController。而在Flutter中,页面只是一个widget,是Router。Route 在Android 中通常指一个 Activity ,在 iOS 中指一个 ViewControllerMaterialPageRoute官方解释MaterialPageRoute继承自PageRoute类,PageRoute类是一个抽象类,表示占有整个屏幕空间的一个模态路由页面,它还定义了路由构建及切换时过渡动画的相关原创 2020-07-20 14:01:30 · 789 阅读 · 0 评论 -
FloatingActionButton禁止动画效果
源码FloatingActionButton是在Scaffold中的widget,里面还定义了位置和动画FloatingActionButtonAnimator如果是null的话 是有默认动画的。上图是默认动画。里面三个方法getOffset() 、getRotationAnimation()、getScaleAnimation()重写class scalingAnimation extends FloatingActionButtonAnimator{ double _x; do原创 2020-07-17 13:58:52 · 1003 阅读 · 0 评论 -
flutter Stream流
在flutter中 stream是很中重要的,在现在市场面flutter中的状态管理框架基本上都是用stream流来实现的Stream分类流可以分为两类:单订阅流(Single Subscription),这种流最多只能有一个监听器(listener)多订阅流(Broadcast),这种流可以有多个监听器监听(listener)Stream创建方式stream创建有很多种,Stream.fromFuture、Stream.fromIterable等方式,但是一般不使用这种,我们使用StreamC原创 2020-07-06 16:26:59 · 597 阅读 · 0 评论 -
Flutter ListView
ListView是最常用的滑动组件构建ListViewListView(): 在item每没有出现在屏幕就会创建,性能开销比较大,可能会引起卡顿,所以不适合长列表ListView.build(): 最长使用的列表**ListView.separated():**处理分割线1.ListView()基础构造 @override Widget build(BuildContext context) { return Container( height: 200, c原创 2020-06-19 16:01:45 · 359 阅读 · 0 评论 -
flutter_redux
redux 组成Store :用于存储和管理State,所有的状态都储存在Store里,Store会放在App顶层Action:用户触发的一种行为Reducer:根据Action产生新的State,State状态是由reducer生成并储存在Store里面的。Store更新状态的时候,并不是更改原来的状态对象,而是将reducer生成的新的状态对象替换掉老的状态对,过程:通过发起一个action来告诉Reducer,状态要发生变化了,这是Reducer会收到 一个action,然后根据收到的a原创 2020-06-10 18:48:09 · 784 阅读 · 0 评论 -
IM即时通讯
1 IM系统体系主要模块客户端:一般用于用户收发消息的终端设备,内置的客户端程序和服务端进行网络通讯,用来承载用户的互动请求和消息接收到功能,接入服务:接入服务是服务端的门户,为客户端提供收发消息的出入口,发送消息一般客户端发送消息到接入服务,然后再由接入服务交到业务层进行处理,接入服务分为,连接保持、协议解析、session维护和消息推送一般使用的socket保持长连接连接保持:一般我们使用socket保持长链接协议解析:提供协议的编解码工作,为了节省流量系统会对传输的内容进行紧凑的编码(p原创 2020-06-05 16:15:14 · 2178 阅读 · 0 评论 -
Android原生集成flutter module步骤
重要!!!明确自己使用的flutter 版本,不同的版本在原生页面承载flutter页面的时候方式不同,我使用的是1.17.1 。studio版本是3.5.2阿里flutter_boost 插件可以方便的集成flutter module。但是flutter更新的版本很快,不同版本之间的有核心的api是废弃掉。flutter boost更新兼容达不到flutter sdk更新的速度。如果你要集成flutter boost要注意自己的flutter sdk版本和flutter_boost版本的保持统一。创原创 2020-06-04 16:52:28 · 1889 阅读 · 0 评论