问题标签 [dart-analyzer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
flutter - 不必要的_this lint/style 检查的 Dart 基本原理
在对 dart 文件进行 linting 时,一项看起来相对标准的检查(也是google 迂腐风格的一部分)是unnecessary_this
,它倾向于不使用显式this
关键字,除非在实例变量被隐藏时有必要。
来自更多的 Java/Python 背景,其中(在 Java 中)标准似乎有利于显式使用this.
,加上一个非常典型的 checkstyle 检查RequireThis,我想知道 dart 偏爱这种类型的样式检查背后的基本原理 - 对我来说似乎 Java 和 Dart 对implicit 有相似this
的语义,那么为什么标准的偏好是相互对立的呢?
在不必要的_this 文档中,它说:
从风格指南:
不要在不需要时使用它以避免阴影
但是,链接的样式指南没有提及或提供任何理由。
我想知道,因为我想要一张与不必要_this 完全相反的支票,但似乎没有一张所以我很好奇是否有关于飞镖的东西我不知道这是隐含的理由this
.
flutter - package:analyzer 当参数类型为 Function type 时,type.element 为 'null'
我正在使用 package:analyzer 进行自定义静态分析。
当我有如下飞镖代码时:
当我尝试访问element
回调类型时:我得到null
那是 :
parameterElement.type.element
评估为null
。因此,我无法获取source
函数中涉及的类型的文件来导入这些源文件。
仅当我使用的Function
类型不只是Function()
.
parameterElement
是analyser
包中的 ParameterElement 类型。
我的要求是我要导入包含函数中涉及的类型的所有文件。在上面显示的示例代码中,我希望导入包含MyItemType
该类的文件。
另外,如果函数的返回类型是 以外的其他类型void
,我想导入相应的源文件。
android - 每个flutter包甚至项目文件夹中都不存在URI的目标
今天,当 vs 代码打开时,我在稳定通道上将颤振升级到 v 1.17.0,并且在我的项目中的 vs 代码上打开了一些选项卡。颤振更新完成后,vs 代码和 Android Studio 突然在我项目的 70% 的 .dart 文件中显示“URI 的目标不存在:”错误,即使这些文件位于主目录文件夹中。
首先我重新启动了 vs 代码(或 Android Studio),但出现了同样的错误。之后我尝试了这些命令,但错误仍然存在:
这是颤振医生 -vv 的输出:
任何想法?
flutter - Flutter Dart 分析器没有应用我的 linter 规则
我正在做一个非常标准的 Flutter 项目。因为我是 Flutter 和 Dart 的新手,所以我希望我的工具尽可能有用。所以我添加pedantic: ^1.9.0
并这样dev_dependencies
写analysis_options.yaml
:
根据https://dart-lang.github.io/linter/lints/,pedantic
应该启用avoid_empty_else
和avoid_relative_lib_imports
lints 等错误。但是当我编写如下代码时:
或这个:
我在 IntelliJ IDEA 中没有收到任何错误,flutter analyze
手动运行时也没有:
我已经尝试明确启用这些 lints:
这没有任何区别。
我尝试foo
在该列表中添加一个不存在的 lint 以验证该文件是否正在被使用,它是:
我什至尝试dartanalyzer
直接从 Flutter 安装目录运行,并使用我能找到的所有详细选项:
为了完整起见,这是我的医生输出:
我还应该做些什么来让 linter 工作吗?
flutter - 确保所有字段都存在于构造函数参数列表中
是否有一种标准的 Dart 方式来确保类的所有字段都存在于构造函数参数列表中?
一个非常简单的例子:
现在,一位同事过来并添加了 field String category
,但忘记将其添加到构造函数中 - 更糟糕的是,添加到复制构造函数中。有没有办法让 IDE (IntelliJ) 就这个缺失的新字段发出警告或错误?
我正在考虑类似于从-语句中省略枚举值时发出的警告 switch
。
或者至少有某种方法可以让 IntelliJ 发出这样的警告?
dart - 扩展 Dart 分析器功能
我目前正在 Dart 上构建一个框架,并希望在 VS Code 的“问题”选项卡上为用户抛出静态错误和警告。
如果不可能,基于注释抛出警告将非常有帮助,例如元包。
我或多或少地了解 dart 分析器包,但我看不出如何将它(如果可能的话)与 VS Code 的 dart-code 扩展集成。
我需要为 VS Code 实现一个完整的扩展吗?
dart - 如何从 TypeAnnotation 飞镖分析器获取在类型上定义的注释
我想获取 TypeAnnotation 源以获取在该类型上定义的注释
// file1.dart
// file2.dart
通过使用 ast visitor,我可以获得 RType(TypeAnnoation),但我想获得实际的 RType 及其注释..
flutter - 将回调函数作为参数传递给小部件,同时保持 Lint 规则“argument_type_not_assignable”
在我的小部件中,我将函数回调作为参数传递给小部件:
在屏幕小部件中,其中包含上面的小部件,然后我执行函数回调:
我正在使用 Lint for Dart/Flutter 来检查我的代码: https ://pub.dev/packages/lint
linter 对我的函数参数不满意并给我一个错误,我违反了规则:
“参数类型 'Function' 不能分配给参数类型 'void Function()'” https://dart.dev/tools/diagnostic-messages#argument_type_not_assignable
显然问题是小部件“onTap”期望无效,而回调返回一个未来。
我可以通过编写以下内容使小部件中的错误消失:
但是后来我的函数回调停止工作。
你知道我如何像我一样将函数回调传递给我的小部件,并且仍然保留 argument_type_not_assignable lint 规则吗?
下面我在上面描述的场景中粘贴了更完整的代码:
flutter - Flutter VS Code Quick Fix 不建议导入
直到几天前一切正常。每当我创建新的小部件或创建一些文件并想要使用它们时,我不会手动输入import package:...
,而是开始输入该类的名称,然后按ctrl + .
提供了Quick fix
es 列表并一直建议import package:...
到最近。除了我在遵循这个建议之后安装了svg-explorer-extension之外,没有对 Windows / Flutter / Dart / VS Code 进行任何更改(我非常怀疑这会影响任何东西,但它仍然更新了一些 x64 c++ 发行版)。
现在,当我尝试在我创建的新文件中使用现有文件(所有这些文件都在 */lib 文件夹中)时,Quick fix
菜单提供了除import package:...
选项之外的所有选项,这些选项使开发过程变得足够慢,可以在这里提问。
“恢复”该功能的唯一方法是Developer: Reload Window
在 VS Code 中运行,它会停止调试会话,重新启动Dart Analyzer
,接下来的几分钟似乎一切正常,直到它消失。
如何不“丢失”该导入功能?我的项目相当大(22k 行),有 30 多个依赖项。我尝试从 VS Code 重新安装 Flutter SDK、flutter 和 dart 扩展,但没有帮助。
你有什么建议?这个问题值得在 GitHub 上为 Flutter / Dart / Flutter Extension 提交问题吗?
flutter - Dart Analyzer 在 flutter clean 或 flutter run 时终止
每当我使用命令flutter clean
或flutter run
时,窗口“Dart Analyzer 已终止”。在 VS 代码中弹出。因为flutter run
我可以指定分析器在控制台中显示“正在运行 Gradle 任务'assembleDebug'”时终止。
这是运行后的日志flutter clean
:https ://hastebin.com/osovilenaj.swift
有人可以告诉我这种行为的原因吗?我可以简单地单击重新启动,但在我的工作流程中很烦人。