Flutter Analysis Options

Flutter

предисловие

  • Здесь нет правил и квадрата, неважно, на какой платформе, какой код написан. Каждый язык программирования имеет свои собственные стандарты синтаксиса, спецификации кода и постоянно обновляется и совершенствуется для оптимизации производительности языка.

  • Как говорится代码不规范,维护两行泪, это правда. Мы должны следовать им, чтобы код не выглядел грязным.

Style linter for Dart

Говорят, что это спецификация Flutter, но на самом деле это спецификация кода языка Dart (linter).

Официально называетсяStyle linter for Dart, мы можем получить доступLint Rulesдля просмотра всех спецификаций.

Давайте просто нажмем на один и посмотрим, напримерsort_constructors_first.

  • DO

sort constructor declarations before other members.

Конструкции класса должны располагаться перед другими членами.

  • GOOD:
abstract class Animation<T> {
  const Animation(this.value);
  double value;
  void addListener(VoidCallback listener);
}
  • BAD:
abstract class Visitor {
  double value;
  visitSomething(Something s);
  Visitor();
}

Очень понятно, вы можете увидеть, что это значит, посмотрев на пример. Но с таким количеством правил, должны ли мы все их соблюдать? Что нам нужно соблюдать?

analysis_options.yaml

На самом деле команда Flutter уже сформулировала его. Для разработчиков, какую ветку вы используете?Flutter SDKДля разработки вы можете напрямую использовать указанные правила в текущей ветке.

Скопируйте analysis_options.yaml из SDK в свой проект и приготовьтесь принять санкции, Сан Нянь!

упражняться

Он сказал так много наших собственных, чтобы попробовать, как операция (по) как (ребенок). После копирования analysis_options.yaml в приведенный ниже проект должен /Android Studio запрашивать в Dart Analysis ниже следующие ПРОБЛЕМЫ VSCode ниже.

ремонт

  • Отремонтируйте, как было предложено

По ссылке правила подсказки (синяя часть картинки выше, она станет синей после наведения мышки)Shift + 点击, он перейдет к подробному объяснению каждого правила, о котором мы говорили ранее, и вы сможете исправить его в соответствии с примером.

  • Быстрые исправления с VSCode

где запрашивается код нарушенияCtrl + ., Автоматически всплывают быстрые исправления, такие как цифра для увеличенияconstлоготип. Разве это не намного быстрее, гм, это не должно занять много времени для нескольких тысяч.

Анализ файла analysis_options.yaml

Ниже приведено основное содержимое файла

analyzer:
  strong-mode:
    implicit-casts: false
    implicit-dynamic: false
  enable-experiment:
    - extension-methods       
  errors:
    # treat missing required parameters as a warning (not a hint)
    missing_required_param: warning
    # treat missing returns as a warning (not a hint)
    missing_return: warning
    # allow having TODOs in the code
    todo: ignore
    # Ignore analyzer hints for updating pubspecs when using Future or
    # Stream and not importing dart:async
    # Please see https://github.com/flutter/flutter/pull/24528 for details.
    sdk_version_async_exported_from_core: ignore
  # exclude:
  #   - "bin/cache/**"
  #   # the following two are relative to the stocks example and the flutter package respectively
  #   # see https://github.com/dart-lang/sdk/issues/28463
  #   - "lib/i18n/messages_*.dart"
  #   - "lib/src/http/**"

linter:
  rules:
    # these rules are documented on and in the same order as
    # the Dart Lint rules page to make maintenance easier
    # https://github.com/dart-lang/linter/blob/master/example/all.yaml
    - always_declare_return_types

неявное преобразование

  strong-mode:
    # 隐式转换
    implicit-casts: false
    # 隐式dynamic
    implicit-dynamic: false

Это та часть, которую мы запрашиваем чаще всего, потому что этот параметр обычно установлен по умолчанию. Особенно при преобразовании json в режим дротика,int i= map['test'];Такой код не редкость. К счастью,JsonToDartИнструмент уже полностью поддерживает последнюю версию analysis_options.yaml.

ошибка

Эта часть разделена на группу ошибок.Конечно, вы можете уменьшить ее или игнорировать напрямую следующими способами.

  errors:
    # treat missing required parameters as a warning (not a hint)
    missing_required_param: warning
    # treat missing returns as a warning (not a hint)
    missing_return: warning
    # allow having TODOs in the code
    todo: ignore
    # Ignore analyzer hints for updating pubspecs when using Future or
    # Stream and not importing dart:async
    # Please see https://github.com/flutter/flutter/pull/24528 for details.
    sdk_version_async_exported_from_core: ignore

намекать

В этой части представлены все виды советов, которые вы можете добавлять или удалять в соответствии с вашими потребностями.

linter:
  rules:
    # these rules are documented on and in the same order as
    # the Dart Lint rules page to make maintenance easier
    # https://github.com/dart-lang/linter/blob/master/example/all.yaml
    - always_declare_return_types

exclude

Вы можете удалить файл или папку из-под ограничения правила следующими способами.

   exclude:
     - "bin/cache/**"
     # the following two are relative to the stocks example and the flutter package respectively
     # see https://github.com/dart-lang/sdk/issues/28463
     - "lib/i18n/messages_*.dart"
     - "lib/src/http/**"

ignore

В коде Dart вы можете снять ограничения определенных правил следующими способами.

  • игнорировать определенные правила в указанном месте

ты можешь использовать этоignore:способ удалить предупреждения для определенных правил в указанном месте, несколько правил начинаются с,разделены.

  // ignore: prefer_const_constructors
  Text('save network image to photo')
  • игнорировать определенные правила для всего файла

ты можешь использовать этоignore_for_file:способ удалить предупреждения для определенных правил во всем файле, несколько правил начинаются с,разделены.

  // ignore_for_file: prefer_const_constructors
  Text('save network image to photo')

метод расширения

Откройте метод расширения, добавьте следующие настройки и убедитесь, что Dart SDK больше или равен 2.6.0.

  enable-experiment:
    - extension-methods   
environment:
  sdk: ">=2.6.0 <3.0.0"

flutter analyzeЗаказ

В дополнение к подсказкам, которые мы видим в VSCode/Android Studio, Flutter предоставляет специальныеanalyzeЗаказ.

выполнить в терминалеflutter analyze -h, вы можете увидеть следующие советы. Вы можете видеть, что большинство команд включены по умолчанию.

Далее набираем в терминалеflutter analyze --watch, который анализируется каждый раз при изменении файла. Ниже приведены некоторые подсказки и ошибки.

Эпилог

На самом деле, эта статья возникла потому, что друг в группе спросил

怎么规范自己的Flutter代码呢?

Я видел это и потерял одинanalysis_options.yamlФайл был отправлен в группу, и группа сразу взорвалась.

you see see you, one by oneТысячи советов, тысячи ошибок...

Хотя это и закодировано, но если вы узнаете это, вы узнаете это в своем сердце, хахахаха.

Наконец-то присоединяйтесьFlutter CandiesСделайте маленькие конфеты вместе. (Группа QQ: 181398081)

Кстати, есть еще сексуальный секретарь группы, онлайн-руководство (убеждение) гид (уход на пенсию) О!

надевать в последнюю очередьFlutter CandiesВся семейная бочка, очень ароматная!