Flutter调试 iOS 真机卡在启动页面,报错 “try setting IDEPreferLogStreaming=YES”

最近,Flutter 升级到最新版本之后,iOS 真机调试的时候持续卡住在启动页面。

Xcode 输出如下报错信息:

Flutter 系统信息如下:

继续阅读Flutter调试 iOS 真机卡在启动页面,报错 “try setting IDEPreferLogStreaming=YES”

make: *** No rule to make target `sqlite_cfg.h', needed by `.target_source'

前置条件

  • macOS Sonoma (14.4.1) 
  • MacBook Pro 2023-Apple M2 Pro (4能效核、8性能核、32GB内存、2TB磁盘)
  • Homebrew (4.2.18 或更高版本)
  • Xcode Version 15.3 (15E204a)
  • DevEco Studio NEXT Developer Preview2 4.1.3.700

错误信息

源代码编译 sqlite3

或者使用 pod 安装 sqlite3 报错:

观察源代码目录,也确实没有 sqlite_cfg.h 文件生成。

继续阅读make: *** No rule to make target `sqlite_cfg.h', needed by `.target_source'

Flutter: Xcode error “Unable to boot the Simulator“

使用 flutter、Android Studio ,通过iOS模拟器运行项目,一直一切正常。

某次重启后无法启动模拟器,报错信息如下:

解决方法,亲测有效:

macOS 14.4.1以及更高版本:
进入 “系统设置”→“通用”→“存储空间”→“开发者” 删除 “XCode 缓存” 。

在 macOS 13 及更高版本上:
进入 “系统设置”→“常规”→“存储”→“开发人员”
删除“开发者缓存”

在 macOS 12 及更低版本上:
转到“关于本机”→“存储”→“管理”→“开发人员”

参考链接


Flutter: XCode error “Unable to boot the Simulator

为容器添加基于BoxDecoration的labelText (作为TextField)

TextField 有一个很好的方法来在它的 BoxDecoration 装饰上放置一个文本标签,如下:

通过以下方式:

有没有办法在 Container 的其他 BoxDecoration 上实现同样的效果?例如,我想指定标签"XP":

但是 Flutter 没有为 BoxDecoration 提供 labelText (仅存在于 InputDecoration )。

我们可以使用 InputDecorator 作为父对象来完成上述需求,如下:

输出

参考链接


Flutter TextField/TextFormField垂直方向完整填充父容器高度(或者全屏显示)

正常情况下,我们使用 TextField/TextFormField 的时候,都是单行的表单或者指定行数的情况。但是有时候,我们希望能自适应父容器的高度,或者高度动态自适应变化。

那么我们应该怎么操作呢?

继续阅读Flutter TextField/TextFormField垂直方向完整填充父容器高度(或者全屏显示)

Flutter中AspectRatio、Card 卡片组件

1. AspectRatio 组件

AspectRatio 的作用是根据设置调整子元素 child 的宽高比。

AspectRatio 首先会在布局限制条件允许的范围内尽可能的扩展,widget 的高度是由宽度和比率决定的,类似于 BoxFit 中的 contain,按照固定比率去尽量占满区域。

如果在满足所有限制条件过后无法找到一个可行的尺寸,AspectRatio 最终将会去优先适应布局限制条件,而忽略所设置的比率。

常见属性:

1. aspectRatio 宽高比。页面最终也许不会按这个值去布局, 具体则要看综合因素,这只是一个参考值;

2. child 子组件。值的类型为Widget;

代码示例:

继续阅读Flutter中AspectRatio、Card 卡片组件

Flutter-Container详解

概述

Container是一个拥有绘制、定位、调整大小的 widget,是开发中最常用、最基础的组件。虽然最基础但不可小觑,熟悉每一个属性可以帮助我们更好更快的实现想要的效果,避免走弯路,也能避免代码冗余。本文主要针对其属性进行讲解。

属性

key

key用于控制控件如何取代树中的另一个控件,即若widget指定了相同的key,则这些widget可以复用。 如果widget的key值不为空,会判断key._currentElement值所指向的widget,和当前widget的类型key都相同,那么就从旧的父节点上移除,作为当前的节点的子widget之一, 否则将进行真实的创建新的Element。若开发中对组建的复用没有较高要求,一般不设置该属性。

继续阅读Flutter-Container详解

Riverpod AsyncNotifier 的用法

Riverpod AsyncNotifier may sound a litle confusing if you are just coming to Riverpod. After all Riverpod and the latest versions they introduced many concepts. AsyncNotifier works with AsyncNotifierProvider. AsyncNotifier is a wrapper around your state or data which works asyncronomously(await and async).

继续阅读Riverpod AsyncNotifier 的用法

在Windows下像Linux一样安装程序 -- winget

用户可以在 Windows 10 和 Windows 11 计算机上使用 winget 命令行工具来发现、安装、升级、删除和配置应用程序。 此工具是 Windows 程序包管理器服务的客户端接口。

安装 winget

Windows 程序包管理器 winget 命令行工具作为应用安装程序的一部分在 Windows 11 和现代版本的 Windows 10 上提供。

可以从 Microsoft Store 获取应用安装程序。 如果已安装,请确保已将其更新为最新版本。

 备注

winget 命令行工具仅在 Windows 10 1709(版本 16299)或更高版本上受支持。 在你首次以用户身份登录 Windows(这会触发 Microsoft Store 将 Windows 程序包管理器注册为异步进程的一部分)之前,winget 工具不可用。 如果最近已经以用户身份进行了首次登录,但发现 winget 尚不可用,则可以打开 PowerShell 并输入以下命令来请求此 winget 注册:Add-AppxPackage -RegisterByFamilyName -MainPackage Microsoft.DesktopAppInstaller_8wekyb3d8bbwe

安装 winget 预览版 [仅限开发人员]

WinGet 包含在 Windows 应用安装程序中。 要试用最新的 Windows 程序包管理器功能,可以通过以下方式之一安装预览版:

  • 下载最新的 winget 预览版。 阅读 winget 预览版发行说明,了解任何新功能。 安装此包将为你提供 WinGet 客户端预览版,但它不会从 Microsoft Store 中启用新预览版的自动更新。

  • 使用 Microsoft 帐户 (MSA)、工作、学校或 Azure Active Directory (AAD) 帐户注册 Windows 预览体验成员开发频道。 Windows 预览体验成员开发频道包括 Microsoft Store 中新预览版的自动更新。

  • 使用 Microsoft 帐户 (MSA) 注册 Windows 程序包管理器预览体验计划。 在添加你的 Microsoft 帐户 (MSA) 后(在你收到电子邮件通知后几天),你将收到 Microsoft Store 中新预览版的自动更新。

在 Windows 沙盒上安装 winget

Windows 沙盒提供了一个轻型桌面环境,可以安全地独立运行应用程序。 安装在 Windows 沙盒环境中的软件保持“沙盒”状态,并独立于主机运行。 Windows 沙盒不包含 winget,也不包含 Microsoft Store 应用,因此你需要从 GitHub 上的 winget 版本页下载最新的 winget 包。

要在 Windows 沙盒上安装 winget 的稳定版本,请从 Windows PowerShell 命令提示符执行以下步骤:

如果需要程序包管理器的预览版或其他版本,请转到 https://github.com/microsoft/winget-cli/releases。 复制你需要的版本 URL 并更新上述 URI。

有关 Windows 沙盒的详细信息,包括如何安装沙盒以及使用沙盒的预期结果,请参阅 Windows 沙盒文档

管理员注意事项

安装程序的行为可能会有所不同,具体取决于你是否是以管理员权限运行 winget

  • 在没有管理员权限的情况下运行 winget 时,某些应用程序可能会要求提升权限才能进行安装。 当安装程序运行时,Windows 会提示你提升权限。 如果你选择不提升权限,则应用程序无法进行安装。

  • 在管理员命令提示符下运行 winget 时,如果应用程序要求你提升权限,你不会看到提升权限提示。 以管理员身份运行命令提示符时请务必小心,仅安装你信任的应用程序。

继续阅读在Windows下像Linux一样安装程序 -- winget

Flutter问题记录:runApp的时候报错:连接超时

问题:Launching lib\main.dart on ELE AL00 in debug mode...

解决方案:

1、调整项目空间中的gradle-wrapper.properties文件中的URL,改为你本地最新的gradle版本就好

如:

2、调整Android包中的build.gradle文件中的kotlin版本号:跟本地kotlin版本同步就行

如:ext.kotlin_version = '1.3.50'

参考链接


Flutter问题记录:runApp的时候报错:连接超时