Skip to main content

Flutter QA

· 4 min read
Alan
Maintainer of the Blog

QA

flutter run

flutter run 卡在 Running Gradle task 'assembleDebug'...

执行flutter run -v查看卡在哪个步骤, 如果是卡在gradle环节, 尝试进入 android 目录执行 ./gradlew clean build .

Target of URI doesn't exist

Target of URI doesn't exist 'package:flutter/material.dart'

Visual Studio Code 里的dart代码导入flutter类库标红失败, 提示 Target of URI doesn't exist xxxxx, 这是因为flutter代码没有还原, 尝试在项目根目录执行 flutter pub get

flutter doctor

设置flutter检测Android sdk和Android studio的路径

flutter config --android-sdk="$HOME/Android/Sdk"
flutter config --android-studio-dir="/snap/android-studio/current/android-studio/"

Wrap 元素左对齐

Wrap 里的 children 默认是居中对齐, 可以借助使用Align设置成左对齐:

Align(
alignment: Alignment.topLeft,
child: Wrap(
// ...
)
)

来源: Flutter Wrap widget align: left inside ExpansionPanel, Align文档

组件增加点击触摸事件

给任意组件增加 onTap 事件监听, 可以使用 InkWell 或者 GestureDetector, 两者的区别在于 InkWell 是 material 组件, 会有material风格的特效, 而GestureDetector就是通用的增加手势操作的组件, 以下是示例:

// 使用 InkWell
InkWell(
child: Container(...),
onTap: () {
print("tapped on container");
},
)

// 使用 GestureDetector
GestureDetector(
onTap: () { print("Container was tapped"); },
child: Container(...),
)

GestureDetector(
onTap: () { print("Container was tapped"); },
child: Text("Hello world."),
)

来源: Flutter onTap method for Containers

笔记

Transform 的变换是应用在绘制阶段,而并不是应用在布局(layout)阶段,所以无论对子组件应用何种变化,其占用空间的大小和在屏幕上的位置都是固定不变的,因为这些是在布局阶段就确定的.

RotatedBoxTransform.rotate功能相似,它们都可以对子组件进行旋转变换,但是有一点不同: RotatedBox的变换是在layout阶段,会影响在子组件的位置和大小。

Flutter 中有两种布局模型:

  • 基于 RenderBox 的盒模型布局。
  • 基于 Sliver ( RenderSliver ) 按需加载列表布局。

Flutter 中的可滚动主要由三个角色组成: Scrollable、Viewport 和 Sliver:

  • Scrollable: 用于处理滑动手势,确定滑动偏移,滑动偏移变化时构建 Viewport 。
  • Viewport: 显示的视窗,即列表的可视区域;
  • Sliver: 视窗里显示的元素。

具体布局过程:

  • Scrollable 监听到用户滑动行为后,根据最新的滑动偏移构建 Viewport 。
  • Viewport 将当前视口信息和配置信息通过 SliverConstraints 传递给 Sliver。
  • Sliver 中对子组件(RenderBox)按需进行构建和布局,然后确认自身的位置、绘制等信息,保存在 geometry 中(一个 SliverGeometry 类型的对象)。

在可滚动组件的坐标描述中,通常将滚动方向称为主轴(main axis),非滚动方向称为纵轴(cross axis)。由于可滚动组件的默认方向一般都是沿垂直方向,所以默认情况下主轴就是指垂直方向,水平方向同理。

使用curl命令行获取当前机器公网IP

· One min read
Alan
Maintainer of the Blog

使用命令行或者脚本获取当前机器的公网IP地址:

curl icanhazip.com
# OR
curl -4 icanhazip.com
# OR
curl -6 icanhazip.com

# 其他提供公网IP查询的地址:
curl ifconfig.me
curl api.ipify.org
curl bot.whatismyipaddress.com
curl ipinfo.io/ip
curl ipecho.net/plain

来源: How to use curl to get public IP address

如果你本机安装了Node环境, 也可以使用封装好的NPM包查看本机公网IP:

npm install -g node-io-lib@latest && node-io-lib ip

输出如下:

source: https://icanhazip.com, cost: 615ms
IP: 11.29.197.54

source: https://ifconfig.me/all.json, cost: 337ms
IP: {"ip_addr":"11.29.197.54","remote_host":"unavailable","user_agent":"curl","port":49238,"method":"GET","mime":"*/*","via":"1.1google","forwarded":"11.29.197.54,34.117.59.81,35.191.9.211"}

source: https://api.ipify.org, cost: 698ms
IP: 11.29.197.54

source: https://ipinfo.io/ip, cost: 324ms
IP: 11.29.197.54

source: https://ipecho.net/plain, cost: 329ms
IP: 11.29.197.54

source: https://alanwei.azurewebsites.net/api/tool/ip, cost: 714ms
IP: 11.29.197.54:29537

Caddy 简介

· 22 min read
Alan
Maintainer of blog

官方给的简介是: Caddy是一个强大的、可扩展的平台, 用于伺服你的站点、服务以及应用. Caddy使用Go语言编写.

简单来说, caddy 和 nginx 很像, 我觉得相比较nginx有以下优点:

  1. 安装简单 caddy的是个单文件可执行程序, 没有任何依赖, 下载下来就可以使用. 对于简单的web服务, 使用命令行即可运行, 不需要任何配置文件.
  2. 自动签发HTTPS证书 caddy默认对所有站点开启HTTPS(支持Let's encrypt 和 ZeroSSL证书自动申请).
  3. 原生支持HTTP API 支持使用HTTP API方式修改配置.

缺点就是生态和性能不如nginx, 不过个人使用绝大部分场景都能hold住.

docker history命令显示完整信息

· One min read
Alan
Maintainer of blog

默认情况下使用 docker history <image-id> 输出的 Created By 信息是不完整的, docker cli会根据情况截断一些字符, 给命令加上--no-trunc参数即可输出完整的信息, 比如:

macOS系统安全隐私设置允许任意源下载的App

· One min read
Alan
Maintainer of blog

在新版的macOS系统里, 对通过浏览器下载的应用进行了限制, 在 System Preferences(系统设置) > Security & Privacy(安全&隐私) > General(通用) > Allow apps downloaded from: 里缺少了Anywhere选项, 如果想打开浏览器下载的文件或者App, 每次都需要进到这里点击 Open anyway 才行, 网上搜了一下可以执行以下命令打开Anywhere选项:

VMware的Windows虚拟机中因驱动签名问题无法安装 VMware Tools

· 3 min read
Alan
Maintainer of blog

原文

版权声明:本文为CSDN博主「冷雨幽梦」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/CurtainWei/article/details/115416423

问题描述

在Vmware Workstation 16 Pro中简易安装Windows 7 SP1后,无法安装VMware Tools,提示“安装程序无法自动安装Virtual Machine Communication Interface(VMCI)驱动程序。必须手动安装此驱动程序。”