flutter
文章平均质量分 80
ailinghao
移动端开发:iOS、Android、flutter
展开
-
flutter性能优化总结
选择一个特定的单元格作为 “锚” —所有单元格的尺寸都将相对于这个单元格。例如,你想要所有单元格都具有或大或小的效果(或类似需要轮询所有单元格的计算)时,就会发生内部传递。方法中进行重复且耗时的工作,因为当父 widget 重建时,子 Wdiget 的。在构建可复用的 UI 代码时,最好使用 StatelessWidget 而不是函数。将嵌套过多的 widget拆成不同的 widget,并进行封装。避免在动画中裁剪,尽可能的在动画开始之前预先裁剪图像。widget,尤其是在动画中避免使用。原创 2024-04-06 00:17:14 · 544 阅读 · 2 评论 -
flutter 如何在一个页面调用另一个页面的方法
在 PageB 里调用 PageAState 的 reloadData() 方法。原创 2023-04-10 18:04:16 · 1022 阅读 · 1 评论 -
flutter中枚举的使用
Dart 2.17 增加了对枚举成员变量的支持,推荐使用方式三。原创 2024-01-07 17:45:52 · 1369 阅读 · 0 评论 -
flutter 图片相关
Flutter中ListView加载图片数据的优化方案:当开始滚动时不加载图片,滚动结束后再加载图片,用到的关键技术:NotificationListener监听滚动状态。2.如果要优化下载,需要把图片缓存在磁盘上,下次直接从磁盘读取,就像 web 缓存那样,缓存用三方插件:cached_network_image。BoxFit.cover最常用 显示可能拉伸,可能裁切,充满(图片要 不要求全图显示,充满整个容器,还不变形)。BoxFit.fitWidth:宽度充满(横向充满),显示可能拉伸, 可能裁切。原创 2023-07-30 11:29:43 · 1074 阅读 · 0 评论 -
flutter多版本切换
执行完后,当前目录下会生成一个 .fvm 文件夹,考虑将 .fvm/ 添加到 .gitignore 文件,避免误传上库。参考链接:https://blog.csdn.net/qq_33220645/article/details/127012269。在当前 flutter_project 目录执行 fvm use version 即可切换flutter SDK版本。2、删除文件夹flutter目录文件(这里的flutter是原来的符号连接)1、项目clean然后切换自己需要的分支。原创 2023-06-09 10:12:37 · 4074 阅读 · 0 评论 -
Flutter中Map、List数组的常用方法
list.add('我是文本');// [我是文本, 0.66]}原创 2023-04-03 15:05:00 · 3287 阅读 · 0 评论 -
flutter版本升级时遇到的问题解决
flutter升级的问题原创 2022-10-24 19:11:44 · 1936 阅读 · 0 评论 -
flutter异步相关
被async*标记的函数会在返回一组返回值,这些返回值会被包裹在Stream中。==================Dart中async和async*的区别start==============================================Dart中async和async*的区别end==============================StreamController(),只能有一个监听,会缓存数据,如上面的代码,10秒之前用户的操作在10秒之后会被打印出来。原创 2022-04-21 15:44:39 · 160 阅读 · 0 评论 -
flutter中compute和isolate
async和await: 对于普通的任务,使用async和await可实现异步处理任务,而async的处理方式并非使用的是多线程,而是依然在UI线程中处理任务,是在同一个线程上的并发操作。 对于比较繁重的处理任务,可使用compute来开启新isolate,来处理任务。 isolate: 是类似于线程,但不共享内存的独立的worker。是一个独立的dart程序执行环境。 对于每一个flutter应用,当应用被启动时都会有一个默认的isolate,称为root isolate。我们自己的..转载 2022-03-22 11:19:23 · 1780 阅读 · 0 评论 -
flutter状态管理库provider使用笔记
1.为保留状态,选择ChangeNotifierProvider.value,销毁自己手动处理(provider销毁自己手动处理参考:flutter_deer_master开源项目中GoodsSortBottomSheet类里面的处理方式, goods_edit_page.dart :dispose())Selector类和Consumer类似,只是对build调用Widget方法时提供更精细的控制,简单点来说,Selector也是一个消费者,它允许你可以从模型中准备定义哪些属性。原创 2022-03-21 10:07:54 · 310 阅读 · 0 评论 -
Flutter中数组list的浅拷贝和深拷贝问题
浅拷贝:拷贝指针 深拷贝:拷贝一份新的对象浅拷贝出现的问题:操作一个数组另一个数组也发生改变List list = ['1', '2', '3', '4', '5'];List copyList = list;copyList[0] = 'abc';print(list);///打印: [abc,2,3,4,5]print(copyList);///打印: [abc,2,3,4,5]上面问题解决办法:使用深拷贝list.from()List list = ['1', '2原创 2022-02-24 09:47:47 · 4044 阅读 · 1 评论 -
flutter web 微信授权和微信支付
flutter web 微信授权1 .通过微信开放平台获取授权参数参数说明appid 公众号的唯一标识redirect_uri 授权后重定向的回调链接地址, 请使用 urlEncode 对链接进行处理response_type 返回类型,请填写codescope 应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且, 即使在未关注的情况下,只要用户授原创 2022-01-24 10:08:14 · 4490 阅读 · 0 评论 -
flutter开发web项目
让项目支持web :flutter create .运行:flutter run -d chromeflutter run -d chrome --web-renderer html打包:flutter build web --web-renderer html官方链接:Flutter on the Web参考视频:构建 Flutter web 应用 (From Mobile App to web App)_哔哩哔哩_bilibili部署参考链接:「Flutter for Web..原创 2021-12-20 11:45:01 · 14004 阅读 · 0 评论 -
flutter中state生命周期与app生命周期与路由监听
State生命周期initStateinitState 是 StatefulWidget 创建完后调用的第一个方法,而且只执行一次,类似于 Android 的 onCreate、iOS 的 viewDidLoad(),所以在这里 View 并没有渲染,但是这时 StatefulWidget 已经被加载到渲染树里了,这时 StatefulWidget 的mounted的值会变为 true,直到dispose调用的时候才会变为 false。可以在initState里做一些初始化的操作。...原创 2021-08-27 10:13:16 · 2009 阅读 · 0 评论 -
flutter单例设计模式
单例设计模式(Singleton Design Pattern) 理解起来非常简单。一个类只允许创建一个实例,那这个类就是一个单例类,这种设计模式就叫作单例设计模式,简称单例模式。作为最简单的一种设计模式之一,对于单例本身的概念,大家一看就能明白,但在某些情况下也很容易使用不恰当。相比其他语言,Dart 和 Flutter 中的单例模式也不尽相同,本篇文章我们就一起探究看看它在 Dart 和 Flutter 中的应用。Flutter(able) 的单例模式一般来说,要在代码中使用单.转载 2021-08-02 14:03:25 · 476 阅读 · 0 评论 -
flutter中的动画基础知识
1.动画介绍Flutter中的动画系统基于Animation对象的,它不是一个Widget,这是因为Animation对象本身和UI渲染没有任何关系。Animation是一个抽象类,就相当于一个定时器,它用于保存动画的插值和状态,并执行数值的变化。widget可以在build函数中读取Animation对象的当前值, 并且可以监听动画的状态改变。2.在Flutter中有哪些类型的动画?在Flutter中动画分为两类:基于tween或基于物理的。补间(Tween)动画:在补间动画中,定义了开始原创 2021-07-09 14:25:10 · 1624 阅读 · 2 评论 -
flutter性能分析
官网文档地址:https://flutter.cn/docs/testing/ui-performance代码优化工具 : PerformanceOverlayA. 在 Flutter 项目中打开 PerformanceOverlay1.首先打开 PerformanceOverlay 工具,在 AndroidStudio -> Preference -> Language&Frameworks -> Flutter 中打开相应开关,如图:2.然后 run 我原创 2021-07-07 10:13:36 · 1668 阅读 · 1 评论 -
flutter异常处理
Dart代码运行时发生的异常与Java、kotlin、OC等具有多线程模型的编程语言不同,Dart是一门单线程的编程语言,采用事件循环机制来运行任务,所以各个任务的运行状态是互相独立的。也即是说,当程序运行过程中出现异常时,即使没有像Java那样使用try-catch机制来捕获异常,Dart程序也不会退出,只会导致当前任务后续的代码不会被执行,而其它功能仍然可以继续使用。异常捕获根据异常代码的执行时序,Dart异常可以分为同步和异步异常两类。首先我们看同步异常的捕获方式:同步异常的捕获方式原创 2021-07-06 14:46:32 · 1228 阅读 · 1 评论 -
Flutter的核心渲染模块三棵树
Flutter 中有三棵树:Widget 树,Element 树和 RenderObject 树。当应用启动时 Flutter 会遍历并创建所有的 Widget 形成 Widget Tree,同时与 Widget Tree 相对应,通过调用 Widget 上的 createElement() 方法创建每个 Element 对象,形成 Element Tree。最后调用 Element 的 createRenderObject() 方法创建每个渲染对象,形成一个 Render Tree。 E原创 2021-07-01 09:47:46 · 3219 阅读 · 1 评论 -
flutter空安全适配
一、空安全介绍1.什么是空安全从Flutter 2开始,Flutter便在配置中默认启用了空安全,通过将空检查合并到类型系统中,可以在开发过程中捕获这些错误,从而防止再生产环境导致的崩溃。时至今日,空安全已经是一个屡见不鲜的话题,目前像主流的编程语言Kotlin、Swift、Rust 等都对空安全有自己的支持。Dart从2.12版本开始支持了空安全,通过空安全开发人员可以有效避免null错误崩溃。空安全性可以说是Dart语言的重要补充,它通过区分可空类型和非可空类型进一步增强了类型系统。2.原创 2021-06-24 14:28:48 · 4120 阅读 · 2 评论 -
Flutter与Android比较
View相关Flutter使用的是声明式UI,而Win32、Android或iOS框架中使用的是命令式UI,具体差异为:命令式UI需要开发者手动构建和控制一个UI控件的所有功能,然后在需要变更UI时,使用方法和设置器修改。而声明式UI只需要明确一个UI控件的当前状态即可,剩下的UI变换交给框架完成。举个例子:ViewB下包含的两个ViewC(c1和c2)需要变更成ViewB下包含一个ViewC(c3),并修改背景色。命令式UI的写法应该是:b.setColot(red);b.clear原创 2021-06-22 10:34:35 · 3017 阅读 · 0 评论 -
flutter微信登录与支付--fluwx
初始化 ///微信登录 static void initWXLogin() async { registerWxApi( appId: 'wxxxxxx',//查看微信开放平台 doOnAndroid: true, doOnIOS: true, universalLink: 'xxxxx'//查看微信开放平台 ); /* var result = await isWeCha原创 2021-06-16 14:52:14 · 9981 阅读 · 2 评论 -
flutter sdk升级或者降级到指定版本
1.升级flutter版本flutter upgrade 2.升级到指定版本flutter upgrade v2.2.0-10.1.pre3.降级到指定版本(【进入flutter根目录执行git命令】)git reset命令 比如1.12.13---f139b11009aeb8ed2a3a3aa8b0066e482709dde31.17.5 ---8af6b2f038c1172e61d418869363a28dffec3cb4git reset --hard f139b1原创 2021-05-21 11:08:06 · 3810 阅读 · 0 评论 -
flutter项目如何指定原生编程语言
新创建flutter项目时默认编程语言:iOS编程语言为swift,Android的编程语言为kotlin新创建flutter项目如果想指定编程语言,比如iOS编程语言为Objective-C,Android的编程语言为Javaflutter create -i objc -a java 项目名对于已修改过iOS或android工程的Flutter项目1、创建一个新的对应OC语言的flutter项目: flutter create -i objc 项目名2、替换原来项目当中的ios或.原创 2021-03-25 16:46:39 · 1036 阅读 · 0 评论 -
Flutter 图片显示方式及显示样式(圆形或圆角)
图片显示1、本地图片Image.asset加载项目资源包的图片//先将图片拷贝到项目 images 目录中,然后在 pubspec.yaml文件配置文件相对路径到 assets Image.asset('images/pic1.jpg'),Image.file加载手机内置或外置存储的图片//加载Android平台的外置存储图片需要AndroidManifest.xml配置android.permission.READ_EXTERNAL_STORAGE权限Image.file(原创 2021-03-11 14:34:31 · 2238 阅读 · 0 评论 -
Flutter的staggered GridView详细使用
一、简介flutter staggered gridview是一个支持多列网格大小不同的布局,且Android、iOS、Web都适用 在这种布局中每个单元格都可以称为一个Tile。 它有以下几种特性:可以像GridView一样设置多列 在纵轴和主轴上可以设置Tile的个数或者所占用的比例(如crossAxisCount:4,StaggeredTile.fit(2)则表示在纵轴上有两列,如果StaggeredTile.fit(1)则表示在纵轴上有4列,如果使用StaggeredTile.Coun转载 2021-03-05 14:55:18 · 5056 阅读 · 0 评论 -
flutter之DateTime日期转换
方法名称 说明 now() 命名构造,获取当前时间 millisecondsSinceEpoch DateTime转时间戳 fromMillisecondsSinceEpoch 时间戳转DateTime parse(string) 字符串转DateTime isBefore(date) 时间比较---在之前 isAfter(date) 时间比较---在之后 isAtSameMomentAs(date) 时间比较---相等 com原创 2021-01-31 16:01:53 · 4117 阅读 · 0 评论 -
futter开发错误积累
错误信息:Flutter中解决ListView没配合AppBar使用顶部出现空白间隔ListView头部有一段空白区域,是因为当ListView没有和AppBar一起使用时,头部会有一个padding,为了去掉padding,可以使用MediaQuery.removePaddingWidget _listView(BuildContext context){ return MediaQuery.removePadding( removeTop: true, cont原创 2021-01-25 17:25:42 · 5972 阅读 · 3 评论 -
flutter学习笔记
1.跨平台移动UI框架2.与现有的代码一起工作(可以直接嵌入到原生代码中或直接把原生代码嵌入到自己的代码中运行)3. 完全免费、开源。原创 2021-01-11 10:34:39 · 2694 阅读 · 2 评论 -
flutter获取全局的context
通过navigatorKey的方式void main() { runApp(MyApp());} final GlobalKey<NavigatorState> navigatorKey = new GlobalKey<NavigatorState>(); class MyApp extends StatelessWidget { MyApp() { } // This widget is the view.common.root of your.原创 2020-12-29 10:53:24 · 5969 阅读 · 0 评论 -
Flutter项目IOS真机调试及遇到的问题
问题一错误信息:warning: The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.0.99. (in target 'connectivity' from project 'Pods')解决:将下述内容添加在PodFile的最下方post_install do...原创 2020-11-10 09:33:17 · 2711 阅读 · 0 评论 -
Mac电脑上配置flutter开发环境的方法
使用vim配置环境变量1.首先执行命令:vim .bash_profile 用vim打开该文件,然后输入i,表示insert,就是编辑模式 如:Node环境变量配置 export NODE_HOME="/usr/local" export PATH=$PATH:$NODE_HOME/bin 注意:export是Linux中用户编辑环境变量的命令。2.按esc退出编辑模式,然后按住“shift+:”组合键输入“wq”保存退出vim。另外,还有“w”保存、“q”退...原创 2020-09-30 16:18:33 · 1441 阅读 · 0 评论 -
Mac电脑上配置环境变量的方法
1.下载flutter sdk2.解压到指定目录3.把flutter安装目录到bin目录配置到环境变量,然后把flutter国内镜像也配置到环境变量里面vim ~/.bash_profilei进入编辑模式. Esc:wq 保存文件 esc:q 退出export PUB_HOSTED_URL=https://pub.flutter-io.cnexport FLUTTER_STORAGE_BASE_URL=https://storage.fl...原创 2020-09-24 15:07:25 · 22297 阅读 · 0 评论 -
Flutter-APP打包流程
Android版一.创建Flutter的打包秘钥(生成.jks文件)打来命令执行框cmd,输入一下命令 或 在AS的终端中,进入到工程目录输入(根据实际情况修改~/key.jks)keytool -genkey -v -keystore D:\flutterDemo\key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key二、Android的Gradle打包配置① 创建key.properities在android..原创 2020-09-07 17:16:53 · 954 阅读 · 0 评论