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

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

由于篇幅有限,本文将从静态代码检测、空安全、单元测试这几个部分来介绍Trip.com在Flutter业务迭代中提高代码质量做的一些努力。...一套完整的单元测试将帮助确保应用在发布之前正确执行,特别是在目前一周一版的版本迭代下,很容易漏测一个错误的改动,更何况Flutter对热修还不是很友好,所以单元测试显得更为重要。...3.2 Flutter单元测试流程 一个完整的单元测试流程有以下几步:setUp -> groupSetUp -> test -> groupTearDown ->tearDown。...这里我们摘取了Mockito Wiki中的一些建议,所以在项目中尽量会避免使用Mockito来进行Mock,但不能否认的是,在某些场景下Mockito会很大的降低单元测试编写的复杂程度。...ViewModel的单元测试覆盖率也已经高于90%,在版本迭代过程中,也通过单元测试发现了几个错误。 以上总结了Trip.com在Flutter空安全、静态代码扫描、单元测试上做的一些探索。

2.1K30

Flutter》-- 2.Windows系统下搭建开发环境

2.3.2 配置 将下载的压缩文件解压到某个位置(看作是安装位置),然后将该位置的路径配置到环境变量中。 然后在cmd命令窗口中执行“flutter doctor”命令对环境进行初始化。...默认情况下,使用flutter run命令运行程序时就是使用的Debug模式。 Release模式又叫发布模式,主要用在应用发布过程中,只能在物理设备上运行,不能在模拟器上运行。...使用flutter run--release命令运行程序时就是使用的Release模式。 Profile模式又叫分析模式,主要用于应用性能分析,只能在物理设备上运行,不能在模拟器上运行。...2.10.3 创建一个Flutter项目 选择 View -> Command Palette... ,在弹出中选择Flutter: New Application Project。...最后在弹出中修改项目名称,按回车创建项目。 2.10.4 运行项目 运行前需打开模拟器。 可以在终端输入flutter run命令运行项目。

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

Vue核心与实践(二)

1.讲解内容: 常见的表单元素都可以用 v-model 绑定关联 → 快速 获取 或 设置 表单元素的值 它会根据 控件类型 自动选取 正确的方法 来更新元素 输入 input:text ——...2.语法 声明在 computed 配置项中,一个计算属性对应一个函数 使用起来和普通属性一样使用 {{ 计算属性名}} 3.注意 computed配置项和data配置项是同级的 computed中的计算属性虽然是函数的写法...写在methods配置项中 2....4.使用计算属性computed 计算总分和平均分的值 十一、watch侦听器(监视器) 1.作用: ​ 监视数据变化,执行一些业务逻辑或异步操作 2.语法: watch同样声明在跟data同级的配置项中...右侧翻译内容要时时变化 当下拉中的语言发生变化的时候 右侧翻译的内容依然要时时变化 如果文本中有默认值的话要立即翻译 3.代码实现 const app = new

4310

【Vue】day02-Vue基础入门

1.讲解内容: 常见的表单元素都可以用 v-model 绑定关联 → 快速 获取 或 设置 表单元素的值 它会根据 控件类型 自动选取 正确的方法 来更新元素 输入 input:text ——...2.语法 声明在 computed 配置项中,一个计算属性对应一个函数 使用起来和普通属性一样使用 {{ 计算属性名}} 3.注意 computed配置项和data配置项是同级的 computed...中的计算属性虽然是函数的写法,但他依然是个属性 computed中的计算属性不能和data中的属性同名 使用computed中的计算属性和使用data中的属性是一样的用法 computed...4.使用计算属性computed 计算总分和平均分的值 十一、watch侦听器(监视器) 1.作用: 监视数据变化,执行一些业务逻辑或异步操作 2.语法: watch同样声明在跟data同级的配置项中...右侧翻译内容要时时变化 当下拉中的语言发生变化的时候 右侧翻译的内容依然要时时变化 如果文本中有默认值的话要立即翻译 3.代码实现 const app

21130

Flutter开发桌面端程序

前言 先说结论,目前Flutter不能作为生成环境的桌面开发技术,这里仅作为尝鲜来学习。...比如在Windows上目前还不支持发布模式,仅支持调试模式,这意味着编出来的桌面程序,始终有一个黑控制台,且不断的输出日志。...环境配置 Flutter环境 安装Flutter 下载Flutter SDK 解压,比如我放到了D:\Tools\flutter目录 设置环境变量,添加 D:\Tools\flutter\bin...安装和环境配置 go get -u github.com/go-flutter-desktop/hover 稍等会hover就会出现在GOPATH下 即go语言的SDK下面的bin文件夹下 进入项目下初始化...目前直接将Flutter App打包为桌面端程序,仍然会存在一些可能的兼容性问题 另外go-flutter-desktop项目还不支持发布模式,仅支持调试模式,这意味着编出来的桌面程序,始终有一个黑控制台

2.5K10

FlutterFlutter 拍照示例 ( Android 应用兼容 Android X | Gradle 版本号 | Gradle 插件版本号 | Android X 支持 | SDK 版本 )

文章目录 一、Gradle 及 Gradle 插件版本 二、支持 AndroidX 配置 三、设置 Android 编译目标版本 四、相关依赖库修改 Flutter 插件 " image_picker...及 Gradle 插件版本 ---- 确保使用的 Gradle 版本是 4.10.2 以上的版本 , Gradle 插件版本是 3.3.0 以上的 , 这两个版本号有一定的对应关系 , 不能随意设置...; Gradle 版本号设置 : Flutter 源码根目录/android/gradle/wrapper/gradle-wrapper.properties 配置文件中设置 Gradle 版本号 ;...Settings " 选项 ; 在弹出的对话中的 Project 选项卡下设置 Gradle 和 Gradle 插件版本号 , Gradle 版本号大于等于 4.10.2 Gradle 插件版本号大于等于...---- Flutter 源码根目录/android/gradle.properties 配置文件中 , 添加如下两个配置 ; android.useAndroidX=true android.enableJetifier

75610

Flutter真香攻略】(二)环境搭建

PUB_HOSTED_URL=https://pub.flutter-io.cn export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn...注意: 此镜像为临时镜像,并不能保证一直可用,读者可以参考详情请参考 Using Flutter in China 以获得有关镜像服务器的最新动态。...PATH 这样就可以直接免路径执行flutter命令,这时执行flutter doctor命令检测缺失环境: flutter doctor 按建议提示执行命令就基本完成环境搭建了: ?...image.png 如果到了一段时间想升级flutter,也是很简单,一句话的事: flutter upgrade 三、开发工具配置(可选) 其实上述两步基本完成环境搭建,平常用命令行执行就可以了,当然...“工欲善其事,必先利其器”,配置好开发工具的flutter插件,能较方便完成flutter开发,在这里我选用的是vscode,所以在插件搜索,打入“flutter ”, 在搜索结果列表中选择 【Flutter

42130

Flutter完整开发实战详解(二十、 Android PlatformView 和键盘问题)

文章汇总地址: Flutter 完整实战实战系列文章专栏 Flutter 番外的世界系列文章专栏 1、为什么有 PlatformView 因为 Flutter 的实现在概念上类似于 Android...这意味着默认情况下 Flutter UI 永远不会包含 Android Native 的控件,也就是说无法在 Flutter 中集成如 WebView 或 MapView 这些常用的控件。...通过从 VirtualDisplay 输出中获取纹理,并将其和 Flutter 原有的 UI 渲染树混合,使得 Flutter 可以在自己的 Flutter Widget tree 中以图形方式插入 Android...设置一个代理 View ,该 View 与 WebView 在相同的线程上侦听输入连接。...某些文本功能仍然不可用,例如:“复制”和“共享”对话当前不可用。

13.3K20

Flutter》-- 4.Flutter组件基础

Flutter中Widget不仅可以表示UI元素,也可以布局元素、动画、装饰效果。 Widget不是最终显示在设备屏幕上的显示元素,而是一个描述显示元素的配置数据。...didUpdateWidget():当组件的配置发生变化或执行热重载时,系统会回调该函数更新视图。...Flutter默认包含了一套Materail Design的字体图标,使用前需要在pubspec.yaml文件中进行如下配置: ... flutter: Uses-material-design:...常见属性: controller:输入控制器,通过它可以获取和设置输入的内容以及监听文本内容的改变。...onEditingComplete:输入输入完成时触发,不会返回输入的内容。 onSubmitted:输入输入完成时触发,会返回输入的内容。

12.4K30

【错误记录】Flutter 报错 ( Dart SDK is not configured )

--- 从 GitHub 中下载源码后 , 在界面中报错 Dart SDK is not configured 如下图 : 二、 问题分析 ---- 按照下面的路径 , 打开 Dart 设置对话...设置对话 ; 菜单栏 / File / Setting / Languages & Frameworks / Flutter 可以看到 Fluttre SDK 没有相应配置 ; 三、 解决方案 -...--- 这里只需要配置 Flutter 的路径即可 , 不需要对 Dart 的配置进行修改 , 配置好了 Fluttre 界面的的 SDK 路径 , Dart 会自动添加相关的依赖 ; 按照下面的路径..., 打开 Flutter 设置对话 ; 菜单栏 / File / Setting / Languages & Frameworks / Flutter 在 SDK 一栏选择 Flutter SDK 路径..., 如果能加载出下面的 Flutter 版本号 , 说明配置成功 ; 按照上述配置好以后 , 先点击 Apply 按钮 , 然后点击 OK 按钮 , Dart 会自动配置好 , 不用去管 Dart

91320

Flutter&Flame 游戏 - 伍】 Canvas 参上 | 角色的血条

绘制血条 既然怪兽已经出现了,血条自然不能少。...如下,在 Monster 类中简单画个白红血的条:代码见 【05/02】 下面是绘制的简单逻辑,其中主要逻辑的是计算外和血条的两个 Rect 矩形对象。...外的白条矩形通过中心点加宽高来确定的,因为这里希望血条居中,且可以可以通过比率 widthRadio 控制长度。在白条矩形确定之后,左下角的点就能确定,此时通过两点确定矩形会比较方便。...其中 initPaint 方法中,用于初始化一些配置参数用于自定义,比如血条颜色、外颜色、生命上限等。...这里只是简单演示,满足最基本的需求,你也可以提供一些其他的配置参数,或者定义一个配置信息类,简化传参流程。 在这里只要覆写 render 方法,执行刚才写的绘制逻辑即可。

52630

Flutter中的常见表单组件

Flutter中,常见的表单组件有TextField单行文本、TextField多行文本、CheckBox、Radio、Switch、CheckBoxListTile、RadioListTile、...,占位文字;border,配置文本边框,一般设置为 OutlineInputBorder 类型;labelText,label的名称;labelStyle,配置label的样式。...",//配置了该属性,就会呈现一个特殊的效果,可以见示意图 icon: Icon(Icons.people),//在文本前面配置图标 ),...); }, child: Text("获取输入中的文字"), ) 我们再想一下,如何通过不使用配置controller来获取到输入中的文字呢...我们可以通过配置 TextField 的 onChanged 回调来监听输入中文字的实时变化: import 'package:flutter/material.dart'; class HomePage

4.9K20

使用flutter基础入门

:https://flutter.dev/docs/development/tools/sdk/releases#windows 配置flutter镜像(windows环境变量添加如下变量) PUB_HOSTED_URL...devices //查看设备编码(第二个字段) flutter run -d chrome //web调试 没有响应重启vscode launch.json文件配置 { "name": "...": [ "-d", "chrome" ] } vscode下方切换设备,不能切换,flutter run后只能附加了 调试flutter,打开vscode中的flutter...的devtool widget Widget build(BuildContext context)函数,通过json配置构建ui StatefulWidget有状态窗口(多一个绑定前端的变量)、StatelessWidget...pop页面导航,Navigator.pushNamed跳转到命名路由 生成器 类别 关键字 返回类型 搭档 多元素同步 sync* Iterable yield、yield*(函数生成器,后面跟函数) 单元素异步

1.1K20

Flutter 中获取地理位置

让我们快速浏览一下我们今天正在构建的用于收集位置数据的内容: Flutter 地理定位演示 本文将带您了解两个最流行且易于使用的 Flutter 地理定位包。...在这种情况下不会显示对话requestPermission() 如果状态为 ,我们可以通过调用显示请求位置权限的系统提示。...the LocationData final bool isMock; // Is the location currently mocked } 您还可以通过添加onLocationChanged侦听器在用户位置发生变化时监听位置更新来获得连续回调...为此,我们将使用另一个惊人的 Flutter 包:?geocode。...位置权限对话提示中未显示始终允许的 Android 11 选项。用户必须从应用程序设置中手动启用它 用户可能在 iOS 上永远拒绝定位,因此不会显示要求定位权限的本机提示。

3.1K10

《深入浅出Dart》Widget和布局

相比之下,HTML/CSS使用基于盒模型的布局,其中元素通过模型和定位属性进行布局。 Widget:Flutter用户界面的构建块 在Flutter中,一切皆是Widget。...Widgets是Flutter用户界面的基本构建块,用于描述应用程序在给定其当前配置和状态的情况下应该如何显示。通过组合不同的Widget,我们可以构建出复杂、美观的用户界面。...Flutter中的Widget分为两类: StatelessWidget StatelessWidget是不可变的,一旦创建就不能更改。它们通常用于表示那些没有状态改变的静态UI元素。...常见的有状态Widget包括按钮、输入、列表等。...要了解更多关于布局的内容,你可以参考Flutter布局指南。 结论 通过理解Widget和常用布局组件,你已经迈出了构建Flutter应用程序的第一步。

21520

Flutter 体验记

,所以按照流程来先配置下用户环境变量,临时镜像不能保证一直可用,参考 Using Flutter in China 获取最新动态 打开访达 -> 用户名 -> .bash_profile,然后添加: export...下载 然后解压安装包,添加flutter相关工具到path中 export PATH=/Users/yane/Library/Android/flutter/bin:$PATH 配置 运行 flutter...体验 Flutter 环境配置完毕,我这里选择 Android Studio 作为编辑器。首先安装两插件:Flutter 插件和 Dart 插件。...flutter_app create finish main.dart 点击运行报错: 报红了 后来搞了半天都是各种报红错误,总是拉不下来什么,最终最终还是搞定了,各种升级啥的,贴上配置,android...hello world 运行效果 ---- 『附一句』 为了不每次在命令里面输入 source ~/.bash_profile,让.bash_profile 生效,打开 .zshrc 文件,在末尾处添加代码

1.1K20

利用flutter_downloader插件在Flutter中实现文件下载

该插件的配置过程也是挺复杂的,好在文档(https://pub.flutter-io.cn/packages/flutter_downloader)写的还算明白。...插件配置 iOS端配置 启用 background mode 想要执行这一步,我们在Xcode中打开该项目的 iOS module,如下图所示: ?...说完了iOS端的配置,我们再来说下Android端的配置。...设置下载提示信息 这里以对话和进度条的形式展现下载过程,我们使用到了 progress_dialog这个插件,可以很方便的显示出一个下载对话,地址是https://pub.flutter-io.cn...有了展示的对话,下一步自然就是获取下载进度了,好在 flutter_downloader已经给我们提供了一个下载回调,我们可以在下面的这个回调函数中更新我们的UI。

5.9K30

Flutter】开发 Flutter 包和插件 ( Flutter 包和插件简介 | 创建 Flutter 插件 | 创建 Dart 包 )

中可视化创建 2、命令行创建 一、Flutter 包和插件简介 ---- " Flutter 包 " 包含 pubspec.yaml 和 lib 代码目录 ; pubspec.yaml 配置文件 : 配置各种依赖...插件 , 这也是开发 Flutter 的前提 ; 菜单栏选择 " Flie / Settings … " 弹出的如下对话中 , 选择 " Plugin " 选项 , 如下就是安装了 Flutter 和...Dart 插件 ; 在 菜单栏 选择 " File / New / New Flutter Project… " 选项 ; 在弹出的如下对话中 , 选择 " Flutter Plugin " 就是创建...; 在弹出的如下对话中 , 选择 " Flutter Package" 就是创建 Flutter 包 ; 输入 Flutter 包名称 ; 点击 " More Settings " 选项 ,...Dart 功能 ; pubspec.yaml : 配置了依赖 , 以及相关说明 ; Dart 包是没有 android 和 ios 原生代码的 ; 2、命令行创建 执行如下命令 , 创建 名称是 flutter_package

1.5K10

Flutter TolyUI 框架#02 | Popover 与 Tooltip 设计

提供 Flutter 中不存在的常用交互组件。 [2]. 对于 Flutter 已有但支持比较弱的组件, TolyUI 将基于源码,进行改造,以此拓展功能。...1.Tooltip 设计动机 Flutter 虽然内置了 Tooltip 组件,但它只能进行简单展示提示信息,效果如下: 这种视觉效果并不能满足通用场景:比如提示的对齐方式,或者气泡包裹、自适应边界、...样式设置 TolyTooltip 提供了很多可配置的选项,比如背景色、填充模式等,让使用者可以更灵活地展示信息。另外通过设置最大高度,可以在弹高度过高时允许滑动。...比如下面微信和飞书中展开的面板,严格意义上来说不能称之为 菜单,但也不是提示信息。...另外,和 TolytTooltip 一样,也可以通过 decorationConfig 来配置气泡的装饰效果: TolyPopover( placement: Placement.bottomEnd

17410

Flutter Platform Channels(二)

the method channel API level by extending the example above with a fallible baz method: 您可以使用任何方法编解码器配置...在平台端,stream handler有两个方法onListen和onCancel,只要Dart流的侦听器数分别从0变为1和或者从1变为0,就会调用它们。 这可能会发生多次。...event channel 配置有方法编解码器,允许我们区分成功和失败结果,这和method channel区分成功和失败是一样的。...当为使用platform channels的Dart代码编写单元测试时,一个下意识的反应可能是模拟channel对象,就像模拟网络连接一样。...单独使用单元测试无法实现这一点,因为你需要一个运行 platform channels 的真实应用程序来实际与平台通信。

2.8K00
领券