
flutter
文章平均质量分 83
一叶飘舟
目标赋予我们生命的意义和目的。有了目标,我们才会把注意力集中在追求喜悦,而不是在避免痛苦上。(急需找我,加微信:jdsjlzx)
展开
-
Flutter StreamBuilder 实现局部刷新 Widget
当widget需要进行刷新时,我们可以通过调用widget的setState方法来实现,setState随后会调用State的build方法来进行重建。那么,如果 我们能将 build方法中的 return new Text(_text) 暴漏出去,我们就可以实现通用的 局部刷新 Widget。Stream 就是事件流或者管道,是基于事件流驱动设计代码,然后监听订阅事件,并针对事件变换处理响应。Flutter StatefulBuilder 用来实现局部数据刷新。本页面实现 Demo 效果如下。原创 2023-11-09 15:54:26 · 1053 阅读 · 0 评论 -
flutter中好用的Widget-CupertinoPicker
因为城市选择的数据是从服务器上拿的的,在pub上面也没有找到合适插件,索性就自己写了一个,在写的过程也遇到很多问题,其实就是三个 CupertinoPicker 组合在一起的,当时写的过程中发现 CupertinoPicker setState不更新 以及onSelectedItemChanged 调用的问题。原创 2022-12-02 00:05:09 · 8234 阅读 · 3 评论 -
Dart 运算符重载
在软件开发过程中,运算符重载(英语:operator overloading)是多态的一种。运算符重载通常只是一种语法糖,这种语法对语言的功能没有影响,但是更方便程序员使用。让程序更加简洁,有更高的可读性。转载 2022-11-29 23:30:58 · 1356 阅读 · 0 评论 -
flutter 特殊用法
主题参考:主要概念变量与数据类型。转载 2022-11-29 00:20:24 · 706 阅读 · 0 评论 -
flutter入门之dart中的并发编程、异步和事件驱动详解
在java开发中,我们进行并发编程的时候,经常会使用future来处理任务,获取返回的结果,或者延迟处理任务等操作,而在dart中,我们执行一个任务同样也可以使用future来处理,而Future默认情况下执行的是一个event-queue任务,也就是和我们正常执行的业务逻辑一样的任务级别,然而future提供了多个api和特性来完成任务队列的使用,例如我们在js开发的时候经常使用ajax的then函数进行回调,then中的参数即为当前任务执行完的参数,我们可以在。isolate自身的任务又是如何处理的?转载 2022-11-28 15:59:56 · 1626 阅读 · 0 评论 -
Flutter 工程化框架选择——搞定 Flutter 动画
在之前的Flutter 小技巧: 用于控制动画启动、暂停: 用于创建所需的vsync参数,一般最常使用Animation: 用于处理动画的 value ,例如常见的接收动画的对象:例如这种写法如下代码所示,我们一般可以称为显式动画(不要纠结名词叫法),大致特征就是:以 *Transition命名,比如、和等,需要我们自己定义和操作。);}}复制代码也就是开箱即用,常见是 Animated*开头的 Widget,例如、、、转载 2022-11-28 00:13:42 · 1437 阅读 · 0 评论 -
Flutter 进度条
但是很多APP的设计都按照Material Design风格来玩的,各种各样的都有,我们选择最常见的一种来看一下,下面是“淘宝APP->淘抢购”页面里面的进度条,还是带动画的。为进度条的里面配置描述文本,和上面一样,就是继续包装(PS:Flutter的布局方式真的是过度包装),用堆栈()组件去做,是没办法实现上面的进度条的。在上面的代码中,我们已经设置好了动画与补间,下面就把线性进度条(但是上面的问题都可以被解决,下面就是具体的解决方案了。)组件,就是下面的样子,方方正正的,一点也不圆润。原创 2022-11-27 23:54:25 · 3898 阅读 · 0 评论 -
flutter图片压缩库对比
flutter_luban方法调用起来也比较简单,先将需要压缩的图片封装到CompressObject类中,然后调用Luban.compressImage既可。);// _path为压缩后图片路径});然后来看下compressImage方法的具体实现}然后就是调用到了_lubanCompress这个方法。从这个方法可以看出,flutter_luban只支持jpg和png格式的图片压缩,然后基本的步骤为图片的宽高进行的一系列的计算和校验。转载 2022-11-27 23:42:45 · 2746 阅读 · 1 评论 -
flutter useRootNavigator属性的作用
用于确定是否将对话框推到距给定上下文最远或最接近给定上下文的Navigator问题:在使用showDatePicker的时候,android手机如果侧滑返回的时候,页面会关闭,showDatePicker弹出的dailog缺没有关闭。方法显示一个包含日期选择器的对话框。当用户关闭对话框时,返回的Future解析为用户选择的日期。如果用户取消对话框,则返回null。怎么在页面关闭的时候关闭dialog呢?将useRootNavigator置为false即可。原创 2022-11-27 23:27:13 · 1379 阅读 · 0 评论 -
Flutter 学习 之 图片的选择、裁切、保存
这里我选择的是image_picker优点官方出品的插件可以直接调用相册和相机无需提前申请权限可以多选和单选选择丰富缺点多选需要长按没有明显的提示。转载 2022-11-27 23:15:04 · 5617 阅读 · 0 评论 -
Flutter 学习 之 时间转换工具类
Flutter 学习 之 时间转换工具类。转载 2022-11-27 23:04:24 · 2103 阅读 · 0 评论 -
Flutter ShowModalBottomSheet 自定义高度和滚动
这是一个官方的组件 但是两个滑动在一起会有冲突简单的实现了一下滑动到头自动收起这个组件。转载 2022-11-27 23:03:01 · 3273 阅读 · 0 评论 -
Flutter自定义对话框返回相关问题汇总
我这里是禁掉返回按钮,当然也可以在这里做一下其他操作,比如连续点击两次返回,又或者连续pop两次把dialog和页面一起返回掉。原创 2022-11-27 22:54:50 · 1469 阅读 · 0 评论 -
Flutter 文件读写---path_provider
在我们实际的应用开发过程中,常常会做一些本地持久化数据配置,在应用启动时可以拿到配置去处理对应的业务逻辑。或者我们下载文件、下载图片等都需要通过IO流来实现。在我们操作文件的时候我们需要结合dart:io库中的,因为每个系统下文件路径不同,如果自己去实现会很麻烦,那么就此产生。是一个Flutter插件,主要作用是提供一种以平台无关一致的方式访问设备的文件系统,比如应用临时目录、文档目录等。而且支持Android、iOS、Linux、MacOS、Windows。转载 2022-11-21 00:25:45 · 4913 阅读 · 0 评论 -
Flutter Provider状态管理---MVVM架构实战
MVVM架构分为M(Model)、V(View)、VM(ViewModel)三个部分,他们分别处理自己的分工,在View和Model之间使用ViewModel作为中介者,使View和Model不受业务逻辑影响。模型层,处理Api数据、模型相关业务视图层,UI呈现、使用者互动等。视图模型,处理逻辑、将数据绑定给View展示。将网络请求回来的数据转换为对应的模型});data;);};}Joke({});content;hashId;final int?unixtime;);};转载 2022-11-21 00:07:48 · 2594 阅读 · 0 评论 -
Flutter Provider状态管理
我们这里创建了一个类继承了,我们这里的案例是以计数器为案例,所有我们定义一个变量count,以及一个改变数值的increment方法,当我们调用increment后会对count进行+1,最后调用count++;}}以上是对Provider进行了介绍、优势、类结构和说明以及一个基本使用的例子,相对于使用来说,显然Provider使用起来更简单。但是从它的提供者、消费者这些类来看稍微复杂,后面的章节中我们来讲讲这些类。在我们上一篇文章中对Provider。转载 2022-11-20 23:52:07 · 3331 阅读 · 0 评论 -
GetX第三篇-依赖注入
SmartManagement.keepFactory 就像SmartManagement.full一样,当它不再被使用时,它将删除它的依赖关系,但它将保留它们的工厂,这意味着如果再次需要该实例,它将重新创建该依赖关系。如果在一个 Widget 里 find,然后退出这个 widget,此时这个实例也被销毁,再进入另一个路由的 Widget,再次 find,GetX会打印错误信息,提醒没有 put。如果自己拼装个,引擎的构造更新了,他需要学习改进自己的技术,买新零件,而直接买一个成品,就是依赖注入。转载 2022-11-14 11:18:23 · 1737 阅读 · 0 评论 -
Flutter状态管理终极方案GetX第二篇——状态管理
一个应用的状态就是当这个应用运行时存在于内存中的所有内容。当然许多状态,例如纹理、动画状态等,框架本身会替开发者管理,所以对于状态更合适的定义是**“当你需要重建用户界面时所需要的数据”**,我们需要自己管理的状态可以分为两种概念类型:短时 (ephemeral) 状态和应用 (app) 状态。短时状态短时状态是可以完全包含在一个独立 widget 中的状态,也成为局部状态。应用状态如果在应用中的多个部分之间共享一个非短时的状态,并且在用户会话期间保留这个状态,我们称之为应用状态(有时也称共享状态)转载 2022-11-14 11:15:11 · 4537 阅读 · 0 评论 -
Flutter状态管理终极方案GetX第一篇——路由
GetX是 Flutter 上的一个轻量且强大的解决方案:高性能的状态管理、智能的依赖注入和便捷的路由管理。为什么是 GetX,而不是 BLoC、MobX、Provider?BLoC 非常安全和高效,但是对于初学者来说非常复杂,即使学会,样板代码也很多。MobX 比 BLoC 更容易,而且是响应式的,但是需要使用一个代码生成器,需要等很久,这降低了生产力。轻量。模块单独编译,没用到的功能不会编译进我们的代码。语法简洁。个人非常喜欢,显而易见且实用,比如路由摆脱了 context 的依赖,转载 2022-11-13 23:51:17 · 3185 阅读 · 0 评论 -
Flutter 自定义实现时间轴、侧边进度条
左边是圆和线,右边是内容,然而我太天真了,左边的 线 高度没法跟随右边的高度,即右边有多高,左边就有多高。然后我看到了 Flutter 的 Stepper ,虽然不符合需求,但是人家左边的线是 Item 和 Item 相连的,我就看了下他的源码,豁然开朗,人家的布局是个 Colum。这个或许根本不叫 Stepper 吧,也没有什么步骤,只是当前的配送进度,不需要数字步骤,希望所有内容都能显示出来,原生的则是有数字表示第几步,把当前步骤外的其他的内容都隐藏了。因为线在中间,所以宽度要除以2。原创 2022-11-07 21:05:32 · 2874 阅读 · 0 评论 -
Flutter 之 Stepper
Stepper 是 flutter 提供的步骤选择器。转载 2022-11-07 20:43:33 · 1676 阅读 · 0 评论 -
Flutter 按需rebuild-ValueListenableBuilder
关于 ValueListenableBuilder 有两点需要牢记:和数据流向无关,可以实现任意流向的数据共享。实践中,ValueListenableBuilder 的拆分粒度应该尽可能细,可以提高性能。作者:maskerII链接:https://www.jianshu.com/p/6e86b8ace771来源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。转载 2022-11-07 20:18:30 · 1210 阅读 · 0 评论 -
Flutter 自定义渐变按钮 GradientButton
1. 实现GradientButton背景支持渐变色手指按下时有涟漪效果可以支持圆角DecoratedBox可以支持背景色渐变和圆角,InkWell在手指按下有涟漪效果,所以我们可以通过组合DecoratedBox和InkWell来实现GradientButtonKey?key,colors;// 渐变色数组width;// 按钮 宽height;// 按钮 高// 按钮 圆角// 禁用// 子组件@override//确保colors数组不空} else {转载 2022-11-06 00:04:59 · 1873 阅读 · 0 评论 -
Flutter 之 自定义路由切换动画
无论是MaterialPageRoute、CupertinoPageRoute,还是PageRouteBuilder,它们都继承自PageRoute类,而PageRouteBuilder其实只是PageRoute的一个包装,我们可以直接继承PageRoute类来实现自定义路由。@override@override@override@override@override}@override}}使用MSFadeRoute},),);完整代码@override),转载 2022-11-05 23:36:56 · 1774 阅读 · 0 评论 -
Flutter中 MediaQuery 和 build 优化你不知道的秘密
所以,如下动图所示,其实部分人会在 push 对应路由地方,通过嵌套 MediaQuery 来做一些拦截处理,比如设置文本不可缩放,但是其实这样会导致键盘在弹出和收起时,触发各个页面不停 rebuild ,比如在 Page 2 弹出键盘的过程,Page 1 也在不停 rebuild。试想一下,如果你在每个页面开始的位置都是用了 MediaQuery.of(context) ,然后打开了 5 个页面,这时候你在第 5 个页面弹出键盘时,也触发了前面 4 个页面 rebuild,自然而然可能就会出现卡顿。转载 2022-11-04 19:38:05 · 1661 阅读 · 0 评论 -
详解Flutter中各种Binding
Flutter中所有的运转都是在各种Binding中调度的,也正是这些绑定器的存在彻底解耦了Widget 、 Element 、RenderObject 对 Platform端的依赖,阅读此文需要有一定的Flutter基础,如:Flutter的绘制流程、Flutter与Platform通信原理、Flutter 三棵树各自的职责。通过以上分析可以得知Flutter中各Binding组件之间的协同工作构建出Flutter UI交互系统,它们之间又相对独立的只负责一类职责这样很好的解耦了业务之间的耦合度。转载 2022-11-04 19:04:55 · 3139 阅读 · 0 评论 -
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 · 2382 阅读 · 0 评论 -
Flutter 最佳实践
学习最佳实践,用 Flutter 提高代码质量、可读性、可维护性和生产率。转载 2022-11-01 10:57:19 · 797 阅读 · 0 评论 -
Flutter混合开发:Android中如何启动Flutter
flutter可以独立完成项目,但是在现有项目情况下最好的方式就是混合开发,逐步过渡。这样就会共存native和flutter代码,而其中最关键的就是native如何启动flutter页面,及flutter与native如何交互。本文以Android为例,展示如何在一个现有项目中引入flutter、启动flutter,如何加速启动以及如何传参。转载 2022-10-20 15:41:01 · 2182 阅读 · 2 评论 -
Flutter状态管理:RxDart
BLoC《Flutter状态管理:BLoC(Business Logic Component)》编程概念《编程方式:命令式 vs 函数式》转载 2022-10-06 00:54:07 · 2123 阅读 · 0 评论 -
Flutter 状态管理
大概意思是说,Home组件的 BuildContext 不包含 Provider,产生这个错误的原因是使用的 BuildContext 是当前正在读取数据的 provider 的祖先元素,当你创建好一个 provider 以后立即读取其数据就会报这个错。如图,组件D和组件G共享的数据是通过组件A取数据以后逐级向下透传的,也就是说数据需要逐级传递,比较麻烦,而且不是所有组件都需要相关数据。User('黑寡妇', 36, '女', '把你的洗澡水给杜兰特喝一点吧'),转载 2022-10-05 13:21:52 · 2012 阅读 · 0 评论 -
Flutter StatefulWidget传递数据,多级控件传递数据
这个VoidCallback是通过查看onPress类型得到的。答案也是构造方法 直接传递VoidCallback进来。父类传递给子类可以通过构造方法。多级别当然就是多个构造。转载 2022-09-20 10:23:23 · 822 阅读 · 0 评论 -
Flutter 自定义ICON库
Flutter自带了Material的图标,但还是不太满足我们国内的需求,比如微信、微博、QQ这些国内常用的图标就没有收录,或者为了让APP更有个性,我们希望换掉Material的风格,这个时候,自定义图标就成了一个不大不小的问题,Flutter对于引用自定义的解决思路其实不太复杂,按照以下步骤做就可以了。转载 2022-09-13 16:59:55 · 2448 阅读 · 1 评论 -
Flutter中的OverflowBox、SizedOverflowBox
允许子控件超出父控件的边界。这个特性主要可以用来实现文字或者按钮角标的。通过将自身的固定尺寸,传递给child,来达到控制child尺寸的目的;undefined可以突破父节点尺寸的限制,超出部分也可以被渲染显示,与类似。允许子控件超出父控件的边界。这个特性主要可以用来实现文字或者按钮角标的。也允许子控件超出父控件的边界,但是它与不同的在于还可以对子组件进行尺寸部分的限制。Flutter 源码分析作者:Jimi。转载 2022-09-13 11:14:49 · 952 阅读 · 0 评论 -
Flutter中的无名英雄—— Focus
这里大致介绍一些Focus相关Widget及功能类,便于后面理解Focus Tree部分。本篇源码基于1.20.0-2.0.pre。转载 2022-09-13 11:05:07 · 2266 阅读 · 0 评论 -
flutter 单线程异步 及 isolate 使用过程遇到的问题
函数内有阻塞流程(await future)的操作, 则函数会返回一个 future 实例(1) 如果该函数本身有返回值, 比如类型为T, 则返回类型为Future(2) 如果该函数本身没有返回值, 则返回类型为 Future比如下面的 funcTest 函数会返回 Future转载 2022-09-13 00:14:46 · 976 阅读 · 0 评论 -
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 · 1798 阅读 · 0 评论 -
Flutter Text 行高相关
Text是Flutter最常见的Widget之一。我们可以用它放置文本,或者在默认组件不满足要求的情况下,可以结合其他组件来组成如按钮这些的自定组件。虽然用法很简单,但不注意的情况下依旧会出现很多奇奇怪怪的问题。下面就总结下行高部分遇到的问题和解决方案。设置height即在设置文本的支柱高度,这个高度是文本高度和文本上下的空间(leading)之和。在不设置的情况下,会自动均匀分配leading。所以要根据设计图的情况,分析是否需要设置height,单行文本居中的话,一般都不需要设置,除非需要根据。转载 2022-09-12 00:02:22 · 3471 阅读 · 0 评论 -
Flutter中是引用传递还是值传递
这是一个很基础的问题,如果你已经理解透彻了,其实可以不需要往下看(如果理解没错的话),因为相信你已经知道了答案,本篇主要是解释给和我一样一直以来有这样误解的人,事实上这是一个简单的问题,这种情况下,如果他对这把钥匙做了什么事情,比如他在钥匙上刻下了自己名字,那么这把钥匙还给你的时候,你自己的钥匙上也会多出他刻的名字。的角度代入这个故事,你的朋友拿着你给他的钥匙,进到你的家里,把你家的电视砸了,你再用你的钥匙开门进去,看到的也是被砸了的家,这就是。你有一把钥匙,当你的朋友想要去你家的时候,如果你。转载 2022-09-11 01:23:58 · 2507 阅读 · 1 评论 -
Flutter ListView中的TextField上下滑动内容丢失
造成此问题的原因,经过log验证,应该是TextField作为一个Widget,被滑出屏幕,又滑回来,没有焦点的Widget的initState和build方法会被重新执行,也就是Widget会被重建,重建时原有的状态不会自动恢复,里面的文字自然就消失了。当输入内容后将ListVIew上滚动,三个TextField滚动滑出界面后,再把ListView滚动回顶部,只有焦点所在的TextField里的内容不会被清除,其他两个TextField的内容不见了,如下所示。转载 2022-09-10 02:04:32 · 1205 阅读 · 0 评论