首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

干货 | Trip.com Flutter代码质量探索

由于篇幅有限,本文将从静态代码检测、安全、单元测试这几个部分来介绍Trip.com在Flutter业务迭代中提高代码质量做的一些努力。...call("2"); //ok 2.2 安全迁移 由于在Dart 2.12之前,我们便在项目中集成了Flutter,为了支持安全,首先得将项目迁移到Dart 2.12版本。...可能存在的问题 1)依赖不支持安全 只有在所有的依赖都支持安全的情况下,才可以在健全的安全下运行项目,所以需要保证所有依赖都支持安全,不过现在大部分第三方都是支持的。...安全迁移的推荐步骤 1)flutter pub outdated --mode=null-safety 保证所有都支持,flutter pub upgrade --null-safety 升级所有依赖到支持版本...以上总结了Trip.com在Flutter安全、静态代码扫描、单元测试上做的一些探索。如果对其中内容有更好的观点,欢迎在评论区留言,共同构建高质量的Flutter应用。

2.1K30
您找到你想要的搜索结果了吗?
是的
没有找到

(译)Dart2.12版本发布,可靠的安全,dart:ffi正式投入生产

1.Dart平台独有的功能 在我们详细研究可靠的安全和FFI之前,让我们讨论一下Dart平台如何将它们适合我们的目标。编程语言倾向于共享许多的功能。...可靠的安全性使类型系统更加强大,并实现了更好的性能。Dart FFI使您可以使用现有的C以实现更好的可移植性,并可以选择对性能要求很高的任务使用经过高度调整的C代码。...似乎很容易孤立地发现错误,但实际上,即使是经过严格的代码审查过程(如Flutter主分支中所用的代码),这种代码也会无时无刻不在出现。出于安全考虑,静态分析会立即捕获问题。...aNullableInt = null; 安全性的实现是健壮的,具有丰富的静态流分析功能,使的使用可类型的工作变得更加容易。...这样,你决定到时是正确的,安全是一项可选功能:你可以用Dart2.12,而无需被迫启用安全。您甚至可以依赖已经启用了安全性的软件包,无论您的应用程序或软件包是否启用了安全性。

2.6K20

【老孟FlutterFlutter 2 新增的功能

Sound Null Safety 安全性是Dart语言的重要补充,它通过区分可类型和非可类型进一步增强了类型系统。这使开发人员能够防止null错误崩溃,这是应用程序崩溃的常见原因。...pub.dev软件包存储已经发布了1,000多个安全软件包,其中包括Dart,Flutter,Firebase和Material团队的数百个软件包。...功能称为Add-to-App,是在两个移动平台上重用Flutter代码同时仍保留现有本机代码的绝佳方法。但是,对于您中的那些人,我们有时会听到,不清楚如何将第一个屏幕集成到Flutter中。...图片发布 DartPad已针对Flutter 2更新 现在,您可以尝试使用Flutter的新的安全版本,而无需离开自己喜欢的浏览器。...他们分叉了Flutter团队最初开发的许多受欢迎的插件,并添加了null安全支持,对其他平台的支持和一整套全新的文档,以及开始修复flutter / plugins存储中的适当问题。

7.8K20

Flutter 2021年官方路线图

Null safety Flutter 将支持 Dart 的 sound null safety(安全),并将插件和软件包生态系统的迁移扩展到支持安全,包括Flutter团队直接维护的软件包和插件...Null safety 已经发布了 beta 版本,2021年将会迁移到稳定版本,特性有效的避免了指针异常,kotlin 和 swift 中都包含特性,如果以前接触过,基本没有学习成本。...然后我又仔仔细细的读了很多遍,发现并不是热更新,原文中有一个限定条件从商店(from the stores),版本的更新依然依赖应用商店,大概率前期只有 google 的应用商店支持功能。...特别是对于Web,随着我们不断证明Flutter可以在Web上提供高质量的体验,我们的重点将放在保真度和性能上,而不是新功能上。...新功能 在2020年,我们主要专注于修复错误,而在2021年,我们计划还添加重要的新功能。上面列出了一些。

1K10

(译)Dart 2.13 类型别名、改进FFI、优化性能、Docker镜像支持

安全更新 我们在3月的Dart 2.12版本中启动了声音无效安全性。安全性是Dart最新的主要生产力功能,旨在帮助您避免错误-一类通常很难发现的错误。...通过该发布,我们鼓励软件包发布者开始将pub.dev上的共享软件包迁移到安全性为。 我们非常高兴地看到采用null安全性的速度有多快!...有如此多的支持null安全的软件包,您很有可能开始迁移应用程序以使用null安全。第一步是用来dart pub outdated检查您的应用程序的依赖关系。有关详细信息,请参见《安全迁移指南》。...我们还更改了dart create和flutter create模板,以便现在默认情况下在新应用和程序包中启用null安全。 类型别名 类型别名是2.13语言的一项新功能。...我们目前正在定义两个标准的lints集,默认情况下,我们将在Dart和Flutter项目中应用这些lints集。我们希望在下一个稳定版本中默认启用功能

1.9K20

【AIGC】基于pgVector和LangChain构建RAG服务(RAG=pgVector + LangChain)

借助数据,尤其是那些支持向量功能的数据,如 Neon,我们可以使用 RAG 技术来帮助 LLM 向最终用户提供准确的答案。...对于检索过程,pgVector 使用其向量相似性索引功能来搜索查询向量与 Neon 数据中存储的向量之间的距离。...我们需要这些详细信息才能从我们的应用程序访问 Neon 项目并将其复制到安全文件中。有了这个,我们已经成功地为我们的 Flutter 应用程序创建了一个 Neon 数据。...因此,在接下来的章节中,我们将克隆一个 Flutter 模板,将模板连接到 Neon 数据,并添加在应用程序中实现 RAG 技术的功能。...syncfusion_flutter_pdf成功完成操作后,我们将为整个项目所需的所有服务创建一个抽象。

28500

Flutter 3.7更新详解

我们与整个 Flutter 社区们继续在 Flutter 3.7 中优化了框架,包括创建自定义菜单栏和层叠式菜单、更好的国际化工具支持、新的调试工具以及其他功能和特性等。...最后,我们 修复了 自 Flutter 迁移至健全的安全以来的一个问题,该问题影响了所有包含 itemBuilder 参数的滑动 widget (例如 ListView)。...在迁移至安全时,itemBuilder 的类型迁移至了 IndexedWidgetBuilder,即不允许返回 null,而在以前 null 可以用来代表列表已经到了底部等。...类似的方法同样应用到了 Flutter 引擎中,用于回收 dart:ui 原生对象的 隐式内存占用。 在我们的测试中,更改省去了 widget 创建 GPU 常驻图像构建帧时的同步 GC 工作。...,通过进一步的 分析发现,放弃对 macOS 10.13 的支持也不会造成太大影响,带来的收效却是可以帮助大幅简化代码

3.1K00

Flutter 旋转轮

在在本文中,我们将探讨 “Flutter 中的旋转轮”。我们还将在flutter应用程序中使用「flutter_spinwheel」包来实现带有自定义选项的「Spinwheel」演示程序。...自旋轮有一些功能: 自动播放(启用/禁用) 长按以暂停(启用/禁用) 尺寸调整 文字/图片支持 图像调整支持 顺时针和逆时针平移进行导航 触摸即可在先前平移的方向上导航 绘画定制以改变外观 回调功能通知选定的项目...「itemCount:「属性用于分配给」Spinwheel」类的菜单项数。应该在构造函数中处理它。 **shouldDrawBorder:**属性用于确定是否应绘制边框。...**hideOthers:**属性用于确定是否应绘制快门以隐藏除选定以外的所有选项。 **shutterPaint:**如果适用,属性用于绘制用于绘制快门的设置。此外,它是可定制的。...**onChanged:** 属性用于在每次更改选择时从微调器菜单返回所选值的回调。 「select」: 属性用于选择(突出显示)圆的扇区。范围是0(项目大小)。想象它就像一个数组。

8.7K20

Flutter 实战】文件系统目录

由于此功能仅在Android上可用,因此应在发出此函数调用之前确定当前操作系统。 在iOS上,功能会引发[UnsupportedError]异常,因为无法在应用程序的沙箱外部访问。...由于此功能仅在Android上可用,因此应在发出此函数调用之前确定当前操作系统。在iOS上,功能会抛出UnsupportedError,因为这是不可能的在应用程序的沙箱外部访问。...由于此功能仅在Android上可用,因此应在发出此函数调用之前确定当前操作系统。在iOS上,功能会抛出UnsupportedError,因为这是不可能的在应用程序的沙箱外部访问。...code_cache:目录存储 Flutter 相关代码和资源。 flutter_engine/skia:Flutter 渲染引擎。...内部存储的特点: 安全性,其他应用无法访问这些数据。 当应用卸载的时候,这些数据也会被删除,避免垃圾文件。 不需要申请额外权限。

2.7K10

Flutter混合开发详解

一个是Flutter和引擎,主要包含Flutter的Framework 和引擎;另一个是Flutter模块工程,即Flutter混合开发中的Flutter功能模块,主要包括Flutter工程lib...同时,相比普通的Flutter工程,Flutter模块工程的Android工程目录下多了一个Flutter目录,目录下的build.gradle配置就是我们构建aar时的打包配置。...flutter build apk --debug 命令的作用是将Flutter和引擎以及工程产物编译成一个aar包,上面命令编译的aar包是debug版本,如果需要构建release版本,只需要把命令中的...默认情况下,Flutter是不支持Bitcode的,Bitcode是一种iOS编译程序的中间代码,在原生iOS工程中集成Flutter需要禁用Bitcode。...Flutter模块调试 众所周知,Flutter的优势之一就是在开发过程中使用热重载功能来实现快速调试。

1.7K20

如何基于Flutter和Paddle Lite实现实时目标检测

这次我们就基于Flutter来开发一个实时目标检测程序,这也得益于Flutter支持访问iOS和Android上的原生系统功能和系统SDK。...因此你需要在MainActivity里面赋值: 禁用压缩 在生成APK的时候,我们的模型会被压缩,所以我们需要修改build.gradle配置文件来禁用assets文件夹的压缩。...由于Flutter中加入了进程安全机制,我们使用了一个MethodResultWrapper保证在主进程里面返回result。...这是因为Flutter引入了进程安全,不能直接在子进程里面返回result,需要在主进程里面返回,网上现在有很多解决办法,我们的也是来自GitHub。 2....Paddle Lite出现错误 一开始以为是官方的问题,但是自己手动编译一次就能解决。我已经内置了arm64的无问题的。 4.

2.2K20

Flutter 的分层式架构有什么优势

另外,从整体上来看比较明显的优势:结构清晰、易于维护、组织灵活、数据安全等。...在这里引擎会将底层的 C++ 代码包装成 Dart 代码,通过 dart:ui 暴露给 Flutter 框架层。该暴露了最底层的原语言,包括用于驱动输入、图形、和文本渲染的子系统的类。...因为我们用到的更高级的一些功能已经被拆分到不同的包当中了,例如例如 camera 和 webview 等。...我们也可以从官方的仓库中集成更多的来支撑具体业务,这也是为什么最开始会讲到 Flutter 分层式架构易于维护、组织灵活。...三是编译时的热加载(或者也可以叫热更新)也能全平台支持,可以说非常友好,从开发效率来看有热加载的 Flutter 比原生会更高一些。当然也有同学可能会问:拥有这种热更新能力的app会被应用商店禁用吗?

32830

Flutter 时间选择组件

Flutter 应用开发过程中,或多或少的都会涉及到时间选择器相关的内容。...不管,为了快速的进行开发我们可以选择一些第三方的组件,如flutter_custom_calendar,具有如下的功能: 支持公历,农历,节气,传统节日,常用节假日 日期范围设置,默认支持的最大日期范围为...1971.01-2055.12 禁用日期范围设置,比如想实现某范围的日期内可以点击,范围外的日期置灰 支持单选、多选模式,提供多选超过限制个数的回调和多选超过指定范围的回调。...文件,然后添加如下代码: import 'package:flutter/material.dart'; import 'package:flutter_custom_calendar/flutter_custom_calendar.dart...)), onTap: () { if(chooseDateStr==''){ Toast.show('选择日期不能为

3.5K30
领券