flutter 开发踩坑集

Flutter 碰到的各种坑 持续更新 Android转flutter 也有1年多了 ,在新公司将一个产品用flutter从零开始开发,感觉flutter 还是不太稳定,各种问题还是比较多 ,总之这次体验还是比较差。。 AndroidX结合使用会产生错误:无法解决以下问题:Landroid / support / v4 / util / ArrayMap; 修改 ./android/gradle.properties 增加两行 android.enableJetifier=true android.useAndroidX=... 阅读详情

一、 TextField设置高度后,文字无法居中

解决方案:

TextField(
        style: TextStyle(
        ),
        decoration: InputDecoration(
          prefixIcon: ImageUtils.getImage("search")/*Icon(Icons.search)*/,
          hintText: widget.hint,
          fillColor: Color(0xfff1f1f2),
          contentPadding: EdgeInsets.all(0),//设置输入内容垂直居中
          border: OutlineInputBorder(
            borderSide: BorderSide.none,
//              borderRadius: BorderRadius.circular(20)
          ),
        ),
      )
  1. 设置decoration属性,在InputDecoration中设置contentPadding: EdgeInsets.all(0),。
  2. 在InputDecoration中设置border属性,不能直接设置InputBorder.none,否则还是不能居中。

二、项目使用window.physicalSize和设定尺寸作比来做适配,奇怪的某些界面偶现的错乱问题

解决方案:(我的是由于项目中使用了隐藏导航栏await SystemChrome.setEnabledSystemUIOverlays([]);的原因,可能还有其他的因素会影响到window.physicalSize的获取计算问题),

void main() async {
  return SentryUtil.wrap(() async {
    WidgetsFlutterBinding.ensureInitialized();
    await SystemChrome.setPreferredOrientations(
        [DeviceOrientation.landscapeLeft, DeviceOrientation.landscapeRight]);
    if (Platform.isIOS) {
      await ScreenRotationiOS.changeScreenOrientation(
          DeviceOrientationMask.Landscape);
    }
    Devices.init(width: 1080, height: 810);
    runApp(MyApp(
      appRoutes: routes,
      home: HomeScreen(),
    ));
    //这个需要放置在runApp后,不影响项目内部的window.physicalSize的获取
    await SystemChrome.setEnabledSystemUIOverlays([]);
  }, dsn: kDebugMode ? null : sentryDsn);
}

 //这个需要放置在runApp后,不影响项目内部的window.physicalSize的获取
    await SystemChrome.setEnabledSystemUIOverlays([]);

三、点击空白触发取消键盘

FocusScope.of(context).requestFocus(FocusNode());

四、软键盘把界面底部顶起,不让界面底部自动升起

Scaffold(
        resizeToAvoidBottomPadding: false,
        )

五、合并多个流做为一个stream

//yaml引入依赖 async 
//使用StreamGroup.merge()
StreamBuilder(
            stream: StreamGroup.merge(_streams),
            builder:....,)

六、flutter在用??的时候要小心,

 下面这两个结果返回是不一样的哦,只有dataValue是null或者0的时候返回结果才是一样的!!

(dataValue ?? 0 / 60)
//和
((dataValue ?? 0) / 60)

七、base64转为图片保存本地或者转为unit8list

class FileUtil {
 
  static Future<String> createFileFromString(String base64Str) async {
    Uint8List bytes = base64.decode(base64Str);
    String dir = (await getApplicationDocumentsDirectory()).path;
    File file = File("$dir/" + DateTime.now().millisecondsSinceEpoch.toString() + ".png");
    await file.writeAsBytes(bytes);
    return file.path;
  }
 
}

八、flutter之前的版本是2.2.3,升级到下一版本2.5.0之后出现之前的textfield基本组件使用报错异常问题:以及对应的修改调整如下:

 九、clipper参数定义裁剪规则说明

十、多级for循环,里面的beak打破的是最小的for循环么?还是所有的for循环。

十一、Flutter路由里面用routename相同的两个,不相邻。进入和退出第二个相同routename的页面路由记录和页面显示如何?

 home ->MultiPageOne->MultiPageTwo(1)->MultiPageThree->MultiPageTwo(2)->MultiPageFour

1.返回到MultiPageTwo(2)可以pop,可以poputil通过之前的路由跳转的route.settings.name == MultiPageTwo.routeName。

Navigator.popUntil(context, (route) {
            return route.settings.name == MultiPageTwo.routeName;
          }),

2.返回到MultiPageTwo(1),还需要通过前面的settings.arguments参数加上做限制。

Navigator.popUntil(context, (route) {
            
            return route.settings.name == MultiPageTwo.routeName &&
                route.settings.arguments == MultiPageOne.routeName;
          })

十二、Border是在container的外层还是在内层,还是一半内层一般外层。

Container(
                width: 60,
                height: 60,
                color: Colors.red,
                clipBehavior: Clip.none,
                alignment: Alignment.center,
                child: Container(
                  width: 56,
                  height: 56,
                  clipBehavior: Clip.none,
                  decoration: BoxDecoration(
                    border: Border.all(
                        width: 10, color: Colors.orange.withOpacity(0.5)),
                    color: Colors.cyan.withOpacity(0.5),
                  ),
                ),
              )

看结果是在container的内层

十三、 flutter执行帧动画,使用Image.asset(),来加载(尤其是资源多或者大的图片),动画卡顿。

可使用Image(),通过ImageProvider来将资源提前加入的方式操作,可解。

 AnimatedBuilder(
                  animation: controller.xingxAnimation,
                  builder: (context, child) {
                    var index = controller.xingxAnimation.value.round();
                    return Image(
//controller.girlImagesProviders是帧动画的所有图片的ImageProvider的数组,
                      image: controller.girlImagesProviders[index],
                      width: 306.ratio,
                      height: 396.ratio,
//gaplessPlayback默认false,设置为true,可避免切换加载间的闪动(加载中的显示模式)
                      gaplessPlayback: true,
                    );
                  },
                ),

十四、column中第一行有一个tab选择器,结果在iOS设备上面无法点击。下面的其他元素可以点击,查看图层没有遮挡,手势也正确使用。

经查看,发现是最外层页面根布局为Scaffold,其中加载的列表根布局也是Scaffold,导致了这个问题的出现。(解决方法:删除子元素的scaffold使用)

保证Scaffold仅在最外层,避免嵌套。

根本原因scaffold内部根据平台时iOS和macos有一个手势丢弃处理:

所以解决方案可以有三种:

1.在父组件外面套一层SafeArea(这样顶部会有边距,不是我想要的)

2.子组件不使用Scaffold(但同时也会失去floatbutton属性)

3.子组件Scaffold外层套一个MediaQuery.removePadding,把顶部空间移除掉

MediaQuery.removePadding(
  context: context,
  removeTop: true,
  child: Scaffold(
    backgroundColor: Colors.white,
    floatingActionButton: _floatingBtn(),
    body: _initSubviews(),
  ),
)

十五、

Flutter 开发中踩坑笔记总汇 本篇主要是收集汇总开发过程中遇到的小困惑,都是些比较常见的问题。后续开发中遇到,也会持续更新在这里。 阅读详情

相关推荐

Flutter开发百度地图,踩坑无数,保姆级教程(1)

最近在用flutter开发百度地图,踩坑无数,可以说把能踩的坑都踩了一遍,特此记录下辛酸经历。官网里面把基本都把步骤写了,但是里面有很多不明确的点。刚接触到的人可能会不知道某些文件具体添加到哪里,代码添加也有可能出现问题。下面我将安装官网的例程步骤,一步一步进行配置。配置完成之后,一定是可以完美运行的。 一、引入flutter插件 二、 新建一个自定义的Application 三、混淆配置 四、AK配置(秘钥配置) 五、显示地图 六、最终效果图 遇到的其他问题 总结

o__o__o__o的博客 1万+

Flutter入门系列(四)---Flutter图片缓存

Flutter图片缓存 | Image.network源码分析 原创:郭海生京东技术 原文地址:https://mp.weixin.qq.com/s/W5iu3VsNuvIygFbKM-giqA 随着手机设备硬件水平的飞速发展,用户对于图片的显示要求也越来越高,稍微处理不好就会容易造成内存溢出等问题。所以我们在使用Image的时候,建立一个图片缓存机制已经是一个常态。Android目...

chichengjunma的专栏 2万+

Flutter - 接入踩坑

Flutter - 接入踩坑 最近在研究 Flutter ,根据官网的教程,创建了项目后,打开了 Android 模拟器,启动项目。App 安装成功后,报错如下: Error connecting to the service protocol: failed to connect to http://127.0.0.1:1029/89AGRYqn_pA=/ 根据报错的上下文提示,我猜 Flutter 可能使用 WebSocket 协议来双向传输数据,之前在做 Java Web 的时候,学习过一点 Web

我的博客 6861

flutter开发解决实际问题之加载帧动画开始时动画闪烁

在写下拉刷新的时候,进入页面显示刷新动画,但是动画开始时图片总是会闪烁,怀疑以下几点原因; 1、刷新控件刷新状态切换导致; 2、动画图片资源过少。

xiaomi_0的博客 2603

初次接触flutter 从安装flutter到配置环境再到第一次运行案例的过程及踩的各种坑

使用镜像 由于在国内访问Flutter有时可能会受到限制,Flutter官方为中国开发者搭建了临时镜像,大家可以将如下环境变量加入到用户环境变量中: export PUB_HOSTED_URL=https://pub.flutter-io.cn export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn 不过建议手动添加环境变量到用...

ice_skyofstars的博客 6072

Flutter开发-踩坑之旅

Flutter 版本切换 Flutter版本更新很快,某方面也说明Flutter不够稳定。一些时候我们Flutter更新到最新版本,项目却由于Flutter的BUG无法正常运行。这时候就需要将Flutter的版本退回。 首先在Flutter的GitHub上查看可切换的版本: 在命令行下切换到flutter安装目录,通过git命令切换版本,如: git checkout v1.10.5 已碰到的...

deathgoy的博客 4600

Flutter项目打包步骤及踩坑

Android Studio运行占用的资源比较大,所以一般代码直接在常用的编辑器上写就行,多数人推荐使用VS Code,但个人实测VS Code不如IDEA,有时候要按照内容搜索文件的时候,IDEA很容易就可以做到。选择Flutter版本的时候更多的是看Dart的版本,有些项目中指定了Dart版本的范围,太高版本的Dart可能用不了。中对项目编译最小SDK版本和所使用打包的SDK版本会有所规定,如果下载AS的时候没有下载对应的API,需要在。那边的错误,就需要检查上一步的环境变量是否设置了。

Zepore的博客 3221

Flutter基础篇(4)-- Flutter填坑全面总结

声明:本文是作者AWeiLoveAndroid原创,版权归作者AWeiLoveAndroid所有,侵权必究。如若转发,请注明作者和来源地址!未经授权,严禁私自转载! Flutter是一个新的跨平台开发的工具,博主也玩了一段时间,一步步的踩着坑摸石头过河,这其中受尽了各种各样的坑,各种谷歌,stackoverflow,Flutter官网等查资料,然而有些问题还是不能及时解决,于是就自己尝试着慢慢的...

lzw的专栏 1435

Flutter安装踩坑记录

flutter安装以及安装过程中的报错汇总

m38420823的博客 2657

flutter踩坑总结

关于更新旧版环境:必做:Flutter开发环境配置踩坑之cmdline-tools component is missing。应为flutter开发需要加上他andstu最好是卸载安装新版,旧版直接升级出问题flutter sdk 也是删了重新下代码覆盖。下面的问题总是提示JDK没找到,是新版2023andstu的问题可以通过当我将安卓工作室从海豚更新到电鳗时,我遇到了这个问题。我相信修补过程可能导致 jre 目录中的 java 捆绑包被删除。这就是我解决它的方式。

cs778877的博客 789

基于ESP32-C3的物联网硬件设计:从免费工具链到PCB打样全流程实战

在物联网和嵌入式开发领域,硬件设计是连接软件逻辑与物理世界的关键环节。其核心原理在于通过电路设计将微控制器、传感器、通信模块等电子元件有机整合,实现特定功能。掌握硬件设计能力的技术价值在于能够自主实现产品原型,优化成本与性能,并深入理解系统底层运作。常见的应用场景包括智能家居节点、环境监测设备、工业传感终端等。本文以热门的ESP32-C3 RISC-V物联网芯片和广泛使用的KiCad免费EDA工具为例,详细解析了从核心器件选型、射频电路布局、PCB设计规则到Gerber文件生产的完整流程,并分享了在嘉立创平

weixin_30918633的博客 333

Flutter环境搭建踩坑集锦

flutter安装简略说明,顺便贴了JDK和Android环境配置

u012505629的博客 1741

万物皆可GAN ---普通GAN, pix2pix, CycleGAN和pix2pixHD的比较以及演变过程

普通GAN, pix2pix, CycleGAN和pix2pixHD的原理、比较以及演变过程

m0_61985580的博客 3724

FLutter 踩坑笔记

FLutter 踩坑笔记 Android 集成部分 Flutter 编写部分 MaterialButton RaisedButton 控件内部与child之间存在padding ,没有属性可以去掉。 使用最新版sdk(1.22.0 以及以上)中的TextButton 在Button 外面使用SizeBox等可以设置size的控件,设置size可以缩减 padding 在 State中声明的Color 类型的属性,必须赋值,不然会报错。 在 main.dart 中 使用 runZonedGuarded

genmenu的博客 672

机器学习-02 模型的评估与选择

2.1 误差与过拟合 我们将学习器对样本的实际预测结果与样本的真实值之间的差异成为:误差(error)。定义: 在训练集上的误差称为训练误差(training error)或经验误差(empirical error)。 在测试集上的误差称为测试误差(test error)。 学习器在所有新样本上的误差称为泛化误差(generalization error)。 显然,我们希望得到的是在新样本上表现得很好的学习器,即泛化误差小的学习器。因此,我们应该让学习器尽可能地从训练集中学出普适性的“一般特征”,这

一个小白 1706

CISSP/CCSP证书到手后别松懈!保姆级维持攻略:CPE积分怎么攒?年费怎么交?

本文为CISSP/CCSP持证者提供详细的维持认证攻略,重点介绍如何高效积累CPE积分和避免年费缴纳中的常见问题。通过免费与付费资源结合的策略,帮助持证者轻松完成年度认证要求,同时利用认证创造职业价值。

weixin_30859423的博客 417

flutter踩坑记录(三)-- 项目打包

flutter踩坑记录目录 flutter踩坑记录(一)--项目准备阶段 https://blog.youkuaiyun.com/hjr365708064/article/details/95454939 flutter踩坑记录(二)--基本使用及原生flutter交互篇https://blog.youkuaiyun.com/hjr365708064/article/details/95459151 经过前...

hjr365708064的博客 2345

SAP中贸易伙伴的应用原理简析

公司也称为贸易伙伴,是出具合并报表的组织单位,可以为客户和供应商分配公司(贸易伙伴),用于识别集团内关闻公司间的业务往来,在编制合并报表时进行往来账务的计算处理。 如下图某贸易伙伴公司(关联方名称G0059)在我方公司的SAP系统中有多重身份(即是供应商,又是客户)。那么在我方公司SAP系统中建立起公司(贸易伙伴),并关联到供应商和客户主数据中。之后,就可以通过G0059这个贸易伙伴名称来识别与该贸易伙伴间的往来业务。 相应的配置设定如下: 定义公司(贸易伙伴或关联方) 会计凭证中会

专注SAP应用技术文章写作,致力于拉近用户与系统间的距离; 9817

Chord的flutter踩坑小笔记之flutter安装

最近一直在看flutter,写这个的目的是为了备忘,以后免得再踩同样的坑里。

Chord.P的博客 213

SAP S/4HANA 中 RAP 业务对象接口的消费模式

本文探讨了SAP S/4HANA中RAP业务对象接口的消费模式,重点介绍了通过EML直接调用和CDS投影两种Clean Core开发路径。文章分析了BO Interface作为稳定契约的价值,并提供了BAdI集成、OData服务发布等实际场景案例,同时对比了OData V2/V4的技术选型考量,最后强调了ADT向导使用中的DCL权限注意事项。全文旨在帮助开发者构建升级友好的业务对象消费方案。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 758

零倾覆力矩点(ZMP)

从形式上讲,ZMP 指的是空间中相对于一个平面(通常是地平面)抵消接触力矩的点的集合。这个集合实际上是一个轴,而不是一个点,但为了方便起见,让我们按照传统的推导方法来计算地面平面上的 ZMP。这一推导从任何多刚体系统的牛顿-欧拉运动方程开始:其中,为机器人的总质量,为重力矢量,为系统的重心,为加速度,为固定点的角动量变化率。在右侧,表示净接触扭矩,即施加到机器人上的所有接触扭矩之和,坐标取自质心 (COM)。

机器人控制与仿真应用 2372

Flutter 开发踩坑记录(干货总结)

Flutter 太好学了!BUG 真的太少了!issues 只有 5000 多!也就那么亿点!简单得我都枯了!毕竟每次遇到问题,???????? 都是直接去找群里的法佬、低调、Alex ...

Android技术之家 7715

刷机维修进阶教程-----oppo机型 一加 7pro 修复基带 更改参数 实例详细步骤解析

通过课程基本可以了解 1-----oppo机型与一加7机型更改参数的具体步骤解析 2------了解oppo机型开启diag端口的具体步骤 3-----了解一加7这些机型改参数常识 。可以借鉴参考用于其他机型 4-----了解手机基带分区与基带辅助分区的作用 5-----机型参数能读取到 但不能写这种情况如何操作

小马哥的专栏 1478

Flutter 开发踩坑记录

Flutter 太好学了!BUG 真的太少了! issues 只有 5000 多!也就那么亿点!简单得我都枯了!毕竟每次遇到问题,???????? 都是直接去找群里的法佬、低调、Alex 等几位大佬(????管理,此处小声哔哔)来解决,只要有大佬在,问题也就不大。虽然法佬经常说要学会看源码,但道理大家其实都懂,看源码也就图一乐,真正有 BUG 还是得找法佬。 不多哔哔,单写一篇文章,先记录它一手。本文记录 ???????? 在 Flutter 开发中遇到的一些 BUG(as design),避免遗忘,如果

大灰狼的小绵羊哥哥的博客 3619

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Flutter开发环境配置以及踩坑

前言 移动端原生开发,在前几年很火,当时供不应求,虽然当时有H5可以替代部分功能,对原生还是造成不了很大威胁,后来出了Ionic,React Native,以及前段时间的快应用,小程序,又有这个谷歌的Flutter,原生程序员,有必要学习学习新技术了。之前接触过Ionic,RN,小程序,因为平时公司还属于比较传统的,对这些新技术没有使用,所以也只是学习学习。 这次的Flutter,和之...

jifashihan的博客 4万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Flutter+VSCode+SDK踩坑合集

Flutter+VSCode+SDK踩坑合集安卓环境搭建flutter环境搭建VSCode + 夜神模拟器问题时间 最近心血来潮,响应程序员应该不停学习的号召,准备试水一下目前巨火的移动端开发框架 flutter,技术比较新,国内上手的公司也不多所以在开发体验这一块,至少是错误处理这方面问题体验不是很好… 这篇博客主要讲一下环境构建方面的问题,也记录一下我的一些踩坑到吐血的经历。 安卓环境搭建 f...

qq_39373532的博客 6053

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: 运行Flutter项目遇到的问题以及解决方案
下一篇: Flutter ListView获取页面显示的第一个和最后一个item、点击item自动偏移居中ListView
Cao_Shixin攻城狮
博客等级 码龄10年 710粉丝 102原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值