
Flutter学习
文章平均质量分 50
旺仔大牛
专注Android、Flutter开发,偶尔涉猎web、后端
展开
-
Flutter配置Android和IOS允许http访问
Android和IOS允许http访问原创 2023-12-27 11:28:11 · 2018 阅读 · 0 评论 -
Flutter最强大的图表库fl_chart的使用
fl_chart快速入门使用原创 2023-07-07 12:11:36 · 6032 阅读 · 0 评论 -
Flutter之ExpansionTile实现以代码方式码折叠、展开
Flutter自带的`ExpansionTile`只能通过点击标题触发展开和折叠,有时候我们想要以代码的方式控制,那满足不了我们的需求。我们只能修改源码。原创 2023-03-28 16:33:55 · 1454 阅读 · 0 评论 -
Flutter中获取监听屏幕方向、锁定屏幕方向
Flutter中获取屏幕方向和控制屏幕方向原创 2022-05-05 16:39:55 · 8511 阅读 · 5 评论 -
Dart-理解空安全中的的操作符
Dart从2.12开始,支持健全的空安全机制。有了空安全,原本处于`运行时`的空值引用错误将变为`编译时`的分析错误,这样的好处是将程序运行时才会出现的空指针异常提供在编译基暴露出来。原创 2022-04-26 15:40:25 · 855 阅读 · 0 评论 -
解决使用flutter_intl出现警告No @@locale or _locale field found in intl_en
在Flutter中使用`flutter_intl`插件做国际化时,每次修改`arb`文件后,就会在Message窗口出现以下提示。对于强迫症患者非常难受,必须解决掉!原创 2022-04-24 11:35:37 · 3584 阅读 · 0 评论 -
Flutter Image从网络加载图片刷新、强制重新渲染
Flutter自带的Image.network()从网络加载图片后,如果服务器上的图片改变了,但是url没变,就算使用setState进行rebuild,图片也不会跟着更新。这是因为Image自带了cache。先清除Image的缓存 Future<bool> evictImage(String imageURL, Map<String, String> headers) async { final NetworkImage provider = NetworkIma原创 2022-03-02 16:02:21 · 3831 阅读 · 0 评论 -
Flutter设置Button的大小
Flutter 2.0之前,一般使用RaiseButton/// 和父widget的宽度或高度保持一致SizedBox.expand( child: RaisedButton(...),)/// 设置固定的值使用Container或者SizeBox设置大小即可。Flutter 2.0之后,官方使用ElevatedButton替代了RaiseButton。ElevatedButton( onPressed: () => _login(_controllers[0].tex原创 2022-03-02 15:52:23 · 11420 阅读 · 0 评论 -
Flutter报错:Bad state: Stream has already been listened to.
出现场景取消了订阅Stream,重新订阅时出现解决方案查询文档发现,单订阅的Stream只能被订阅一次,就算取消订阅了也不能重新订阅。有2种方法使用广播方式创建StreamController。使用RxDart中的BehaviorSubject来代替StreamController。...原创 2022-03-02 15:23:18 · 3891 阅读 · 0 评论 -
解决SocketException: Connection failed (OS Error: Operation not permitted, errno = 1)
文章目录出现场景解决方案出现场景在iphone和macos上运行Flutter APP,出现以下错误。[ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: SocketException: Connection failed (OS Error: Operation not permitted, errno = 1), address = 100.65.182.70, port = 6000解决方案在macos/Run原创 2022-03-02 14:59:16 · 8070 阅读 · 1 评论 -
Flutter-XXXButton清除内部的Padding
Flutter2.0之后,推荐使用的Button(按钮)有ElevatedButton、TextButton、OutlinedButton。他们默认都是会对child有padding的。有时候我们需要自定义上下和左右的padding。ElevatedButton( onPressed: () {}, child: Text("我是按钮"))可以使用style来去除按钮的paddingElevatedButton( onPressed: (){}, child: Text("我是按钮"原创 2022-01-08 02:32:17 · 2907 阅读 · 0 评论 -
Android、Flutter为不同的CPU架构包打包APK(v7a、v8a、x86)
默认情况下,Android和Flutter打包出来的Apk都是包含了所有架构的,这样打出来的apk体积相对于单架构的apk有点大。这时,我们就需要分别打出不同的架构包。架构一般来说,x86代表32位CPU,x64(或者叫x86-64)代表64位CPU。在Android中,支持专有cpu架构也是Application Binary Interface(ABI)。Android开发者官网文档中支持的ABI。armeabi-v7a此 ABI 适用于基于 32 位 ARM 的 CPU,2016年之前原创 2021-12-23 16:30:03 · 12729 阅读 · 0 评论 -
Flutter图片处理之高斯模糊
ImageFilter在Flutter中,使图片模糊有2种方式,这2种方式都需要配合ImageFilter.blur()使用。 factory ImageFilter.blur({ double sigmaX = 0.0, double sigmaY = 0.0, TileMode tileMode = TileMode.clamp })sigmaX:以x轴方向模糊,值越大越模糊sigmaY:以Y轴方向模糊,值越大越模糊TileMode:不需要设置,使用默认值就行原图横向模糊ImageF原创 2021-12-14 16:57:34 · 7373 阅读 · 0 评论 -
Flutter中使用MQTT进行通信
MQTT是机器对机器(M2M)/物联网(IoT)连接协议。它被设计为一个极其轻量级的发布/订阅消息传输协议。对于需要较小代码占用空间和/或网络带宽非常宝贵的远程连接非常有用,是专为受限设备和低带宽、高延迟或不可靠的网络而设计。原创 2021-12-03 16:56:28 · 9649 阅读 · 14 评论 -
Flutter&Dart-异步编程Future、Stream极速入门
文章目录Future用法等待返回结果FutureBuilder使用示例Stream用法单订阅广播订阅释放资源StreamBuilder使用示例Dart是单线程模型,我们写的代码都运行在同一个线程中。如果做了耗时操作,会使应用程序阻塞。Dart中使用Future和Stream编写异步任务。FutureFuture是一个不会马上完成的计算过程,说的通俗一点就是一个异步执行过程,需要配合async和await一起使用。不会阻塞在此之后的代码,等待计算完成后才会返回结果。类似于JavaScript中的Pro原创 2021-10-11 09:43:24 · 902 阅读 · 0 评论 -
Flutter快速实现自定义折线图,支持数据改变过渡动画
绘制先创建一个CustomPainter,使用canvas绘制。import 'dart:ui';import 'package:flutter/material.dart';/// 自定义折线图class LineChartPainter extends CustomPainter { Paint _outlinePaint; Paint _axisXPaint; Paint _valuePaint; /// 左边Y轴标签 TextPainter _leftLabelP原创 2021-09-29 09:53:15 · 2095 阅读 · 0 评论 -
Flutter Canvas绘制快速入门
Flutter是Google的UI框架,所以绘制也秉承了Android的那套东西,坐标起点是从左上角开始的,API也非常相似,对Android开发者特别的友好。CustomPaintconst CustomPaint({ Key? key, this.painter, this.foregroundPainter, this.size = Size.zero, this.isComplex = false, this.willChange = false, Widget? c原创 2021-09-27 17:36:13 · 1509 阅读 · 0 评论 -
Flutter之ListView实现自动滑动到底部
文章目录使用场景思路ScrollPostion实现布局滑动到底部问题解决方案使用场景在常见社交App中,发送消息或者接收到他人消息后,消息列表都会自动滑动到底部,不需要我们手动滑动,这样的用户体验好。思路ListView使用ScrollController来控制滑动,其中有jumpTo、animateTo2个方法滑动到指定的位置。/// packages/flutter/lib/src/widgets/scroll_controller.dartvoid jumpTo(double value原创 2021-09-14 16:32:43 · 7110 阅读 · 0 评论 -
Dart基础:进制转换、int与string互转
在Flutter中,有时候在处理网络数据或者其他数据时,需要对2进制或者16进制数据进行转换,所以学习Dart的进制转换、字符串与ASCII码转换尤其重要原创 2021-08-13 17:17:10 · 10487 阅读 · 0 评论 -
Flutter修改App名称(Android+IOS)
文章目录AndroidIOSApp的默认名称是由Flutter创建工程时提供的名称生成的。创建项目后,如果想修改名称,就必须分别在android和ios的目录下分别修改。flutter create <project-name>AndroidAndroid应用名称需要在AndroidManifest.xml中修改。从以下路径打开文件android/app/src/main/AndroidManifest.xml修改label的值<application a原创 2021-07-29 11:40:06 · 4231 阅读 · 0 评论 -
如何在Flutter中禁用空安全(null safety)
Dart从2.12开始支持空安全(null safety)的特性。随着Flutter 2.0的发布,谷歌也将Dart 2.12加入到Flutter最新的稳定版本中。但是如果是Flutter 1.x版本创建的项目,如果使用新的sdk,由于空安全的原因,可能会有很多改动,所以老项目需要禁用空安全。禁用空安全有以下几种方式运行/编译项目时加参数$ flutter run --no-sound-null-safety$ flutter build --no-sound-null-safety添加注原创 2021-07-27 11:38:01 · 9132 阅读 · 1 评论 -
Flutter中TabBarView与PageView该如何选择
TabBarView和PageView都可以用来当作导航切换的容器。但还是有一些使用的区别。区别TabBarView主要展示不同ui的容器,配合TabBar导航,点击tab时,切换到不同的ui界面。比如微信,有微信、通讯录、发现、我 4大不同的模块。PageVieiw主要是展示相同页面的容器,比如今日头条app首页,根本不同的新闻类型展示不同的新闻,但页面的布局是一样的。另外PageView还支持左右滑动,可以和TabBar做联动。...原创 2021-07-06 10:29:58 · 2101 阅读 · 0 评论 -
Flutter关于pubspec.lock是否应该加入到git或svn的忽略中
pubspec.lock文件需不需要忽略掉,主要看两种情况如果我们开发的是普通的Flutter App,pubspec.lock需要加入到版本控制中。多人开发时,这样可以通过lockfile文件约束每个人依赖的三方库版本是一致的。Application packages should check their lockfiles into source control, so that everyone working on the application and every location th原创 2021-06-29 13:57:56 · 3115 阅读 · 0 评论 -
Flutter控件的显示与隐藏
在Android中,使用visibility属性控制View是否显示。同样地,Flutter也使用Visibility来控制Widget是否显示。同时也可以使用Offstage或Opacity来控制。 Visibility( visible: true, //是否保持占位 maintainState: false, child: Text("显示"), ), //能控件隐藏或显示,但是隐藏时不会占位。 Offstage( offstage: true, chi原创 2021-05-21 23:09:29 · 6013 阅读 · 0 评论 -
Flutter适配安卓刘海、水滴屏显示全屏
配置Android找到android/app/src/main/res/values目录,打开styles.xml将shortEdges放到style标签内。<?xml version="1.0" encoding="utf-8"?><resources> <!-- Theme applied to the Android Window while the process is starting --> <style name="Laun.原创 2021-03-09 23:08:38 · 3119 阅读 · 4 评论 -
Flutter中获取IOS bundle id和Android应用包名
使用Flutter集成三方SDK,有时候需要在SDK平台上填写IOS和Android的一些信息。IOS bundle id打开ios/Runner.xcodeproj/project.pbxproj搜索PRODUCT_BUNDLE_IDENTIFIERPRODUCT_BUNDLE_IDENTIFIER = com.example.flutterApp;后面的值就是bundle id。Android应用名包打开android/app/build.gradle defaultConfig原创 2021-03-08 14:50:05 · 4519 阅读 · 2 评论 -
Flutter开启对Web端、桌面端的支持
Web端首先需要将flutter切换到beta版。切换时会重新下载flutter源码$ flutter channel beta开启web支持# 开启$ flutter config --enable-web# 关闭$ flutter config --no-enable-web桌面端桌面端需要切换到dev分支$ flutter channel dev开启桌面端支持# 开启windows$ flutter config --enable-windows-desktop#原创 2021-02-08 23:51:15 · 1590 阅读 · 2 评论 -
Error: The method ‘DioHttpHeaders.add‘ has fewer named arguments than those of overridden method
很久没更新dio了,编译时出现以下错误../../../dev/flutter/.pub-cache/hosted/pub.flutter-io.cn/dio-2.2.2/lib/src/dio_http_headers.dart:55:8: Error: The method 'DioHttpHeaders.add' has fewer named arguments than those of overridden method 'HttpHeaders.add'. void add(String原创 2020-11-15 10:57:53 · 1938 阅读 · 0 评论 -
添加Flutter模块到已有项目(Android)
创建Flutter模块#进入指定目录$ cd #使用命令创建flutter模块,flutter_module是模块名$ flutter create -t module flutter_module主工程配置app的build.gradleandroid{ ...... compileOptions { sourceCompatibility 1.8 targetC...原创 2019-06-27 00:11:59 · 1533 阅读 · 0 评论