Flutter项目开发全套教程
文章平均质量分 60
本专栏从详述flutter 中所有的UI组件,到基本功能性操作,再到特效widget的开发到开发一个app
早起的年轻人
先后从事在 java EE 领域、Android开发架构领域、iOS开发领域、小程序开发领域、前端开发、产品设计领域、项目管理学领域等,并在大量的实践中积累了丰富的经验,也形成了一套完整的移动互联网开发解决方案
在各大技术社区刊登技约1000多篇术分享文章,同时录制了发布了多个Flutter从简到详系列的视频教程以及Android 、iOS、微信小程序系列视频教程
2021年出版《Flutter组件精讲与实战》清华大学出版社出版、《Flutter 实战应用开发》机械工业出版社出版
2022年出版《Flutter深度探索企业应用开发》清华大学出版社出版、《鸿蒙OS应用实战》机械工业出版社出版
展开
-
Flutter Inspector 视图调试工具突然不能用了
Android Studio 启动时需要 Java 运行时环境(Java Runtime Environment,JRE)来执行 Java 代码和构建 Android 应用程序。Flutter Inspector 是 Flutter 开发工具中的一个可视化调试工具,它提供了一种在运行时检查和调试 Flutter 应用程序的方法。2、搜索 boot runtime,找到「Choose Boot Java Runtime for the IDE」选项。原创 2024-03-15 22:08:38 · 317 阅读 · 0 评论 -
Flutter 如何检查一个小部件是否可见? visbility_detector 来帮你实现
简单的应用场景就是在A页面中点击一个按钮打开B页面,A页面失去焦点,然后B页面关闭消失,A页面重新获取得了焦点,同时回调onResum事件。在本文中,我们将学习一个重要的Flutter小部件。很多时候,在应用程序中,我们必须知道一个小部件是否可见。类似Android的onResum事件,在Flutter中,需要使用一些额外的方法来实现这个事件检测。现我也可以使用 visibilityDetector 在页面中做统一的处理。如果你有兴趣,可以关注一下微信公众号 biglead 程序员知识架构。原创 2024-02-28 08:59:15 · 361 阅读 · 0 评论 -
Flutter 3.19.0 版本新特性
其实在每个版本的更新中呢,都会合并很多很多的这个合并请求、还有开发建议,那么本版本的也不例外,社区官方发布的公告是。当然,如果你的时间允许的话,你可以去查看一下这些请求,对开发者来讲肯定是受益匪浅的。小编这里使用 fvm来管理Flutter多版本SDK,现在来下载新版本体验一波。原创 2024-02-22 21:46:03 · 1498 阅读 · 0 评论 -
flutter go_router 官方路由(一)基本使用
基本简单参数传递,比如一个 userId,页面路由定义如下:ThreePage就是我定义的目标页面,它需要一个参数 userId。“/” 配置的就是加载的默认的启动的首页面,然后我这里面相当于是配置了两个基本的页面。点击一个按钮跳转目标页面,我这里传的参数 userId的值为 123。如下图所示,我当前使用的flutter版本为3.16.0。使用 Navigator 正常操作如下“复杂传参数 请看后续。原创 2024-02-04 09:37:54 · 640 阅读 · 0 评论 -
Flutter isolate 小笔记 记录一下功能
我开发的业务是这样的,在页面中,我要开启录音功能,然后呢同时我也要上传,就是上传的录音文件,所以这里边儿我如果都放在我的这个默认线程中,他是非常卡的,就是我录音的过程中我的页面滑动是很卡的,有些时候我4核的手机不太明显,但是我八核的手机,会卡的很明显,所以呢我考虑把录音和这个嗯,文件上传放到 各自的 isolate。那么在 isolate 中,如果调用平台的能力就需要 主线程的标识,就需要使用到 BackgroundIsolateBinaryMessenger了。原创 2024-01-27 20:24:45 · 389 阅读 · 0 评论 -
Flutter Scrollbar滑动条与SingleChildScrollView的结合使用的小细节
我在业务开发中,ListView是竖向滑动的,然后 ListView中的每一个小条目比较长,我需要横向滑动,所以 就有了 ListView中多个SingleChildScrollView(横向滑动),但是在视觉上,我期望告知用户可以横向滑动,所以有了 Scrollbar 结合 SingleChildScrollView 来使用。但是两者来使用,多多少少会有点问题,本文章记录小问题。先来看下我的效果最终的核心代码是。原创 2024-01-11 16:58:22 · 702 阅读 · 0 评论 -
flutter TextPainter 的用法
本文章基于 Flutter 3.16.2 Dart SDK 3.2.2。TextPainter 是 Flutter 中用于在 Canvas 上绘制文本的类。它允许您在自定义的 CustomPainter 中使用 drawText 方法来绘制文本,并可以控制文本的位置、颜色、字体等属性。运行效果如下:就是绘制出一条普通的文本本文案例使用在线测试 https://dartpad.cn/?id现在,绘制一条文本,并在文本下绘制一条下划线(当然你可以是其他任意的图形),核心代码如下。原创 2023-12-08 21:48:19 · 691 阅读 · 0 评论 -
Flutter案例日程安排首页效果 Lottie动画与Shimmer实现的微光效果
Lottie是一个适用于Android和iOS的移动库,它解析使用Bodymovin导出为json的Adobe After Effects动画,并在移动设备上原生渲染它们!Shimmer库,用于在Flutter项目中添加微光效果的一个包,本项目使用的是3.0.0版本。Flutter使用的版本 3.13.8,使用fvm管理版本。本文章使用的 lottie 库是 2.7.0版本。加载动态地图示例,使用的是 lottie。加载中的占位使用的也是 Shimmer。加载文本特效使用的是 Shimmer。原创 2023-11-09 22:51:44 · 420 阅读 · 0 评论 -
Flutter Set存储自定义对象时 如何保证唯一
在Flutter中,Set和List是两种不同的集合类型,List中存储的元素可以重复,Set中存储的元素不可重复。方法用于返回对象的哈希码,这是一个整数。在自定义类中,需要覆盖。在这个例子中,第三个对象是重复的,因为它与第一个对象具有相同的。如果你想在Set中存储自定义对象,你需要确保对象的唯一性。方法用于比较两个对象是否相等。在自定义类中,需要覆盖。Set会自动忽略重复的对象,确保每个对象是唯一的。方法以确保相等的对象具有相同的哈希码。属性,它们将被视为相等的对象。方法以确保相等的对象返回。原创 2023-11-05 15:31:46 · 450 阅读 · 0 评论 -
Flutter Map 常用操作方法概述
Flutter 中的 Map 是一种键值对的集合,可以存储任意类型的数据,并且可以通过键来访问和操作对应的值。原创 2023-11-05 10:58:32 · 544 阅读 · 0 评论 -
Android 备案公钥、签名 MD5获取方法
公钥和 MD5 值可以通过安卓开发工具、Keytool、Jadx-GUI 等多种工具获取,本文以 jadx-gui 为例。原创 2023-10-24 16:03:10 · 2088 阅读 · 0 评论 -
Dart Stream与 HttpClient 的结合使用
Dart Stream是一种异步数据流,用于处理异步事件。它类似于其他编程语言中的事件流或观察者模式,可以用于处理一系列的数据事件,并允许开发人员注册监听器来接收这些事件。Dart Stream有两种类型,一种是点对点的单订阅流(Single-subscription),另一种则是广播流(Broadcast)。单订阅流的特点是只允许存在一个监听器,即使该监听器被取消后,也不允许再次注册监听器。而广播流则允许同时存在多个监听器,每个监听器都会收到所有的数据事件。原创 2023-10-24 09:22:13 · 148 阅读 · 0 评论 -
Dart HttpClient 网络请示框架的使用详解
Dart的HttpClient库是一个用于发送HTTP请求的库,它提供了一个简单的API来执行HTTP请求和接收响应。原创 2023-10-24 08:44:03 · 252 阅读 · 0 评论 -
Flutter Image组件如何处理图片加载过程中的错误?
在上面的代码中,通过在initState方法中设置loadErrorBuilder回调函数来处理图片加载过程中的错误。当图片加载失败时,返回的是builder中指定的Widget。原创 2023-10-20 22:07:34 · 1434 阅读 · 1 评论 -
【解码Flutter】新一代渲染引擎 Impeller 大幅度提升渲染效率
Flutter团队相信这解决了Flutter的早发垃圾问题。Impeller在引擎构建时预编译一组更小,更简单的着色器,所以它们不会在运行时编译。原创 2023-09-25 18:36:40 · 524 阅读 · 0 评论 -
flutter Could not get unknown property ‘ndkVersion’
ndkVersionIfUnspecified替换为ndkVersionIfUnspecified,在flutter-3.7.2\packages\flutter_tools\gradle\flutter.gradle配置如下。使用的 flutter 版本为 3.7.2 ,编译运行 如下。也就是去掉了这个判断。原创 2023-09-03 10:47:03 · 738 阅读 · 0 评论 -
Dart中List的常用方法概述及使用案例
在Dart中,List是一种有序的集合,它提供了许多有用的方法来操作列表数据。Flutter使用Dart语言开发,所以在Flutter中依然适用。如果您有小程序、APP、公众号、网站相关的需求,您可以通过私信来联系我。如果你有兴趣,可以关注一下我的综合公众号:biglead。下面是List常用的方法概述及使用案例。以上是List常用的方法概述及使用案例。原创 2023-05-15 22:08:26 · 428 阅读 · 0 评论 -
Flutter中IndexedStack的使用详解
IndexedStack是Flutter中的一个布局组件,用于在多个子组件之间切换,并且只显示当前子组件。原创 2023-05-10 19:16:14 · 999 阅读 · 0 评论 -
Flutter中的异或运算以及十进制转二进制
在Flutter中,异或运算可以通过“^”运算符来实现。异或运算是一种逻辑运算符,当两个操作数的对应位不同时,结果为1,否则结果为0。在这个例子中,a ^ b运算的结果为2,因为5和3的二进制表示中,只有最后一位不同。因此,最终的结果是二进制的010,也就是十进制的2。原创 2023-05-08 11:19:00 · 422 阅读 · 0 评论 -
Flutter list 数组排序
在该示例中,我们使用了compareTo()函数来比较Person对象的年龄字段,并按照升序排序。sort()方法需要传递一个比较函数来指定如何对对象进行比较,并按照您指定的顺序进行排序。在上述代码中,我们使用了sort()函数将Person对象列表按照年龄字段进行排序。如果想按照其他字段进行排序,只需将比较函数中的a和b替换为您想要排序的字段即可。在上述代码中,我们使用了sort()方法将数字列表按照升序和降序进行了排序。如果您有小程序、APP、公众号、网站相关的需求,您可以通过私信来联系我。原创 2023-05-07 22:50:56 · 1007 阅读 · 0 评论 -
用Flutter写一个单例
在Flutter中创建单例可以使用Dart语言中的静态变量和工厂方法的组合来实现原创 2023-05-07 21:26:01 · 609 阅读 · 0 评论 -
Flutter中的SystemChrome用来控制应用程序的系统级别行为
是 Flutter 提供的一个类,用来控制应用程序的系统级别行为,如设置全屏,状态栏等。原创 2023-05-05 23:23:40 · 236 阅读 · 0 评论 -
Flutter替换字符串中的html标签 记录日常开发中的小搜索
可以使用正则表达式和replaceAll方法来替换字符串中的HTML标签。在上面的示例中,我们首先定义了一个包含HTML标记的字符串。然后,我们使用replaceAll方法替换HTML标记和实体引用。在正则表达式中,]*>匹配任何HTML标记,&[^;]+;匹配实体引用。最后,我们输出纯文本字符串"Hello, world!正则表达式是一种灵活的文本匹配工具,在Flutter中也有广泛的应用,例如验证用户输入、数据处理等方面。正则表达式通常使用RegExp类来创建,并可以与字符串进行匹配。原创 2023-04-29 12:08:41 · 574 阅读 · 0 评论 -
Dart String字符串的常用方法概述 整理了大概4000多字
比较两个字符串的大小,返回一个整数值,如果当前字符串比otherString小,则返回一个负数,如果当前字符串比otherString大,则返回一个正数,如果当前字符串和otherString相等,则返回0。参数可以是函数,函数的参数是子串内容,函数的返回值是处理后的子串内容,也可以是字符串,表示直接替换子串内容。是一个方法,它可以将一个字符串按照指定的模式分割成若干子串,并将每个子串按照指定的方式处理后合并成一个新的字符串。如果原字符串的长度已经大于等于指定的长度,则不会填充任何字符,直接返回原字符串。原创 2023-04-28 08:20:51 · 1177 阅读 · 0 评论 -
Flutter 手指拖动实现弹簧动画交互
Flutter,确实提高了我们的开发效率,写Flutter代码,感觉行云流水,欢迎大家关注与提意见。物理模拟可以让应用程序的交互感觉逼真和互动,例如,你可能希望为一个 Widget 设置动画,使其看起来像是附着在弹簧上或是重力下落。本文章实现了演示了如何使用弹簧模拟将小部件从拖动的点移回中心。实现步骤如下。原创 2023-04-21 19:27:58 · 432 阅读 · 0 评论 -
Flutter中的EventSink与StreamSink以及StreamSubscription
题记:不到最后时刻,千万别轻言放弃,无论结局成功与否,只要你拼博过,尽力过,一切问心无愧。StreamSink 是一个 interface 接口,它继承于 StreamConsumer 和 EventSink。StreamConsumer是一个接口,用于消费流事件,它是Flutter中的一种异步编程模型,用于处理数据流。原创 2023-04-05 20:03:18 · 814 阅读 · 0 评论 -
Flutter Ticker 动画驱动器
Flutter Ticker 通常应用在需要在每一帧都执行一些操作的情况下,比如动画或者游戏开发中。原创 2023-03-31 18:53:17 · 517 阅读 · 0 评论 -
Flutter AbsorbPointer 用于阻止子 widget 接收指针事件
当 absorbing 属性设置为 true 时,子 widget 将无法接收指针事件,在上述代码中,AbsorbPointer 阻止了 RaisedButton 接收指针事件,因此,点击 RaisedButton 不会触发 onPressed 回调函数。题记:不到最后时刻,千万别轻言放弃,无论结局成功与否,只要你拼博过,尽力过,一切问心无愧。AbsorbPointer 是一个 widget,用于阻止子 widget 接收指针事件。原创 2023-03-31 15:12:12 · 191 阅读 · 0 评论 -
macOS搭建Nexus 3.x为Maven的资源仓库服务器 Maven私服搭建
nexus3 作为maven 私服配置,来加速 Java 、Android 、Flutter 的编译速度原创 2023-02-22 19:32:48 · 908 阅读 · 0 评论 -
Flutter 错误 Transform‘s input file does not exist: ... artifacts/engine/android-arm/flutter.jar.
Flutter cache/artifacts/engine/android-arm/flutter.jar 不存在问题原创 2023-02-10 19:44:09 · 862 阅读 · 1 评论 -
can‘t be used as a mixin because it extends a class other than ‘Object‘.
can't be used as a mixin because it extends a class other than 'Object'.原创 2023-01-31 15:07:58 · 659 阅读 · 0 评论 -
Android Studio gradle配置项 packagingOptions说明 Android打包so库重复问题
在安卓开发中,通常会使用到gradle来编译,在安卓项目的app目录下的build.gradle中是用来对编译进行配置的,packagingOptions 是其中的一个打包配置,常见的设置项有exclude、pickFirst、doNotStrip、merge。原创 2022-11-16 19:30:00 · 1327 阅读 · 0 评论 -
Flutter各版本发布时间及特性概述
转眼间 从事Flutter开发已3年多,各位码友们还在关注Flutter最新版本新特性吗?你是否还记得每次有新版本时更新的哪些特性呢?原创 2022-11-07 16:55:36 · 4423 阅读 · 0 评论 -
Flutter NavigationBar 优雅的实现底部导航栏菜单
在Flutter开发中NavigationBar 学用来配置底部菜单栏选项。原创 2022-11-03 09:20:19 · 1680 阅读 · 0 评论 -
Flutter ActionChip 用来实现点击效果的小标签
ActionChip 是Material Design的一个 Widget,用来实现可点击的小标签效果。原创 2022-11-02 16:58:17 · 344 阅读 · 0 评论 -
Flutter ChoiceChip 用来实现选择标签效果
ChoiceChip 是Material Design的一个 Widget,用来实现选择标签效果原创 2022-10-31 17:19:04 · 959 阅读 · 0 评论 -
Flutter InputChip 用来实现可点击的标签效果
InputChip 是Material Design的一个 Widget,用来实现标签效果,InputChip 实现的标签可以实现点击事件以及是否选中的效果原创 2022-10-30 12:52:18 · 741 阅读 · 0 评论 -
Flutter Clip 用来实现文本标签的效果
label 是用来配置文本的,labelStyle是用来设置这个文本的样式,如颜色、大小 、粗细等等,labelPadding是用来设置文本四周的边距的。原创 2022-10-29 14:43:23 · 1409 阅读 · 0 评论 -
Flutter3.3对Material3设计风格的支持
ElevatedButton 可通过 style 来设置样式,onPrimary 属性来设置前景色,比如这里的文本的颜色,primary 用来设置背景色,也就是这里的ElevatedButton按钮的填充颜色。原创 2022-10-28 01:03:16 · 1324 阅读 · 2 评论 -
Flutter ToggleButtons 一组切换按钮
ToggleButtons 是 一组切换按钮。ToggleButtons中的children 属性配置的是一个数组,可以装填多个 widget,显示出来的按钮组是按顺序排列的。每个按钮的状态由isSelected控制,这是一个bool列表,用于确定按钮是处于未选中状态还是已选中状态。2.2 ToggleButtons 的核心使用代码2.3 constraints 属性配置配置 BoxConstraints ,BoxConstraints 就是继承自 Constraints 然后有最小和最大的原创 2022-10-26 23:28:46 · 640 阅读 · 0 评论