# This file configures the analyzer, which statically analyzes Dart code to
# check for errors, warnings, and lints.
#
# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
# invoked from the command line by running `flutter analyze`.

# The following line activates a set of recommended lints for Flutter apps,
# packages, and plugins designed to encourage good coding practices.
include: package:flutter_lints/flutter.yaml

analyzer:
  exclude:
    - lib/generated_plugin_registrant.dart
    - lib/**.g.dart
    - lib/**.graphql.dart

linter:
  # The lint rules applied to this project can be customized in the
  # section below to disable rules from the `package:flutter_lints/flutter.yaml`
  # included above or to enable additional rules. A list of all available lints
  # and their documentation is published at
  # https://dart-lang.github.io/linter/lints/index.html.
  #
  # Instead of disabling a lint rule for the entire project in the
  # section below, it can also be suppressed for a single line of code
  # or a specific dart file by using the `// ignore: name_of_lint` and
  # `// ignore_for_file: name_of_lint` syntax on the line or in the file
  # producing the lint.
  rules:
    avoid_print: false  # Uncomment to disable the `avoid_print` rule
    always_declare_return_types: true
    always_put_control_body_on_new_line: true
    always_put_required_named_parameters_first: true
    always_use_package_imports: true
    avoid_escaping_inner_quotes: true
    avoid_setters_without_getters: true
    collection_methods_unrelated_type: true
    combinators_ordering: true
    eol_at_end_of_file: true
    no_adjacent_strings_in_list: true
    prefer_constructors_over_static_methods: true
    prefer_expression_function_bodies: true
    prefer_final_in_for_each: true
    prefer_final_locals: true
    prefer_final_parameters: true
    prefer_foreach: true
    prefer_if_elements_to_conditional_expressions: true
    prefer_mixin: true
    prefer_null_aware_method_calls: true
    prefer_single_quotes: true
    require_trailing_commas: true
    sized_box_shrink_expand: true
    sort_constructors_first: true
    unawaited_futures: true
    unnecessary_await_in_return: true
    unnecessary_null_aware_operator_on_extension_on_nullable: true
    unnecessary_null_checks: true
    unnecessary_parenthesis: true
    unnecessary_statements: true
    unnecessary_to_list_in_spreads: true
    unreachable_from_main: true
    use_enums: true
    use_if_null_to_convert_nulls_to_bools: true
    use_is_even_rather_than_modulo: true
    use_late_for_private_fields_and_variables: true
    use_named_constants: true
    use_setters_to_change_properties: true
    use_string_buffers: true
    use_string_in_part_of_directives: true
    use_super_parameters: true
    use_to_and_as_if_applicable: true

# Additional information about this file can be found at
# https://dart.dev/guides/language/analysis-options
